diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 47aa081..d003dfc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -54,6 +54,8 @@ jobs: - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7 with: node-version: '24' + - name: Verify pinned upstream controller opcode source + run: node interfaces/controller-wire/consumer.mjs --pakar --check --upstream - uses: arduino/setup-arduino-cli@81d310742121c928ea9c8bbd407b4217b432ae02 # v2 - name: Install pinned host-test headers only (no board SDKs) shell: pwsh diff --git a/AGENTS.md b/AGENTS.md index 409d16a..694a0ae 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,5 +1,13 @@ # PakarController continuation +- Wire opcode ownership: PCController Project/ProtocolContract.json owns stable + namespace allocations. Reuse its pinned interfaces/controller-wire generator; + never maintain numeric opcode tables in firmware, clients or provisioning tools. + Run consumer.mjs --pakar --check before builds. Native A5/1 and Pakar A5/0 are + fixed namespace admission, not versions: never relax marker checks, guess a + dialect, reinterpret an unknown opcode or assume ACK for an unknown request. + Keep published assignments append-only; capability omissions return Unsupported. + - 2026-10-29 keycontroller authorization: David directly approved paired ESP/AVR deployment and testing through the tablet and said, "from now on no asking for the keycontroller." Continue scoped keycontroller updates/tests without repeated approval or PBX calls, preserving its saved configuration and rollback. This does not lift ledcontroller's separate production hold. David also instructed to skip PBX and ask directly in chat whenever a different action actually requires approval. - LED incident exception: David directly authorized immediate ESP board updates and diagnostics for the first22-cell/480-pixel output regression without another permission/PBX round-trip. This scoped authority covers the LED recovery deployment, reboot and output comparison/feedback; it does not lift the production hold for unrelated features or AVR programming. Preserve the saved scene and verified rollback, and never claim optical success from GPIO capture/counters alone. diff --git a/desktop/src/board_silent.rs b/desktop/src/board_silent.rs index 3b931ea..0ac71c1 100644 --- a/desktop/src/board_silent.rs +++ b/desktop/src/board_silent.rs @@ -143,25 +143,25 @@ impl Transaction { } pub fn request(&self) -> (u8, Vec) { if self.phase == 1 { - (5, self.next.as_ref().unwrap().bytes.to_vec()) + (crate::protocol_opcodes::controller::SET_SETTINGS, self.next.as_ref().unwrap().bytes.to_vec()) } else { - (4, vec![]) + (crate::protocol_opcodes::controller::GET_SETTINGS, vec![]) } } pub fn accept(&mut self, opcode: u8, payload: &[u8]) -> Result, String> { - if opcode == 0x82 { + if opcode == crate::protocol_opcodes::controller::ERROR_RESPONSE { return Err(format!( "Board rejected settings: {payload:02x?}; nothing retried" )); } if self.phase == 1 { - if opcode != 0x80 || payload != [5, 0] { + if opcode != crate::protocol_opcodes::controller::ACK || payload != [crate::protocol_opcodes::controller::SET_SETTINGS, 0] { return Err("Missing AVR settings ACK; outcome unknown, no replay".into()); } self.phase = 2; return Ok(None); } - if opcode != 0x91 { + if opcode != crate::protocol_opcodes::controller::SETTINGS_RESPONSE { return Err("AVR settings response did not match; no state assumed".into()); } let settings = Settings::parse(&pc_contract::encode_hex(payload))?; diff --git a/desktop/src/cell_batch.rs b/desktop/src/cell_batch.rs index 739244e..2174608 100644 --- a/desktop/src/cell_batch.rs +++ b/desktop/src/cell_batch.rs @@ -1,10 +1,11 @@ //! One board-owned atomic selection mutation, never a fan-out/replay queue. //! Reuses PCController Session's intent admission/ACK/no-late-write rule through //! the existing HTTP Pin and USB Admission; the board owns transition timing. +use crate::protocol_opcodes::pakar as wire; use crate::{DeviceStatus, Endpoint, peer_http}; use std::sync::atomic::{AtomicBool, AtomicU64, Ordering}; -pub const OPCODE: u8 = 0x5f; +pub const OPCODE: u8 = wire::CELLS_ACTION; #[derive(Clone, Debug, PartialEq, Eq)] pub struct Request { pub ids: Vec, diff --git a/desktop/src/main.rs b/desktop/src/main.rs index 3f19b80..8b14774 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -45,6 +45,7 @@ mod led_backend; mod messaging; mod native_workspace; mod pc_contract; +mod protocol_opcodes; mod peer_http; mod peer_identity; mod pixel_diagnostic; @@ -65,24 +66,25 @@ mod workspace_layout; use base64::{Engine, engine::general_purpose::STANDARD as BASE64}; use connection::Method as Transport; +use protocol_opcodes::{pakar as wire, controller as pc_wire}; use eframe::egui; use reqwest::blocking::Client; use serde::Deserialize; use tungstenite::{Message, client::IntoClientRequest}; -const OP_GET_STATUS: u8 = 0x02; -const OP_BUZZER: u8 = 0x10; -const OP_AUDIO: u8 = 0x11; -const OP_DISPLAY: u8 = 0x38; -const OP_SET_MODE: u8 = 0x4b; -const OP_CELL_ACTION: u8 = 0x4c; -const OP_RESET: u8 = 0x4d; -const OP_OUTPUT_MASK: u8 = 0x4e; -const OP_BRIGHTNESS: u8 = 0x51; -const OP_PATTERN: u8 = 0x52; -const OP_LED_OUTPUT: u8 = 0x5c; -const OP_NETWORK_CONFIG: u8 = 0x53; -const OP_STATUS: u8 = 0x90; +const OP_GET_STATUS: u8 = wire::GET_STATUS; +const OP_BUZZER: u8 = wire::BUZZER; +const OP_AUDIO: u8 = wire::AUDIO_CUE; +const OP_DISPLAY: u8 = wire::DISPLAY_TEXT; +const OP_SET_MODE: u8 = wire::SET_MODE; +const OP_CELL_ACTION: u8 = wire::CELL_ACTION; +const OP_RESET: u8 = wire::GAME_RESET; +const OP_OUTPUT_MASK: u8 = wire::OUTPUT_MASK; +const OP_BRIGHTNESS: u8 = wire::SET_BRIGHTNESS; +const OP_PATTERN: u8 = wire::SET_LED_PATTERN; +const OP_LED_OUTPUT: u8 = wire::SET_LED_OUTPUT; +const OP_NETWORK_CONFIG: u8 = wire::NETWORK_CONFIG; +const OP_STATUS: u8 = wire::STATUS_RESPONSE; #[derive(Clone, PartialEq)] struct Endpoint { @@ -2170,7 +2172,7 @@ fn cobs_decode(input: &[u8]) -> Option> { Some(out) } fn wire_frame(opcode: u8, sequence: u8, payload: &[u8]) -> Vec { - let mut raw = vec![0xa5, 0, opcode, sequence, payload.len() as u8]; + let mut raw = vec![wire::MAGIC, wire::RESERVED, opcode, sequence, payload.len() as u8]; raw.extend_from_slice(payload); raw.push(crc8(&raw)); cobs_encode(&raw) @@ -2179,10 +2181,12 @@ fn decode_frame(encoded: &[u8]) -> Option<(u8, Vec)> { decode_envelope(encoded).map(|(op, _, payload)| (op, payload)) } fn decode_envelope(encoded: &[u8]) -> Option<(u8, u8, Vec)> { + if encoded.len() > wire::MAXIMUM_PAYLOAD + 7 { return None; } let raw = cobs_decode(encoded)?; if raw.len() < 6 - || raw[0] != 0xa5 - || raw[1] != 0 + || raw[0] != wire::MAGIC + || raw[1] != wire::RESERVED + || usize::from(raw[4]) > wire::MAXIMUM_PAYLOAD || raw.len() != raw[4] as usize + 6 || crc8(&raw[..raw.len() - 1]) != raw[raw.len() - 1] { @@ -2391,14 +2395,14 @@ fn serial_worker_with Result>( Option<(u8, Instant)>, )> = None; let mut reported_depth = 0; - let mut intro_wait = Some((0x01_u8, sequence, Instant::now())); + let mut intro_wait = Some((wire::HELLO, sequence, Instant::now())); let mut intro_chunks = std::collections::VecDeque::>::new(); let mut peer_reports = peer_identity::UsbReportSupport::default(); let mut introduced = false; let mut reintroductions = 0_u8; let mut last_peer_report = Instant::now(); if port - .write_all(&wire_frame(0x01, sequence, &peer_identity::hello())) + .write_all(&wire_frame(wire::HELLO, sequence, &peer_identity::hello())) .is_err() { continue; @@ -2751,7 +2755,7 @@ fn serial_worker_with Result>( if !lease.current() || !admission.current(physical_session, table_snapshot.as_ref()) || port - .write_all(&wire_frame(0x56, sequence, &payload)) + .write_all(&wire_frame(wire::PC_CONTRACT, sequence, &payload)) .is_err() { let _ = events.send(Event::BoardSilentFinished( @@ -2824,7 +2828,7 @@ fn serial_worker_with Result>( continue 'connected; } if port - .write_all(&wire_frame(0x55, sequence, &payload)) + .write_all(&wire_frame(wire::DEVICE_NAME, sequence, &payload)) .is_err() { break; @@ -2834,7 +2838,7 @@ fn serial_worker_with Result>( } else if let Some(reader) = &read { if read_wait.is_none() { if port - .write_all(&wire_frame(0x59, sequence, &reader.request())) + .write_all(&wire_frame(wire::GET_IDENTITY, sequence, &reader.request())) .is_err() { break; @@ -2864,8 +2868,8 @@ fn serial_worker_with Result>( { let pixel_command = operation .as_ref() - .is_some_and(|op| op.intent.opcode == 0x65) - || intents.iter().any(|op| op.opcode == 0x65); + .is_some_and(|op| op.intent.opcode == wire::PIXEL_DIAGNOSTIC) + || intents.iter().any(|op| op.opcode == wire::PIXEL_DIAGNOSTIC); demand_lease .desired(demand.flags | if pixel_command { usb_demand::PIXELS } else { 0 }); if let Some(payload) = demand_lease.request(sequence) { @@ -2915,7 +2919,7 @@ fn serial_worker_with Result>( decode_envelope(&encoded) { if api.as_ref().is_some_and(|work| work.wait.is_some_and(|(seq,_)| seq == response_sequence)) - && matches!(op, usb_api::RESPONSE | 0x80 | 0x82) { + && matches!(op, usb_api::RESPONSE | wire::ACK | wire::ERROR_RESPONSE) { let work = api.as_mut().unwrap(); work.wait = None; match work.transaction.accept(op, &payload) { Ok(Some(value)) => { let work = api.take().unwrap(); let _ = work.reply.send(Ok(value)); @@ -2932,11 +2936,11 @@ fn serial_worker_with Result>( context.request_repaint(); } if intro_wait.is_some_and(|(_, seq, _)| seq == response_sequence) - && matches!(op, 0x80 | 0x81 | 0x82) + && matches!(op, wire::ACK | wire::HELLO_RESPONSE | wire::ERROR_RESPONSE) { let (expected, expected_sequence, _) = intro_wait.take().unwrap(); - let result = if expected == 0x01 && op == 0x81 { + let result = if expected == wire::HELLO && op == wire::HELLO_RESPONSE { peer_identity::validate_usb_hello(&payload).and_then(|_| { if peer_reports.supported() { intro_chunks = peer_identity::report_chunks( @@ -2950,7 +2954,7 @@ fn serial_worker_with Result>( Ok(()) }) } else if expected == peer_identity::USB_REPORT - && op == 0x80 + && op == wire::ACK && payload.as_slice() == [peer_identity::USB_REPORT, 0] { if intro_chunks.is_empty() { @@ -2997,9 +3001,9 @@ fn serial_worker_with Result>( event, )); } // No full snapshot/command ACK lease is refreshed by this event. - } else if op == 0xb0 + } else if op == wire::PC_CONTRACT_RESPONSE && matches!(response_sequence, 0 | 0xfe) - && payload.first() == Some(&0x9c) + && payload.first() == Some(&pc_wire::SEGMENT_CHANGED) { if table_observed.elapsed() < Duration::from_secs(8) && let Some(status) = table_snapshot.as_mut() @@ -3013,14 +3017,14 @@ fn serial_worker_with Result>( frame, )); } - } else if (op == 0xb0 || op == 0x82) + } else if (op == wire::PC_CONTRACT_RESPONSE || op == wire::ERROR_RESPONSE) && silent.as_ref().is_some_and(|(_, _, _, wait)| { wait.is_some_and(|(s, _)| s == response_sequence) }) { let (id, _, transaction, wait) = silent.as_mut().unwrap(); *wait = None; - let result = if op == 0xb0 && !payload.is_empty() { + let result = if op == wire::PC_CONTRACT_RESPONSE && !payload.is_empty() { transaction.accept(payload[0], &payload[1..]) } else { Err("ESP rejected board settings; refresh before retrying" @@ -3205,7 +3209,7 @@ fn serial_worker_with Result>( operation.as_ref().filter(|op| op.ack.is_some() && !backend_pending) { let intent = &active.intent; - let pixel_revision=intent.opcode!=0x65 || (snapshot.status.led_output["diagnostic"]["revision"].as_u64().unwrap_or(0)>table_snapshot.as_ref().and_then(|s|s.led_output["diagnostic"]["revision"].as_u64()).unwrap_or(0) + let pixel_revision=intent.opcode!=wire::PIXEL_DIAGNOSTIC || (snapshot.status.led_output["diagnostic"]["revision"].as_u64().unwrap_or(0)>table_snapshot.as_ref().and_then(|s|s.led_output["diagnostic"]["revision"].as_u64()).unwrap_or(0) && snapshot.status.pixel_frame.as_ref().is_some_and(|frame|frame.revision>table_snapshot.as_ref().and_then(|s|s.pixel_frame.as_ref()).map_or(0,|f|f.revision))); let result = if intent.admission.peer == pin && intent.verify(&snapshot.status) @@ -3344,7 +3348,7 @@ fn serial_worker_with Result>( } else if operation.as_ref().is_some_and(|active| { active.matches(op, response_sequence, &payload) }) { - if op == 0x80 && payload[1] == 0 { + if op == wire::ACK && payload[1] == 0 { if usb_table::table_command( operation.as_ref().unwrap().intent.opcode, ) { @@ -3370,7 +3374,7 @@ fn serial_worker_with Result>( Err(cell_assignments::usb_rejection(payload[1])), )); } - } else if op == 0x82 + } else if op == wire::ERROR_RESPONSE && payload.first() == Some(&usb_table::READ) && table_wait.is_some_and(|(s, _)| s == response_sequence) { @@ -3406,7 +3410,7 @@ fn serial_worker_with Result>( )); if port .write_all(&wire_frame( - 0x01, + wire::HELLO, sequence, &peer_identity::hello(), )) @@ -3414,7 +3418,7 @@ fn serial_worker_with Result>( { break 'connected; } - intro_wait = Some((0x01, sequence, Instant::now())); + intro_wait = Some((wire::HELLO, sequence, Instant::now())); sequence = sequence.wrapping_add(1); encoded.clear(); continue 'connected; @@ -3437,7 +3441,7 @@ fn serial_worker_with Result>( Err(error), )); } - } else if op == 0xb2 + } else if op == wire::IDENTITY_RESPONSE && read_wait.is_some_and(|(s, _)| s == response_sequence) { read_wait = None; @@ -3471,11 +3475,11 @@ fn serial_worker_with Result>( } } } else if write_wait.is_some_and(|(s, _)| s == response_sequence) - && (op == 0x80 || op == 0x82) - && payload.first() == Some(&0x55) + && (op == wire::ACK || op == wire::ERROR_RESPONSE) + && payload.first() == Some(&wire::DEVICE_NAME) { write_wait = None; - if op == 0x82 { + if op == wire::ERROR_RESPONSE { packets.clear(); expected = None; let _=events.send(Event::SerialIdentitySaved(connected_port.clone(),Err(format!("Board rejected identity write ({:?}); no replay attempted",payload.get(1))))); @@ -6505,6 +6509,19 @@ mod tests { assert_eq!(payload, vec![80, 2, 1]); } #[test] + fn opcode_namespace_rejects_foreign_frames_without_fallback() { + for discriminator in 1..=255_u8 { + let mut raw = vec![wire::MAGIC, discriminator, wire::AUDIO_CUE, 7, 1, 4]; + raw.push(crc8(&raw)); + let encoded = cobs_encode(&raw); + assert!(decode_envelope(&encoded[..encoded.len()-1]).is_none()); + } + let valid = wire_frame(wire::AUDIO_CUE, 7, &[4]); + assert_eq!(decode_frame(&valid[..valid.len()-1]), Some((wire::AUDIO_CUE, vec![4]))); + let unknown = wire_frame(0xfc, 7, &[]); + assert_eq!(decode_frame(&unknown[..unknown.len()-1]), Some((0xfc, vec![]))); + } + #[test] fn shared_cobs_vectors() { let vectors: serde_json::Value = serde_json::from_str(include_str!("../../tests/fixtures/cobs.json")).unwrap(); let bytes = |v: &serde_json::Value| v.as_array().unwrap().iter().map(|v| u8::try_from(v.as_u64().unwrap()).unwrap()).collect::>(); diff --git a/desktop/src/panel_event.rs b/desktop/src/panel_event.rs index 9bed7aa..e2eb774 100644 --- a/desktop/src/panel_event.rs +++ b/desktop/src/panel_event.rs @@ -3,13 +3,14 @@ //! deadlines and no-replay semantics from hostbridge/buzzer_mirror.go. The //! donor's motion/relay/menu-page IDs do not describe this board and are not //! imported as capability authority (Project/FrontPanelModel.h). +use crate::protocol_opcodes::pakar as wire; use serde::{Deserialize, Serialize}; use std::{ collections::VecDeque, time::{Duration, Instant}, }; -pub const USB_OPCODE: u8 = 0xb8; +pub const USB_OPCODE: u8 = wire::PANEL_EVENT; const KINDS: [&str; 13] = [ "rest", "cell", "mode", "effect", "pixel", "network", "progress", "fault", "complete", "output", "menu", "scan", "state", diff --git a/desktop/src/pc_contract.rs b/desktop/src/pc_contract.rs index 2a82f3d..5785127 100644 --- a/desktop/src/pc_contract.rs +++ b/desktop/src/pc_contract.rs @@ -1,8 +1,30 @@ use reqwest::blocking::Client; use serde_json::Value; use std::time::{Duration, Instant}; +use crate::protocol_opcodes::controller as wire; pub const PROFILE: u8 = 0x50; +pub fn expected_response(opcode: u8, payload: &[u8]) -> Option { + match opcode { + wire::HELLO => Some(wire::HELLO_RESPONSE), + wire::GET_STATUS => Some(wire::STATUS_RESPONSE), + wire::GET_SETTINGS => Some(wire::SETTINGS_RESPONSE), + wire::TEMPERATURE_LIST => Some(wire::TEMPERATURE_LIST_RESPONSE), + wire::PWM_GET => Some(wire::PWM_VALUES_RESPONSE), + wire::STATUS_PROFILE_GET => Some(wire::STATUS_PROFILE_RESPONSE), + wire::RADIO_LEARN_LIST => Some(wire::RADIO_LEARN_LIST_RESPONSE), + wire::I2C_TRANSFER => Some(wire::I2C_TRANSFER_RESPONSE), + wire::FRONT_PANEL_GET => Some(wire::FRONT_PANEL_RESPONSE), + wire::MENU_LIST => Some(wire::MENU_LIST_RESPONSE), + wire::MENU_LAYOUT_GET => Some(wire::MENU_LAYOUT_RESPONSE), + wire::HOST_MENU_STATE_GET => Some(wire::HOST_MENU_STATE_RESPONSE), + wire::AUTOMATION_LIST => Some(wire::AUTOMATION_LIST_RESPONSE), + wire::AUTOMATION_PUT => Some(wire::AUTOMATION_RECORD_RESPONSE), + wire::MACRO_STEP if matches!(payload.first().copied(), Some(2 | 5)) => Some(wire::MACRO_STATUS_RESPONSE), + wire::SET_STREAM_PERIOD | wire::SET_SETTINGS | wire::BUZZER | wire::PWM_SET | wire::PWM_ALL_OFF | wire::STATUS_RGB | wire::ADDRESSABLE_LED | wire::STATUS_EFFECT | wire::STATUS_PROFILE_SET | wire::RADIO_TRANSMIT | wire::RADIO_LEARN_START | wire::RADIO_LEARN_CANCEL | wire::RADIO_LEARN_CLEAR | wire::RADIO_LEARN_REMOVE | wire::MENU_ACTION | wire::RELAY_SET | wire::RELAY_SIDE | wire::RELAY_ALL_OFF | wire::RELAY_TEST | wire::RESET | wire::MENU_SET_PAGE | wire::DISPLAY_TEXT | wire::MACRO_START | wire::MACRO_CANCEL | wire::MACRO_STEP | wire::REMOTE_KEY_GESTURE | wire::RADIO_LEARN_REPLACE | wire::MENU_LAYOUT_SET | wire::HOST_MENU_DIRECTORY | wire::HOST_MENU_CONTENT | wire::PROGRAM_STATE | wire::AUTOMATION_REMOVE | wire::AUTOMATION_CLEAR => Some(wire::ACK), + _ => None, + } +} pub fn decode_hex(input: &str) -> Result, String> { if input.len() > 96 || input.len() % 2 != 0 || !input.is_ascii() { @@ -237,7 +259,8 @@ pub fn request( if payload.len() > 48 { return Err("PCController payload exceeds 48 bytes".into()); } - let payload_for_request = payload; + let expected = u64::from(expected_response(opcode, payload) + .ok_or("Unknown controller response contract; nothing sent, no fallback")?); let value: Value = client .post(format!("{}/api/avr/contracts", base.trim_end_matches('/'))) .basic_auth(user, Some(password)) @@ -285,7 +308,7 @@ pub fn request( .as_str() .ok_or("Missing response payload")?, )?; - if response == 0x82 { + if response == u64::from(wire::ERROR_RESPONSE) { if payload.len() != 2 || payload[0] != opcode || !(1..=6).contains(&payload[1]) { return Err( @@ -299,25 +322,7 @@ pub fn request( "AVR rejected opcode 0x{opcode:02x}: {payload:02x?}" )); } - let expected = match opcode { - 1 => 0x81, - 2 => 0x90, - 4 => 0x91, - 6 => 0x95, - 0x15 => 0x92, - 0x18 => 0x9f, - 0x24 => 0x94, - 0x36 => 0x93, - 0x3c => 0x96, - 0x3e => 0x97, - 0x40 => 0x99, - 0x44 => 0x9b, - 0x46 => 0xa1, - 0x47 => 0xa2, - 0x3b if matches!(payload_for_request.first().copied(), Some(2 | 5)) => 0x98, - _ => 0x80, - }; - if response != expected || (response == 0x80 && payload != [opcode, 0]) { + if response != expected || (response == u64::from(wire::ACK) && payload != [opcode, 0]) { return Err( "Response does not match the request; operation outcome is unknown".into(), ); @@ -342,6 +347,19 @@ pub fn request( mod tests { use super::*; #[test] + fn opcode_namespace_has_explicit_response_contract_for_every_registered_request() { + let registry: Value = serde_json::from_str(include_str!("../../docs/pccontroller/ProtocolContract.json")).unwrap(); + for opcode in 0..=255_u8 { + let request = registry["opcodes"].as_array().unwrap().iter().any(|row| + row["value"].as_u64() == Some(u64::from(opcode)) && opcode < 128); + assert_eq!(expected_response(opcode, &[]).is_some(), request); + } + assert_eq!(expected_response(wire::MACRO_STEP, &[2]), Some(wire::MACRO_STATUS_RESPONSE)); + assert_eq!(expected_response(wire::MACRO_STEP, &[5]), Some(wire::MACRO_STATUS_RESPONSE)); + assert_eq!(expected_response(wire::MACRO_STEP, &[0]), Some(wire::ACK)); + assert_eq!(expected_response(0xfc, &[]), None); + } + #[test] fn actual_donor_registry_has_no_pwm_audio_alias() { assert_eq!(opcode("PWM_SET").unwrap(), 0x11); assert_eq!(opcode("DISPLAY_TEXT").unwrap(), 0x38); diff --git a/desktop/src/peer_http.rs b/desktop/src/peer_http.rs index d3567cf..487df45 100644 --- a/desktop/src/peer_http.rs +++ b/desktop/src/peer_http.rs @@ -723,6 +723,10 @@ mod tests { let accept = || loop { match listener.accept() { Ok((stream, _)) => { + // Winsock may inherit the listener's nonblocking mode. + // Only accept is polled; fixture HTTP/WS I/O must wait + // for bytes within the bounded socket timeouts below. + stream.set_nonblocking(false).unwrap(); stream .set_read_timeout(Some(Duration::from_secs(2))) .unwrap(); @@ -1221,6 +1225,8 @@ mod tests { } Err(error) => panic!("{error}"), }; + // Do not inherit the polled listener's mode on Windows. + socket.set_nonblocking(false).unwrap(); socket .set_read_timeout(Some(Duration::from_secs(2))) .unwrap(); diff --git a/desktop/src/peer_identity.rs b/desktop/src/peer_identity.rs index 02353eb..a405990 100644 --- a/desktop/src/peer_identity.rs +++ b/desktop/src/peer_identity.rs @@ -1,11 +1,12 @@ //! Descriptive peer identity and minimum supported releases. API paths and //! optional fields remain one living contract, never version-selected adapters. +use crate::protocol_opcodes::pakar as wire; use serde::{Deserialize, Serialize}; use std::sync::OnceLock; pub const VERSION: &str = env!("CARGO_PKG_VERSION"); pub const PRODUCT: &str = "pakarcontroller-native"; -pub const USB_REPORT: u8 = 0x61; +pub const USB_REPORT: u8 = wire::PEER_REPORT; const POLICY: &str = include_str!("../../interfaces/peer-policy.json"); pub fn session_id() -> &'static str { static ID: OnceLock = OnceLock::new(); @@ -326,7 +327,7 @@ impl UsbReportSupport { ) -> bool { if !enforce && request.0 == USB_REPORT - && response == (0x82, request.1) + && response == (wire::ERROR_RESPONSE, request.1) && payload == [USB_REPORT, 2] { self.unavailable = true; @@ -357,7 +358,7 @@ pub fn report_chunks( /// Rejection is not necessarily a release-policy mismatch: report validation, /// capacity, maintenance and malformed responses must remain distinguishable. pub fn usb_introduction_error(request: u8, response: u8, payload: &[u8]) -> String { - if response == 0x82 && payload.len() == 2 && payload[0] == request { + if response == wire::ERROR_RESPONSE && payload.len() == 2 && payload[0] == request { let reason = match payload[1] { 1 => "bad envelope", 2 => "unsupported caller or introduction", diff --git a/desktop/src/protocol_opcodes.rs b/desktop/src/protocol_opcodes.rs new file mode 100644 index 0000000..a1d7c1b --- /dev/null +++ b/desktop/src/protocol_opcodes.rs @@ -0,0 +1,143 @@ +// Generated from PCController Project/ProtocolContract.json; DO NOT EDIT. +#[allow(dead_code)] +pub mod pakar { + pub const MAGIC: u8 = 0xA5; + pub const RESERVED: u8 = 0; + pub const MAXIMUM_PAYLOAD: usize = 48; + pub const HELLO: u8 = 0x01; + pub const GET_STATUS: u8 = 0x02; + pub const SET_STREAM_PERIOD: u8 = 0x03; + pub const BUZZER: u8 = 0x10; + pub const AUDIO_CUE: u8 = 0x11; + pub const AUDIO_STREAM: u8 = 0x12; + pub const DISPLAY_TEXT: u8 = 0x38; + pub const SET_MODE: u8 = 0x4B; + pub const CELL_ACTION: u8 = 0x4C; + pub const GAME_RESET: u8 = 0x4D; + pub const OUTPUT_MASK: u8 = 0x4E; + pub const PING: u8 = 0x4F; + pub const PROGRAMMING_STATE: u8 = 0x50; + pub const SET_BRIGHTNESS: u8 = 0x51; + pub const SET_LED_PATTERN: u8 = 0x52; + pub const NETWORK_CONFIG: u8 = 0x53; + pub const ACCESS_CONFIG: u8 = 0x54; + pub const DEVICE_NAME: u8 = 0x55; + pub const PC_CONTRACT: u8 = 0x56; + pub const PC_CONTRACT_CHUNK: u8 = 0x57; + pub const GET_TELEMETRY: u8 = 0x58; + pub const GET_IDENTITY: u8 = 0x59; + pub const ESP_PANEL: u8 = 0x5A; + pub const AVR_RX_DIAGNOSTIC: u8 = 0x5B; + pub const SET_LED_OUTPUT: u8 = 0x5C; + pub const GET_TABLE_SNAPSHOT: u8 = 0x5D; + pub const TABLE_COMMAND: u8 = 0x5E; + pub const CELLS_ACTION: u8 = 0x5F; + pub const SHELL_REQUEST: u8 = 0x60; + pub const PEER_REPORT: u8 = 0x61; + pub const CELL_ASSIGNMENTS: u8 = 0x62; + pub const CELL_LOCK: u8 = 0x63; + pub const HOST_DEMAND: u8 = 0x64; + pub const PIXEL_DIAGNOSTIC: u8 = 0x65; + pub const KEY_MASK: u8 = 0x66; + pub const KEY_SETTINGS: u8 = 0x67; + pub const GAME_PRESS: u8 = 0x68; + pub const KEY_PRESENTATION: u8 = 0x69; + pub const USB_API: u8 = 0x6A; + pub const ACK: u8 = 0x80; + pub const HELLO_RESPONSE: u8 = 0x81; + pub const ERROR_RESPONSE: u8 = 0x82; + pub const STATUS_RESPONSE: u8 = 0x90; + pub const GAME_STATE: u8 = 0xA3; + pub const INPUT_EVENT: u8 = 0xA4; + pub const CELL_EVENT: u8 = 0xA5; + pub const PONG: u8 = 0xA6; + pub const PC_CONTRACT_RESPONSE: u8 = 0xB0; + pub const TELEMETRY_RESPONSE: u8 = 0xB1; + pub const IDENTITY_RESPONSE: u8 = 0xB2; + pub const ESP_PANEL_RESPONSE: u8 = 0xB3; + pub const AVR_RX_DIAGNOSTIC_RESPONSE: u8 = 0xB4; + pub const RESET_TELEMETRY_RESPONSE: u8 = 0xB5; + pub const TABLE_SNAPSHOT_RESPONSE: u8 = 0xB6; + pub const TABLE_COMMAND_STATE: u8 = 0xB7; + pub const PANEL_EVENT: u8 = 0xB8; + pub const SHELL_RESPONSE: u8 = 0xB9; + pub const HOST_DEMAND_RESPONSE: u8 = 0xBA; + pub const AUDIO_STREAM_RESPONSE: u8 = 0xBC; + pub const USB_API_RESPONSE: u8 = 0xBD; +} + +#[allow(dead_code)] +pub mod controller { + pub const MAGIC: u8 = 0xA5; + pub const RESERVED: u8 = 1; + pub const MAXIMUM_PAYLOAD: usize = 48; + pub const HELLO: u8 = 0x01; + pub const GET_STATUS: u8 = 0x02; + pub const SET_STREAM_PERIOD: u8 = 0x03; + pub const GET_SETTINGS: u8 = 0x04; + pub const SET_SETTINGS: u8 = 0x05; + pub const TEMPERATURE_LIST: u8 = 0x06; + pub const BUZZER: u8 = 0x10; + pub const PWM_SET: u8 = 0x11; + pub const PWM_ALL_OFF: u8 = 0x12; + pub const STATUS_RGB: u8 = 0x14; + pub const PWM_GET: u8 = 0x15; + pub const ADDRESSABLE_LED: u8 = 0x16; + pub const STATUS_EFFECT: u8 = 0x17; + pub const STATUS_PROFILE_GET: u8 = 0x18; + pub const STATUS_PROFILE_SET: u8 = 0x19; + pub const RADIO_TRANSMIT: u8 = 0x20; + pub const RADIO_LEARN_START: u8 = 0x21; + pub const RADIO_LEARN_CANCEL: u8 = 0x22; + pub const RADIO_LEARN_CLEAR: u8 = 0x23; + pub const RADIO_LEARN_LIST: u8 = 0x24; + pub const RADIO_LEARN_REMOVE: u8 = 0x25; + pub const MENU_ACTION: u8 = 0x30; + pub const RELAY_SET: u8 = 0x31; + pub const RELAY_SIDE: u8 = 0x32; + pub const RELAY_ALL_OFF: u8 = 0x33; + pub const RELAY_TEST: u8 = 0x34; + pub const RESET: u8 = 0x35; + pub const I2C_TRANSFER: u8 = 0x36; + pub const MENU_SET_PAGE: u8 = 0x37; + pub const DISPLAY_TEXT: u8 = 0x38; + pub const MACRO_START: u8 = 0x39; + pub const MACRO_CANCEL: u8 = 0x3A; + pub const MACRO_STEP: u8 = 0x3B; + pub const FRONT_PANEL_GET: u8 = 0x3C; + pub const REMOTE_KEY_GESTURE: u8 = 0x3D; + pub const MENU_LIST: u8 = 0x3E; + pub const RADIO_LEARN_REPLACE: u8 = 0x3F; + pub const MENU_LAYOUT_GET: u8 = 0x40; + pub const MENU_LAYOUT_SET: u8 = 0x41; + pub const HOST_MENU_DIRECTORY: u8 = 0x42; + pub const HOST_MENU_CONTENT: u8 = 0x43; + pub const HOST_MENU_STATE_GET: u8 = 0x44; + pub const PROGRAM_STATE: u8 = 0x45; + pub const AUTOMATION_LIST: u8 = 0x46; + pub const AUTOMATION_PUT: u8 = 0x47; + pub const AUTOMATION_REMOVE: u8 = 0x48; + pub const AUTOMATION_CLEAR: u8 = 0x49; + pub const ACK: u8 = 0x80; + pub const HELLO_RESPONSE: u8 = 0x81; + pub const ERROR_RESPONSE: u8 = 0x82; + pub const STATUS_RESPONSE: u8 = 0x90; + pub const SETTINGS_RESPONSE: u8 = 0x91; + pub const PWM_VALUES_RESPONSE: u8 = 0x92; + pub const I2C_TRANSFER_RESPONSE: u8 = 0x93; + pub const RADIO_LEARN_LIST_RESPONSE: u8 = 0x94; + pub const TEMPERATURE_LIST_RESPONSE: u8 = 0x95; + pub const FRONT_PANEL_RESPONSE: u8 = 0x96; + pub const MENU_LIST_RESPONSE: u8 = 0x97; + pub const MACRO_STATUS_RESPONSE: u8 = 0x98; + pub const MENU_LAYOUT_RESPONSE: u8 = 0x99; + pub const HOST_MENU_CONTENT_REQUEST: u8 = 0x9A; + pub const HOST_MENU_STATE_RESPONSE: u8 = 0x9B; + pub const SEGMENT_CHANGED: u8 = 0x9C; + pub const BUZZER_CHANGED: u8 = 0x9D; + pub const STATUS_LED_CHANGED: u8 = 0x9E; + pub const STATUS_PROFILE_RESPONSE: u8 = 0x9F; + pub const EVENT: u8 = 0xA0; + pub const AUTOMATION_LIST_RESPONSE: u8 = 0xA1; + pub const AUTOMATION_RECORD_RESPONSE: u8 = 0xA2; +} diff --git a/desktop/src/usb_api.rs b/desktop/src/usb_api.rs index a355c80..34abd37 100644 --- a/desktop/src/usb_api.rs +++ b/desktop/src/usb_api.rs @@ -1,10 +1,11 @@ //! Bounded API transfer on the existing USB owner; execute once, never replay. //! Uses the same open/append/execute/read/close contract as mobile UsbTransport. +use crate::protocol_opcodes::pakar as wire; use crate::{DeviceStatus, usb_table}; use serde_json::Value; use std::{sync::{mpsc::Sender, Arc, atomic::{AtomicBool, Ordering}}, time::{Duration, Instant}}; -pub const OPCODE: u8 = 0x6a; -pub const RESPONSE: u8 = 0xbd; +pub const OPCODE: u8 = wire::USB_API; +pub const RESPONSE: u8 = wire::USB_API_RESPONSE; pub struct Work { pub admission: usb_table::Admission, @@ -67,7 +68,7 @@ impl Transaction { } pub fn accept(&mut self, opcode: u8, bytes: &[u8]) -> Result, String> { if self.action == 4 { - return if opcode == 0x80 && bytes == [OPCODE, 0] { Ok(self.value.take()) } + return if opcode == wire::ACK && bytes == [OPCODE, 0] { Ok(self.value.take()) } else { Err("USB API close not acknowledged; result not replayed".into()) }; } if opcode != RESPONSE || !(9..=48).contains(&bytes.len()) || bytes[0] != self.action { diff --git a/desktop/src/usb_demand.rs b/desktop/src/usb_demand.rs index e80455d..3c5416d 100644 --- a/desktop/src/usb_demand.rs +++ b/desktop/src/usb_demand.rs @@ -1,11 +1,12 @@ //! Consumer leases, adapted from PCController's shared status subscription hub: //! no subscribers means no full snapshots; the one physical owner coalesces all readers. +use crate::protocol_opcodes::pakar as wire; use std::{ sync::Mutex, time::{Duration, Instant}, }; -pub const REQUEST: u8 = 0x64; -pub const RESPONSE: u8 = 0xba; +pub const REQUEST: u8 = wire::HOST_DEMAND; +pub const RESPONSE: u8 = wire::HOST_DEMAND_RESPONSE; pub const STATUS: u16 = 1; pub const PANEL: u16 = 2; pub const PERIPHERAL: u16 = 4; diff --git a/desktop/src/usb_table.rs b/desktop/src/usb_table.rs index dba6771..ac075fb 100644 --- a/desktop/src/usb_table.rs +++ b/desktop/src/usb_table.rs @@ -1,12 +1,13 @@ //! Frozen USB table reads reuse the existing identity chunk shape, not its //! mutable identity revision. PCController Session's matched ACK/admission and //! no-replay rules apply to one operation on the selected USB owner. +use crate::protocol_opcodes::pakar as wire; use crate::{CellMapping, CellMappingResponse, DeviceStatus, peer_http}; use std::time::{Duration, Instant}; -pub const READ: u8 = 0x5d; -pub const RESPONSE: u8 = 0xb6; -pub const COMMAND: u8 = 0x5e; -pub const COMMAND_STATE: u8 = 0xb7; +pub const READ: u8 = wire::GET_TABLE_SNAPSHOT; +pub const RESPONSE: u8 = wire::TABLE_SNAPSHOT_RESPONSE; +pub const COMMAND: u8 = wire::TABLE_COMMAND; +pub const COMMAND_STATE: u8 = wire::TABLE_COMMAND_STATE; // A command can overtake the next unsent background chunk, never bytes already // on wire. Adapted from PCController Session.grantNextLocked request priority. pub fn yield_snapshot( @@ -106,10 +107,10 @@ pub struct Operation { } impl Operation { pub fn matches(&self, op: u8, seq: u8, p: &[u8]) -> bool { - matches!(op, 0x80 | 0x82) + matches!(op, wire::ACK | wire::ERROR_RESPONSE) && self.sequence == seq && p.len() == 2 - && (p[0] == self.intent.opcode || (op == 0x82 && p[0] == COMMAND)) + && (p[0] == self.intent.opcode || (op == wire::ERROR_RESPONSE && p[0] == COMMAND)) } pub fn timing(&self, session: u64, confirmation: &'static str) -> Timing { let now = Instant::now(); @@ -341,7 +342,7 @@ impl Reader { pub fn table_command(op: u8) -> bool { matches!( op, - 0x4b | 0x4c | 0x4d | 0x51 | 0x52 | 0x5c | 0x5f | 0x62 | 0x63 | 0x65 | 0x67 | 0x68 | 0x69 + wire::SET_MODE | wire::CELL_ACTION | wire::GAME_RESET | wire::SET_BRIGHTNESS | wire::SET_LED_PATTERN | wire::SET_LED_OUTPUT | wire::CELLS_ACTION | wire::CELL_ASSIGNMENTS | wire::CELL_LOCK | wire::PIXEL_DIAGNOSTIC | wire::KEY_SETTINGS | wire::GAME_PRESS | wire::KEY_PRESENTATION ) } const KEY_FIELDS: [(&str, usize, usize, u32); 6] = [ @@ -487,19 +488,19 @@ pub(crate) fn key_settings_verify(s: &DeviceStatus, p: &[u8]) -> bool { }) } pub fn fenced(status: &DeviceStatus, op: u8, payload: &[u8]) -> Result, String> { - if op == 0x5c && payload.first() == Some(&3) + if op == wire::SET_LED_OUTPUT && payload.first() == Some(&3) && !(payload.len() == 2 && crate::led_backend::name(payload[1]) .is_some_and(|backend| crate::led_backend::allowed(status, backend))) { return Err("LED backend unavailable, switching or invalid; nothing sent".into()); } - if matches!(op, 0x68 | 0x69) { - let feature = if op == 0x68 { "game-press" } else { "game-presentation" }; - let valid = if op == 0x68 { matches!(payload, [1..=9]) } else { crate::game_presentation::decode(payload).is_some() }; + if matches!(op, wire::GAME_PRESS | wire::KEY_PRESENTATION) { + let feature = if op == wire::GAME_PRESS { "game-press" } else { "game-presentation" }; + let valid = if op == wire::GAME_PRESS { matches!(payload, [1..=9]) } else { crate::game_presentation::decode(payload).is_some() }; if !valid || !status.capabilities.as_ref().is_some_and(|c| c.role == "first-wins" && c.has(feature)) { return Err("Game control unavailable or invalid".into()); } } - if op == 0x67 + if op == wire::KEY_SETTINGS && payload.first().is_some_and(|mask| mask & 192 != 0) && !status .capabilities @@ -508,7 +509,7 @@ pub fn fenced(status: &DeviceStatus, op: u8, payload: &[u8]) -> Result, { return Err("Game melodies unavailable".into()); } - if op == 0x67 + if op == wire::KEY_SETTINGS && (!key_settings_valid(payload) || !status .capabilities @@ -528,13 +529,13 @@ pub fn fenced(status: &DeviceStatus, op: u8, payload: &[u8]) -> Result, "Atomic USB cell batch unavailable/invalid; nothing sent, no per-cell fallback".into(), ); } - if op == 0x62 + if op == wire::CELL_ASSIGNMENTS && (!crate::cell_assignments::supported(status) || crate::cell_assignments::Document::from_payload(payload).is_err()) { return Err("Invalid or unavailable atomic assignments".into()); } - if op == 0x63 + if op == wire::CELL_LOCK && (!matches!(payload, [0] | [1]) || !status .capabilities @@ -543,7 +544,7 @@ pub fn fenced(status: &DeviceStatus, op: u8, payload: &[u8]) -> Result, { return Err("Invalid or unavailable red lock".into()); } - if op == 0x65 + if op == wire::PIXEL_DIAGNOSTIC && (!crate::pixel_diagnostic::usb_supported(status) || crate::pixel_groups::advertised(status) || crate::pixel_diagnostic::profile(status).is_none_or(|(pixels, group)| { @@ -595,8 +596,8 @@ pub struct Intent { } impl Intent { pub fn needs_full_snapshot(&self) -> bool { - matches!(self.opcode, 0x65 | 0x67 | 0x69) - || self.opcode == 0x5c && self.payload.first() == Some(&3) + matches!(self.opcode, wire::PIXEL_DIAGNOSTIC | wire::KEY_SETTINGS | wire::KEY_PRESENTATION) + || self.opcode == wire::SET_LED_OUTPUT && self.payload.first() == Some(&3) } pub fn reply(&self, result: Result) { if let Some(reply) = &self.reply { @@ -616,25 +617,25 @@ impl Intent { } pub fn verify(&self, s: &DeviceStatus) -> bool { match (self.opcode, self.payload.as_slice()) { - (0x5c, [3, backend]) => crate::led_backend::name(*backend) + (wire::SET_LED_OUTPUT, [3, backend]) => crate::led_backend::name(*backend) .is_some_and(|name| crate::led_backend::confirmed(s, name)), - (0x67, payload) => key_settings_verify(s, payload), - (0x68, [1..=9]) => true, // Completion requires the correlated AVR ACK, then authoritative readback. - (0x69, payload) => crate::game_presentation::decode(payload).is_some_and(|patch| crate::game_presentation::verify(&s.key_game["presentation"], &patch)), - (0x65, payload) => crate::pixel_diagnostic::usb_verify(s, payload), - (0x62, payload) => { + (wire::KEY_SETTINGS, payload) => key_settings_verify(s, payload), + (wire::GAME_PRESS, [1..=9]) => true, // Completion requires the correlated AVR ACK, then authoritative readback. + (wire::KEY_PRESENTATION, payload) => crate::game_presentation::decode(payload).is_some_and(|patch| crate::game_presentation::verify(&s.key_game["presentation"], &patch)), + (wire::PIXEL_DIAGNOSTIC, payload) => crate::pixel_diagnostic::usb_verify(s, payload), + (wire::CELL_ASSIGNMENTS, payload) => { crate::cell_assignments::Document::from_payload(payload).is_ok_and(|d| d.verify(s)) } - (0x63, [value]) if *value <= 1 => s.red_lock == Some(*value != 0), - (0x5f, payload) => self.admission.batch.as_ref().is_some_and(|batch| { + (wire::CELL_LOCK, [value]) if *value <= 1 => s.red_lock == Some(*value != 0), + (wire::CELLS_ACTION, payload) => self.admission.batch.as_ref().is_some_and(|batch| { batch.request.payload() == payload && crate::peer_http::Pin::from_status(s).as_ref() == Some(&batch.peer) && batch.request.verify(s) }), - (0x4b, [mode]) => ["unknown", "cell", "first-wins", "snake"] + (wire::SET_MODE, [mode]) => ["unknown", "cell", "first-wins", "snake"] .get(*mode as usize) .is_some_and(|v| s.mode == *v), - (0x4c, [id, state, ..]) => { + (wire::CELL_ACTION, [id, state, ..]) => { *id >= 1 && *id <= 80 && ["white", "red", "off"] @@ -645,15 +646,15 @@ impl Intent { .is_some_and(|actual| actual.as_str() == *v) }) } - (0x4d, []) => s.cells.iter().all(|v| v == "white") && s.winner == 0, - (0x51, [brightness]) => s.brightness == *brightness, - (0x52, [pattern]) => ["none", "rainbow", "fire"] + (wire::GAME_RESET, []) => s.cells.iter().all(|v| v == "white") && s.winner == 0, + (wire::SET_BRIGHTNESS, [brightness]) => s.brightness == *brightness, + (wire::SET_LED_PATTERN, [pattern]) => ["none", "rainbow", "fire"] .get(*pattern as usize) .is_some_and(|v| s.effect == *v), - (0x5c, [enabled]) if *enabled <= 1 => { + (wire::SET_LED_OUTPUT, [enabled]) if *enabled <= 1 => { s.led_output["enabled"].as_bool() == Some(*enabled != 0) } - (0x5c, [2, mode]) if *mode <= 1 => { + (wire::SET_LED_OUTPUT, [2, mode]) if *mode <= 1 => { s.led_output["mode"].as_str() == Some(if *mode == 0 { "static" } else { "effects" }) } _ => false, diff --git a/docs/FILE-COMPARISON.md b/docs/FILE-COMPARISON.md index 8182cb9..247172d 100644 --- a/docs/FILE-COMPARISON.md +++ b/docs/FILE-COMPARISON.md @@ -2,9 +2,9 @@ Whole-repository superiority is **not established**. This report exposes retained code, scoped improvements, omissions and gaps; it does not turn missing reviews into exclusions. -Routing: 1466 paths have no specialist capability match. They remain visible through `consult-reuse.ps1 -Concern donor-audit` and issue #3; lack of a keyword match is NOT an exclusion. Every CSV row includes capability routing and owning issue links. +Routing: 1472 paths have no specialist capability match. They remain visible through `consult-reuse.ps1 -Concern donor-audit` and issue #3; lack of a keyword match is NOT an exclusion. Every CSV row includes capability routing and owning issue links. -Inventory: 4738 files; 436 complete source-file comparisons; 4302 pending comparisons; 310 compared files with known parity gaps. Header/implementation pairs can describe the same gap. Missing sparse files remain pending. +Inventory: 4744 files; 437 complete source-file comparisons; 4307 pending comparisons; 311 compared files with known parity gaps. Header/implementation pairs can describe the same gap. Missing sparse files remain pending. Every inventoried path, source revision/hash, target/proof file and line, omitted code, disposition and concrete reason is in `file-comparison.csv`. Hash-bound manual decisions are in `file-comparison-evidence.json`. Donor SHA-256 values bind original bytes; target/proof SHA-256 values bind UTF-8 without BOM with LF newlines. Anchors are recomputed into exact line numbers. Test-code presence is not test execution; execution receipts are in `FILE-COMPARISON-RECEIPTS.md`. @@ -16,8 +16,8 @@ Every inventoried path, source revision/hash, target/proof file and line, omitte | ControllerBoardMini/Puzzles | 18 | 18 | 0 | 8 | | DRS-jSnake | 18 | 16 | 2 | 16 | | esp32WS2811 | 24 | 16 | 8 | 9 | -| PCController | 1517 | 118 | 1399 | 106 | -| Pealayer | 639 | 66 | 573 | 47 | +| PCController | 1517 | 119 | 1398 | 107 | +| Pealayer | 645 | 66 | 579 | 47 | | portable-shell | 23 | 23 | 0 | 0 | | PU850-ESP | 109 | 109 | 0 | 96 | | PuzzleBoard | 22 | 22 | 0 | 1 | @@ -29,7 +29,7 @@ Every inventoried path, source revision/hash, target/proof file and line, omitte Verdict: **equivalent-behavior**. Revision: `filesystem-snapshot`. Original-byte SHA-256: `15e208f1026c9c6bcc144d842cf4d2df0bd32b9aea5b169f486dc03fe45eafd5`. -- Target: `tools/build-firmware.ps1:188 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=MiniCore:avr:328:bootloader=uart0]`. +- Target: `tools/build-firmware.ps1:190 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=MiniCore:avr:328:bootloader=uart0]`. - Retained: Read the complete Timer donor profile. Its MiniCore ATmega328P board, UART0 Urboot, EEPROM keep, 115200 bootloader baud, modelP, 2.7 V BOD, size-LTO and external 16 MHz selections match the Puzzles profile and are retained by the canonical AVR build owner. - Omitted/replaced code: `fixed Puzzle_WithTimer.ino, COM12 port and USBasp programmer`. Disposition: **replaced**. Reason: The combined build selects its role/target and the currently inventoried device explicitly; retaining a retired Timer sketch name or stale host COM/programmer assumption could build or write the wrong target. - Omitted/replaced code: `editor-owned build output`. Disposition: **replaced**. Reason: The guarded wrapper owns one canonical low-write output/cache layout instead of allowing an editor extension to create an untracked duplicate build tree. @@ -42,7 +42,7 @@ Verdict: **equivalent-behavior**. Revision: `filesystem-snapshot`. Original-byte Verdict: **equivalent-behavior**. Revision: `filesystem-snapshot`. Original-byte SHA-256: `f94454e8edf978f7eb7d5ac1ed93c06186b35a03ac5e81b314855ba6a0551e9d`. - Target: `.vscode/settings.json:5 [UTF8-LF sha256=2373a0d9d9a7af54872b0ae854ccf1ff95116ef8f80aebfad513fe3031914d5f; anchor="*.ino": "cpp"]`. -- Target: `tools/build-firmware.ps1:235 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor='compile', '--jobs', "$Jobs", '--fqbn']`. +- Target: `tools/build-firmware.ps1:237 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor='compile', '--jobs', "$Jobs", '--fqbn']`. - Retained: Read all 539 Timer donor lines through EOF and confirmed byte identity with the reviewed Puzzles snapshot. AVR/Arduino language ownership and compile-profile intent are retained by portable editor associations and the actual MiniCore compile command. - Omitted/replaced code: `absolute Arduino15 compiler/core/library paths and copied avr-g++ predefined macros`. Disposition: **replaced**. Reason: Generated host/version paths and compiler-owned macros go stale and can misdescribe the selected MCU. The canonical build resolves the installed pinned toolchain and supplies the real FQBN/options. - Omitted/replaced code: `gcc-x64 IntelliSense mode and USBCON define for ATmega328P`. Disposition: **replaced**. Reason: Those generated values do not describe the AVR target ABI and can falsely advertise USB capability; real compiler invocation remains authoritative. @@ -235,7 +235,7 @@ Verdict: **scoped-improvement**. Revision: `filesystem-snapshot`. Original-byte Verdict: **scoped-improvement**. Revision: `filesystem-snapshot`. Original-byte SHA-256: `afe04b5cd7cda37b9650dcbc0937f1d6a7f8f831c7f105ac4e2c84bdf9e687bf`. -- Target: `tools/build-firmware.ps1:188 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=MiniCore:avr:328:bootloader=uart0]`. +- Target: `tools/build-firmware.ps1:190 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=MiniCore:avr:328:bootloader=uart0]`. - Target: `tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware(]`. - Retained: Read the complete batch file. Download-before-program and explicit ATmega328P/UART bootloader intent are retained in the guarded firmware build/update pipeline. - Omitted/replaced code: `unauthenticated curl localhost:800 and delete-old-before-content-verification`. Disposition: **replaced**. Reason: The update owner requires peer identity, admission, expected image metadata, verified backup and hash/readback instead of accepting any HTTP body or deleting rollback first. @@ -265,7 +265,7 @@ Verdict: **parity-gap**. Revision: `filesystem-snapshot`. Original-byte SHA-256: Verdict: **equivalent-behavior**. Revision: `filesystem-snapshot`. Original-byte SHA-256: `674d0df0aec5c7448b8c27a47b03951d2a40ee8c5a295bd62b7ca50aa85ea1f4`. -- Target: `tools/build-firmware.ps1:188 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=MiniCore:avr:328:bootloader=uart0]`. +- Target: `tools/build-firmware.ps1:190 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=MiniCore:avr:328:bootloader=uart0]`. - Retained: Read the complete donor profile. Its MiniCore ATmega328P board, UART0 Urboot, EEPROM keep, 115200 bootloader baud, modelP, 2.7 V BOD, size-LTO and external 16 MHz selections are retained by the canonical AVR build owner. - Omitted/replaced code: `fixed COM12 port and USBasp programmer`. Disposition: **replaced**. Reason: Production discovery and explicit deployment select the currently inventoried device; committing a stale host COM number or assuming a programmer would risk writing the wrong board. - Omitted/replaced code: `sketch/output fields owned by the retired Arduino VS Code extension`. Disposition: **replaced**. Reason: The guarded build wrapper owns the target sketch, shared cache and low-write output layout for AVR and ESP profiles rather than allowing an editor extension to create an untracked build directory. @@ -278,7 +278,7 @@ Verdict: **equivalent-behavior**. Revision: `filesystem-snapshot`. Original-byte Verdict: **equivalent-behavior**. Revision: `filesystem-snapshot`. Original-byte SHA-256: `f94454e8edf978f7eb7d5ac1ed93c06186b35a03ac5e81b314855ba6a0551e9d`. - Target: `.vscode/settings.json:5 [UTF8-LF sha256=2373a0d9d9a7af54872b0ae854ccf1ff95116ef8f80aebfad513fe3031914d5f; anchor="*.ino": "cpp"]`. -- Target: `tools/build-firmware.ps1:235 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor='compile', '--jobs', "$Jobs", '--fqbn']`. +- Target: `tools/build-firmware.ps1:237 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor='compile', '--jobs', "$Jobs", '--fqbn']`. - Retained: Read all 539 donor lines through EOF. The useful AVR/Arduino C and C++ language ownership and compile-profile intent are retained by editor associations plus the actual MiniCore compile command. - Omitted/replaced code: `absolute C:\Users\David Arduino15 compiler/core/library include paths`. Disposition: **replaced**. Reason: These generated host/version paths are not portable source configuration and go stale whenever Arduino packages move. The build wrapper resolves the installed pinned toolchain and passes the real FQBN/options to arduino-cli. - Omitted/replaced code: `hundreds of copied avr-g++ predefined macros including USBCON`. Disposition: **replaced**. Reason: Compiler-owned predefined macros must come from the selected AVR compiler invocation; committing a generated snapshot can lie to IntelliSense about the active MCU and USB capability. @@ -1126,7 +1126,7 @@ Verdict: **scoped-improvement**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920 - Target: `firmware/avr/TonePlayer.h:19 [UTF8-LF sha256=c102c4d0a789f9d19e8c94db92001caf489beca04e65dead01186d91998c2cde; anchor=bool enqueue]`. - Target: `firmware/avr/TonePlayer.cpp:87 [UTF8-LF sha256=6c578fb07b1c5059d1d03690beed73806a77b9d28cd05359d9f225b945275ed1; anchor=startsAt = stepEndsAt_]`. -- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction]`. +- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction]`. - Target: `desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(]`. - Target: `mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(]`. - Target: `mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences]`. @@ -1145,7 +1145,7 @@ Verdict: **scoped-improvement**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920 - Test-code evidence: `tests/tone_player_test.cpp:51 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=player.setMuted(false)]`. - Test-code evidence: `tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute]`. - Test-code evidence: `tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]]`. -- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings]`. +- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings]`. - Test-code evidence: `mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback]`. - Test-code evidence: `tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of []`. - Test-code evidence: `tests/tone_player_test.cpp:208 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=fifteen finite cues]`. @@ -1160,7 +1160,7 @@ Verdict: **scoped-improvement**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920 - Target: `firmware/avr/TonePlayer.h:19 [UTF8-LF sha256=c102c4d0a789f9d19e8c94db92001caf489beca04e65dead01186d91998c2cde; anchor=bool enqueue]`. - Target: `firmware/avr/TonePlayer.cpp:87 [UTF8-LF sha256=6c578fb07b1c5059d1d03690beed73806a77b9d28cd05359d9f225b945275ed1; anchor=startsAt = stepEndsAt_]`. -- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction]`. +- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction]`. - Target: `desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(]`. - Target: `mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(]`. - Target: `mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences]`. @@ -1177,7 +1177,7 @@ Verdict: **scoped-improvement**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920 - Test-code evidence: `tests/tone_player_test.cpp:51 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=player.setMuted(false)]`. - Test-code evidence: `tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute]`. - Test-code evidence: `tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]]`. -- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings]`. +- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings]`. - Test-code evidence: `mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback]`. - Test-code evidence: `tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of []`. - Test-code evidence: `tests/tone_player_test.cpp:208 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=fifteen finite cues]`. @@ -1230,7 +1230,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Omitted/replaced code: `UpgradeChannel construction/lifecycle and whole-activity discovery/tone/app-update parity`. Disposition: **pending**. Reason: Pakar separately owns AppUpdateChannel, peer-discovery, BLE and tone channels; this row certifies only the inspected SAF adaptation, not full donor upgrade/automation/discovery/mirroring equivalence or provider/OS behavior. Keep their owning rows and remaining acceptance rather than infer parity from class names. - Test-code evidence: `mobile/test/documents_test.dart:64 [UTF8-LF sha256=641aee7d7a005c5c309683cf98154f571c1e3c398dd5674fc68b020807807df0; anchor=S3 document intake above 2MiB uses one bounded slot policy]`. - Test-code evidence: `mobile/test/documents_test.dart:38 [UTF8-LF sha256=641aee7d7a005c5c309683cf98154f571c1e3c398dd5674fc68b020807807df0; anchor=Changed owner while choosing export abandons token; never writes or deletes]`. -- Test-code evidence: `mobile/test/usb_transport_test.dart:324 [UTF8-LF sha256=c18934fdea3c2001264dcab582a4ebf1c1f5b7897c9ffc514821e4c6047c563f; anchor=Real channel session performs HELLO introduction snapshot and atomic batch without HTTP or DNS]`. +- Test-code evidence: `mobile/test/usb_transport_test.dart:348 [UTF8-LF sha256=5be41161b7d31bd348b31c7d0f3c0cc836f632cf0ba5a1c3f5ecebdfcf0a3410; anchor=Real channel session performs HELLO introduction snapshot and atomic batch without HTTP or DNS]`. - Test-code evidence: `mobile/test/firmware_image_test.dart:215 [UTF8-LF sha256=81f47d2e4a07740c1dab37cf55849a8a5c91eddf47631e7b631da5dad7b6ca4b; anchor=Wrong chip or observed small slot cannot reach manual mutation]`. - Remaining: Verify actual Android document providers, cancellation, process/activity destruction, exact selected-byte upload/export and one-use-token failure behavior on the authorized phone. Dart MethodChannel fixtures are not native SAF/provider or physical OTA proof. Finish useful omitted automation/preferences/new-intent/upgrade lifecycle imports with exact source evidence. @@ -1649,7 +1649,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Target: `firmware/esp32s3/src/LedWire.h:37 [UTF8-LF sha256=9d83e653d1d78a30142037519bc5bf9f5ab6487a354e245403b8ff25fdcf7dda; anchor=inline constexpr uint16_t zeroHigh=12]`. - Target: `firmware/esp/src/LedRenderAdmission.h:7 [UTF8-LF sha256=a6dc69b69cba74db1fff54fd75b8940bf88958404f6c3ac971b27797d5b13c50; anchor=inline bool uartWindowReady(]`. - Target: `firmware/esp/application.ino:1340 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=uint8_t defaultPhysicalCell]`. -- Target: `tools/build-firmware.ps1:40 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=CellChaseOnBoot]`. +- Target: `tools/build-firmware.ps1:40 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=CellChaseOnBoot]`. - Target: `firmware/esp32s3/src/LedOutput.h:13 [UTF8-LF sha256=46f0e3cc947e5262451e6b3659bdfedb9cc3fa3d5de8bc4779ec6ddc97f81fec; anchor=#if !defined(PAKAR_S3_LED_GPIO_ENABLED)]`. - Target: `firmware/esp32s3/src/LedDmaGuard.h:16 [UTF8-LF sha256=6418b38a2773c592ccd48dd9c2cbfaaa1ff0a8f0aab99437e68c1a7c419a2a65; anchor=class LedDmaSetupScope]`. - Target: `firmware/esp32s3/src/LedDmaGuard.cpp:68 [UTF8-LF sha256=c2c2b90ee34d7919d22c0e4dc6c651c077b9acc0ed833090aab57e2c335e1d7e; anchor=newCacheSafeLedChannel]`. @@ -1736,7 +1736,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Target: `firmware/esp32s3/src/LedWire.h:37 [UTF8-LF sha256=9d83e653d1d78a30142037519bc5bf9f5ab6487a354e245403b8ff25fdcf7dda; anchor=inline constexpr uint16_t zeroHigh=12]`. - Target: `firmware/esp/src/LedRenderAdmission.h:7 [UTF8-LF sha256=a6dc69b69cba74db1fff54fd75b8940bf88958404f6c3ac971b27797d5b13c50; anchor=inline bool uartWindowReady(]`. - Target: `firmware/esp/application.ino:1340 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=uint8_t defaultPhysicalCell]`. -- Target: `tools/build-firmware.ps1:40 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=CellChaseOnBoot]`. +- Target: `tools/build-firmware.ps1:40 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=CellChaseOnBoot]`. - Target: `firmware/esp32s3/src/LedOutput.h:13 [UTF8-LF sha256=46f0e3cc947e5262451e6b3659bdfedb9cc3fa3d5de8bc4779ec6ddc97f81fec; anchor=#if !defined(PAKAR_S3_LED_GPIO_ENABLED)]`. - Target: `firmware/esp32s3/src/LedDmaGuard.h:16 [UTF8-LF sha256=6418b38a2773c592ccd48dd9c2cbfaaa1ff0a8f0aab99437e68c1a7c419a2a65; anchor=class LedDmaSetupScope]`. - Target: `firmware/esp32s3/src/LedDmaGuard.cpp:68 [UTF8-LF sha256=c2c2b90ee34d7919d22c0e4dc6c651c077b9acc0ed833090aab57e2c335e1d7e; anchor=newCacheSafeLedChannel]`. @@ -1921,11 +1921,11 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Target: `docs/PC-CONTROLLER-MERGE-READINESS.md:68 [UTF8-LF sha256=a023cd4573108622cbd76a62cb52115c7dd6735d1b15999b73df1e5a2a9b96d5; anchor=### Framing and dispatch]`. - Target: `libraries/BoardCore/src/WireCodec.h:41 [UTF8-LF sha256=8f9bf8a72b39e03415b295ec8b326fb9ba4c20c719ea12263cbad1b61972347c; anchor=if (input[readIndex] == 0) return 0;]`. -- Target: `docs/TRANSPORT-CONVERGENCE.md:9 [UTF8-LF sha256=91b59a9967f1eed8f8ac3381147b6a26c9b595e69cab105fe7648320b555e0ef; anchor=## Decision: shared semantics, appropriate carriers]`. +- Target: `docs/TRANSPORT-CONVERGENCE.md:9 [UTF8-LF sha256=7d4b449dec8b072d08139a66e45cc512051bcf9ccd53ad01fe8d250c9a146f1d; anchor=## Decision: shared semantics, appropriate carriers]`. - Retained: Read all bounded C++11 CRC/COBS algorithms and complete Pakar WireCodec.h. CRC/decoder structure is common; encoder bounds and ownership wrappers differ. Documented the path toward one dependency-free codec rather than silently replacing the live implementation. - Retained: 2026-10-30: reread both complete primitives against the preserved b0111ae0 donor snapshot. Apply the same zero-in-data-block COBS rejection to both current projects, retaining valid bytes, fixed buffers, in-place decode and owning/borrowed frame boundaries. PC Go host UDP uses its corrected shared Go decoder; the Pakar Rust/Dart adapters gain equivalent validation and targeted regressions. The cross-repository fixture and first-pass decision do not claim complete carrier/API or stock-board interoperability. - Omitted/replaced code: `One-source codec and zero-copy UART integration`. Disposition: **pending**. Reason: A raw algorithm import must preserve maximum framing/capacity behavior, partial RX, synchronous nested replies and 328P stack lifetime. Equal CRC conventions do not justify swapping owning Frame arrays for borrowed views without all consumers. -- Test-code evidence: `tests/protocol_test.cpp:15 [UTF8-LF sha256=4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144; anchor=Same malformed COBS vectors as PCController]`. +- Test-code evidence: `tests/protocol_test.cpp:23 [UTF8-LF sha256=b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04; anchor=Same malformed COBS vectors as PCController]`. - Test-code evidence: `tests/fixtures/cobs.json:2 [UTF8-LF sha256=81683deafa749b231e483d2b75e4c45cae2a3262cab014ad0a20c74a82b31694; anchor=COBS delimiter-free]`. - Remaining: Issues #41 and PC#702 coordinate shared core ownership, typed service/opcode compatibility, optional capabilities and full transport/client parity. First-slice fixtures/strict malformed rejection are implemented; AVR lifetime, flash/stack deltas, full-boundary/resource, deployed/LAN/physical and complete shared-code acceptance remain open. @@ -1993,7 +1993,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Target: `firmware/esp/application.ino:1464 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=void serviceScenePersistence(bool flush)]`. - Target: `firmware/esp/src/LedPreferences.h:29 [UTF8-LF sha256=303c1469003fec6fc2777ce459c1fae872c73d67241871463b7a32135bd51aac; anchor=inline bool applyLedBootPreferences(]`. -- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction]`. +- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction]`. - Target: `desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(]`. - Target: `mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(]`. - Target: `mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences]`. @@ -2026,11 +2026,11 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Test-code evidence: `tests/s3_platform_wiring_test.mjs:149 [UTF8-LF sha256=8b362da60381843154a12cc07b0c0401ec3885eb4cba2f0a2ed7815496dff6c3; anchor=sceneStore.begin]`. - Test-code evidence: `tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute]`. - Test-code evidence: `tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]]`. -- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings]`. +- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings]`. - Test-code evidence: `mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback]`. - Test-code evidence: `tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of []`. -- Test-code evidence: `desktop/src/board_silent.rs:401 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_settings_full_apply_requires_fresh_baseline_ack_and_exact_persistent_readback()]`. -- Test-code evidence: `desktop/src/board_silent.rs:299 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_settings_require_each_changed_hardware_capability_and_no_programming_latch()]`. +- Test-code evidence: `desktop/src/board_silent.rs:401 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_settings_full_apply_requires_fresh_baseline_ack_and_exact_persistent_readback()]`. +- Test-code evidence: `desktop/src/board_silent.rs:299 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_settings_require_each_changed_hardware_capability_and_no_programming_latch()]`. - Test-code evidence: `desktop/src/device_settings.rs:950 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=fn avr_editor_owns_dirty_draft_pending_receipt_and_same_peer_readback()]`. - Test-code evidence: `tests/scene_store_test.cpp:156 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Continuous edits have bounded save delay]`. - Test-code evidence: `tests/boot_audio_test.mjs:10 [UTF8-LF sha256=882dc32b024997c0411e04754bc549d0dbedf20371c4704bafc0167c657729fc; anchor=Restating the active role must ACK without resetting the winner]`. @@ -2054,7 +2054,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `ccdcfb6e1ab186abd6a4f0b5a302bb14bab295c9a0bd9b4a306036fa32f1eaf3`. -- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction]`. +- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction]`. - Target: `desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(]`. - Target: `mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(]`. - Target: `mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences]`. @@ -2070,11 +2070,11 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Omitted/replaced code: `Donor relay, motion, PWM, temperature,14-page and boot restore field layouts`. Disposition: **pending**. Reason: The current hardware has a separate validated21-byte Pakar profile. Preserve all its fields and settings ownership; do not copy unrelated peripheral storage or overwrite EEPROM regions. Generic donor editors remain pending where hardware/capabilities later match. - Test-code evidence: `tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute]`. - Test-code evidence: `tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]]`. -- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings]`. +- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings]`. - Test-code evidence: `mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback]`. - Test-code evidence: `tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of []`. -- Test-code evidence: `desktop/src/board_silent.rs:401 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_settings_full_apply_requires_fresh_baseline_ack_and_exact_persistent_readback()]`. -- Test-code evidence: `desktop/src/board_silent.rs:299 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_settings_require_each_changed_hardware_capability_and_no_programming_latch()]`. +- Test-code evidence: `desktop/src/board_silent.rs:401 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_settings_full_apply_requires_fresh_baseline_ack_and_exact_persistent_readback()]`. +- Test-code evidence: `desktop/src/board_silent.rs:299 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_settings_require_each_changed_hardware_capability_and_no_programming_latch()]`. - Test-code evidence: `desktop/src/device_settings.rs:950 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=fn avr_editor_owns_dirty_draft_pending_receipt_and_same_peer_readback()]`. - Test-code evidence: `tests/pixel_corrections_test.cpp:15 [UTF8-LF sha256=1b86a9f70dd3d79bda4e94c0eb04fcbfb38aab17aa2618a1f08ce10996501723; anchor=rules[0].enabled=false]`. - Test-code evidence: `tests/pixel_correction_store_test.cpp:31 [UTF8-LF sha256=73443a0e323ea7ab0b971d1c5605e2ef61b6c4488f3ffa9e22815997c917e008; anchor=Existing enabled-only records remain readable]`. @@ -2159,8 +2159,8 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Target: `firmware/esp/src/HostDemand.h:9 [UTF8-LF sha256=ed625496269aacbfc22ee281879893a58d9695cad2e2338c24934a6d1018e1b8; anchor=class HostDemand]`. - Target: `firmware/esp/src/HostSerial.h:26 [UTF8-LF sha256=d7dee1d9329e3959d2e362783295de00e6345dfd66cdde3f2ee1def0856fc1da; anchor=serial.enableReboot(false)]`. -- Target: `desktop/src/usb_demand.rs:84 [UTF8-LF sha256=1901dd438e454e83718feb769745bd83175a28808d746b5385d523e3c0155dac; anchor=pub struct Lease]`. -- Target: `mobile/lib/usb_transport.dart:89 [UTF8-LF sha256=6b7600fb34460397f778d5d46239e2e90954c33ae1a2b28f0b37a492185dd13b; anchor=class PakarUsbTransport]`. +- Target: `desktop/src/usb_demand.rs:85 [UTF8-LF sha256=961ca5901617970235dbfc6ee6e6e169a4158253135a5e2b7a2ab7018d8662c2; anchor=pub struct Lease]`. +- Target: `mobile/lib/usb_transport.dart:94 [UTF8-LF sha256=6d316b3b7ab94ed00d67cc92735696e860638bd8a91f5d9376d63dfe6b915eff; anchor=class PakarUsbTransport]`. - Target: `libraries/BoardCore/src/SerialLink.h:26 [UTF8-LF sha256=99373bc4c090e34324cfd2ae8c94d6666c227ad7e157a47fbd85125aac6c13a0; anchor=UartFlow::receiveBudget(serial_.available())]`. - Target: `libraries/BoardCore/src/UartFlow.h:25 [UTF8-LF sha256=44f8638f725c9cf83a6f53639144f107aace1556dd254d6dcebcaed4853c6469; anchor=constexpr uint16_t serviceBudget = 64]`. - Retained: Fully read actual UART API and synchronous payload lifetime contract. Shared SerialLink keeps AVR HardwareSerial ownership, separate RX/TX frame storage and handler/opaque context; Stream constructor preserves the S3 explicit pins/buffers. @@ -2171,7 +2171,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Omitted/replaced code: `advisory unknown reserved envelope byte acceptance`. Disposition: **replaced**. Reason: Pakar deliberately requires its fixed zero reserved byte and valid CRC, per living API fail-closed integrity policy. No numbered generation negotiation or compatibility alias is introduced. Existing protocol_test preserves CRC-correct nonzero rejection; optional opcodes still reach semantic dispatch. - Test-code evidence: `tests/host_demand_test.cpp:22 [UTF8-LF sha256=aaf8339b0acafc270aece95144b9310e84cc150193003567bc339a98d5731923; anchor=int main()]`. - Test-code evidence: `tests/host_usb_test.cpp:4 [UTF8-LF sha256=777369c0955c5eced1b601e0c30c88d6df128bd59e507ef93d16a44976f9f071; anchor=int main()]`. -- Test-code evidence: `desktop/src/usb_table.rs:1062 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn usb_demand_actual_worker_has_no_full_capture_without_reader_and_releases_lease]`. +- Test-code evidence: `desktop/src/usb_table.rs:1063 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn usb_demand_actual_worker_has_no_full_capture_without_reader_and_releases_lease]`. - Test-code evidence: `tests/serial_link_test.cpp:52 [UTF8-LF sha256=c103ffb2c7530bb4c85373433b123fe072bb6649f2d97b82f70fa08d404eeae8; anchor=Actual donor split-RX/synchronous-TX isolation]`. - Scoped advantage: Bounded large-ring RX, negative availability/read rejection and paired buffered build mode without busy GPIO. - Remaining: Optimize zero-copy/storage only with full shared consumer and AVR stack/RAM proof; no claim of donor-wide protocol parity. @@ -2203,7 +2203,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `5e5607d54af43ead28eddb747e48b6e2450dd45ef7c47202203c4f5cfc8991ab`. - Target: `tools/prepare-avr-image.mjs:65 [UTF8-LF sha256=0d4e2a5a87967031393a6079e07938c7612e6fbfcb0d38c9a2a3ae419e86d525; anchor=export function mergeUrboot(]`. -- Target: `tools/build-firmware.ps1:312 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor='prepare-avr-image.mjs']`. +- Target: `tools/build-firmware.ps1:314 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor='prepare-avr-image.mjs']`. - Retained: Read the complete donor builder and README. Adapted actual Intel HEX/checksum parsing, AVR jump decoding/encoding, wrapped reset RJMP, ELF __bad_interrupt unused-vector proof, metadata-selected application trampoline, erased-gap fill, full-flash binary/HEX round trip and exact source hash validation into the canonical AVR build. No chip, fuse, EEPROM or UART operation is performed by packaging. - Retained: Found and corrected Pakar stock merged image reset vector bypassing its included vector Urboot. Preserve stock MiniCore UART0 autobaud, reset-register r2, EEPROM and chip-erase features with a pinned 384-byte image; never silently substitute the donor custom 512-byte backend. - Omitted/replaced code: `u8.0.1 custom 512-byte backend, progress hook and TM1637 D13/PB5 CLK, D11/PB3 DIO implementation`. Disposition: **pending**. Reason: This board uses A5 CLK/A4 DIO and the stock 384-byte application ceiling. Do not deploy a wrong-pin backend or silently shrink available application space. Adapt the backend/pin profile and revalidate flash budget before any optional custom bootloader installation. @@ -2218,7 +2218,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `2ec873e7f23b56a6997a0c83de1e258ae2ce9b75cf1eb7cf08b40da5aaa68090`. - Target: `tools/prepare-avr-image.mjs:65 [UTF8-LF sha256=0d4e2a5a87967031393a6079e07938c7612e6fbfcb0d38c9a2a3ae419e86d525; anchor=export function mergeUrboot(]`. -- Target: `tools/build-firmware.ps1:312 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor='prepare-avr-image.mjs']`. +- Target: `tools/build-firmware.ps1:314 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor='prepare-avr-image.mjs']`. - Retained: Read the complete donor builder and README. Adapted actual Intel HEX/checksum parsing, AVR jump decoding/encoding, wrapped reset RJMP, ELF __bad_interrupt unused-vector proof, metadata-selected application trampoline, erased-gap fill, full-flash binary/HEX round trip and exact source hash validation into the canonical AVR build. No chip, fuse, EEPROM or UART operation is performed by packaging. - Retained: Found and corrected Pakar stock merged image reset vector bypassing its included vector Urboot. Preserve stock MiniCore UART0 autobaud, reset-register r2, EEPROM and chip-erase features with a pinned 384-byte image; never silently substitute the donor custom 512-byte backend. - Omitted/replaced code: `u8.0.1 custom 512-byte backend, progress hook and TM1637 D13/PB5 CLK, D11/PB3 DIO implementation`. Disposition: **pending**. Reason: This board uses A5 CLK/A4 DIO and the stock 384-byte application ceiling. Do not deploy a wrong-pin backend or silently shrink available application space. Adapt the backend/pin profile and revalidate flash budget before any optional custom bootloader installation. @@ -2228,6 +2228,24 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Remaining: Physical ISP signature/fuse/flash/EEPROM backup and byte verification; correct the measured clock/BOD profile before deployment; prove reset enters Urboot and returns to the application, then real hardware UART round-trip. - Remaining: Optional custom progress backend adaptation for A4/A5 with explicit profile/size and physical display acceptance. +### PCController: `Tools/Build/generate-protocol-contract.mjs` + +Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `e065ecb653e72a0c7b7c71d315725c7d08eb42062629c5fcc7151199ab10b424`. + +- Target: `interfaces/controller-wire/registry.mjs:280 [UTF8-LF sha256=4c9b408145ce8db277fd312262b77106129c931398f50b66ff18cea14f9d7694; anchor=export function validatePublishedBindings]`. +- Target: `interfaces/controller-wire/consumer.mjs:50 [UTF8-LF sha256=51ca4aaa9cb8f1ba74cabc001be34c8ec82a90d14a27e6b4ed793d72c7660484; anchor=Canonical opcode ownership]`. +- Target: `libraries/BoardCore/src/ProtocolOpcodes.h:18 [UTF8-LF sha256=87f4c683f16a162a95e503998b351f9505bd35a6f6b5130337a1d65a150adcf9; anchor=kAudioCue = 0x11]`. +- Target: `desktop/src/protocol_opcodes.rs:3 [UTF8-LF sha256=d81b3e3f6208b10572ed7af3db41d2df53e8865a86401f3044554ecc6a95f803; anchor=pub mod pakar]`. +- Target: `mobile/lib/protocol_opcodes.dart:2 [UTF8-LF sha256=5a16fb520522d029ddf9fdc04653106b3f7f94cca6f8181bd32545e4a44ab8ff; anchor=class PakarOpcode]`. +- Target: `tools/ProtocolOpcodes.ps1:3 [UTF8-LF sha256=b7e58c80118cf4bc088509e36bc55031fde82c94a125a2817feabb41013d9d16; anchor=enum PakarOpcode]`. +- Retained: Read the complete actual donor generator, validation, native C++/Go renderers and negative tests. Its portable validation/rendering core is extracted, enhanced with Pakar namespace allocations, pinned to canonical owner3b8fabe6 and reused byte-for-byte. Original native wire assignments/source API remain; Go names and consumer views are generated, not handwritten. +- Retained: Both independent published fixtures and actual protected-base CI comparisons prevent old assignments being renumbered/removed even if regenerated snapshots change. Consumer pins verify exact source bytes; optional upstream verification never executes downloaded source. PowerShell provisioning and the native response matcher now consume canonical opcode references too. +- Omitted/replaced code: `Existing native payload semantics and complete transport/service parity`. Disposition: **pending**. Reason: Shared allocations and namespace admission do not merge incompatible HELLO/settings/event payloads or certify hardware; retain the explicit tunnel and issues41/702. +- Test-code evidence: `tests/opcode_registry_test.mjs:20 [UTF8-LF sha256=14009108212aa23e2c43eb96b6103affdfe4a4c23aa073eb626cdf31706fd8da; anchor=one generated owner]`. +- Test-code evidence: `tests/protocol_test.cpp:15 [UTF8-LF sha256=b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04; anchor=Every other namespace]`. +- Test-code evidence: `mobile/test/usb_transport_test.dart:201 [UTF8-LF sha256=5be41161b7d31bd348b31c7d0f3c0cc836f632cf0ba5a1c3f5ecebdfcf0a3410; anchor=opcode namespaces never fall back]`. +- Remaining: Complete carrier/service parity and real deployed interoperability, timing, stack/RAM and physical acceptance separately. + ### PCController: `Tools/Controller/docs/Go-Embedding-API.md` Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `4d8ff85c9c44092100d4f349f20eb5493d1516d064dd03d0f6b8d1010e7b6795`. @@ -2245,7 +2263,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `cea9f315404028716f708a2a7ffe3fc71950a3ccb2996673708d977517af0e3f`. -- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction]`. +- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction]`. - Target: `desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(]`. - Target: `mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(]`. - Target: `mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences]`. @@ -2254,7 +2272,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Omitted/replaced code: `Full board/host/both/none mirroring routes, runtime overrides, OS backend/executable resolution and watched app configuration`. Disposition: **pending**. Reason: Reuse the known/unknown/pending/verified board-setting ownership, not an unimplemented host audio backend. Actual host routing parity needs independent implementation and acoustic acceptance; this change must not mute Windows notifications by accident. - Test-code evidence: `tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute]`. - Test-code evidence: `tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]]`. -- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings]`. +- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings]`. - Test-code evidence: `mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback]`. - Test-code evidence: `tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of []`. - Remaining: Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established. @@ -2433,7 +2451,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Target: `desktop/src/platform/lan_discovery.rs:27 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=pub struct Advertiser]`. - Target: `libraries/BoardCore/src/PeerCompatibility.h:27 [UTF8-LF sha256=530d8de10f3715db8cb3404dc511634152bcea12c14d9e6ebb578645307fd26b; anchor=namespace BoardCore { namespace PeerCompatibility {]`. - Target: `firmware/esp/src/ClientTelemetry.h:18 [UTF8-LF sha256=71f78fe48b0208aabe6505d9cf5986484ee8d5e77c1fea8a7b2737afecfb112a; anchor=class ClientTelemetry {]`. -- Target: `desktop/src/peer_identity.rs:394 [UTF8-LF sha256=18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979; anchor=pub fn sanitize_report(]`. +- Target: `desktop/src/peer_identity.rs:395 [UTF8-LF sha256=bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2; anchor=pub fn sanitize_report(]`. - Target: `mobile/lib/peer_identity.dart:28 [UTF8-LF sha256=dd3b1cabc0af9ed7e706aaebcb898313cf0dc85a91bb20a61278149b33d43441; anchor=class PeerIdentity]`. - Retained: Read entire source. Preserve instance.id vs physical board identity and push-fed nonsecret current-owner metadata: bridge path/hostname are additive, board_id/boot_id/hostname remain downstream-owned; current status is fed without independent serial acquisition. - Retained: Adapt the donor's observed-vs-declared metadata separation and bounded nonsecret push reports across the board, native and mobile peer registries. Shared release-range admission is a new user requirement, not copied donor version negotiation; no exact-build adapter or numbered route is introduced. @@ -2442,7 +2460,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Test-code evidence: `desktop/src/bridge.rs:2037 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_status_keeps_board_identity_and_only_available_route_capabilities]`. - Test-code evidence: `tests/peer_compatibility_test.cpp:29 [UTF8-LF sha256=1a99a731b1c980523c52bbdfa21d0d4bdd034d9c80e7dcfd1a91d92765953df3; anchor=assert(numericAppAllowed(0,2,8));]`. - Test-code evidence: `tests/client_telemetry_test.cpp:48 [UTF8-LF sha256=bae7479cdbedc4896b86299bd1cc7c046e29f3ff9dd1b1a2a7c33f5b50d523d1; anchor=assert(detail[0]["observed_ip"].isNull()]`. -- Test-code evidence: `desktop/src/peer_identity.rs:630 [UTF8-LF sha256=18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979; anchor=fn reports_drop_secrets_and_never_replace_observed_ip()]`. +- Test-code evidence: `desktop/src/peer_identity.rs:631 [UTF8-LF sha256=bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2; anchor=fn reports_drop_secrets_and_never_replace_observed_ip()]`. - Remaining: Issue #2: Complete discoveryMetadata rich TXT, five-second coalesced refresh and all HostIdentity fields. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open. - Remaining: Issue #2: Actual default-on/disabled-build peer admission and multicast discovery between installed releases remain live acceptance. Direct clients are reported to the MCU; a bridge keeps downstream reports locally. Forwarding those indirect reports through the exclusive USB owner requires a bounded correlated report queue; do not relabel indirect reported IPs as MCU-observed. @@ -2451,7 +2469,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `30454374bc87aeed2d4a536f27a24aa8c382920e9047b40d68a42faef47990c4`. - Target: `desktop/src/bridge.rs:110 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=pub struct Runtime]`. -- Target: `desktop/src/main.rs:2455 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=SerialCommand::Bridge(target]`. +- Target: `desktop/src/main.rs:2459 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=SerialCommand::Bridge(target]`. - Retained: Read through EOF. Preserve primary selected owner and explicit Disconnect/revocation; sharing never opens another serial handle or acquires a board from discovery. Bridge listener starts only on opt-in and closes through owned stop lifetime. - Omitted/replaced code: `Complete host suspend/resume lifecycleInstruction service/Windows power-event integration`. Disposition: **pending**. Reason: Current bridge is scoped to the existing app runtime/connection Gate, not a new always-running service. Listener suspend/resume behavior and platform power callbacks require additional integration and actual host acceptance. - Test-code evidence: `desktop/src/bridge.rs:2179 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_network_repeater_confirms_upstream_usb_readback_and_preserves_both_hops]`. @@ -2485,7 +2503,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `7e711f22ce5a8e0c01f7a935e0f0091ed1d305e04a7563aae57a772059f391ef`. - Target: `desktop/src/bridge.rs:110 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=pub struct Runtime]`. -- Target: `desktop/src/usb_table.rs:590 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=pub struct Intent]`. +- Target: `desktop/src/usb_table.rs:591 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=pub struct Intent]`. - Target: `firmware/esp/src/PeerRelay.h:19 [UTF8-LF sha256=b59e020b680b3d726e8bed915ecf73ba8ae79d7fcaf6ce2ca435429c1582b0db; anchor=class PeerRelay]`. - Target: `firmware/esp/src/PeerRouteStore.h:9 [UTF8-LF sha256=93e58147fbf62072c7a6ce22abe39d0dd2cf3840cd41e70bcdea8c5693889756; anchor=class PeerRouteStore]`. - Target: `firmware/esp/src/PeerNetworkCommission.h:21 [UTF8-LF sha256=3d8ec120b978a6e5c2d523a2b7dd229c8cc3f0c5e8be2d7597405f2fc30f7115; anchor=class PeerNetworkCommission]`. @@ -2494,7 +2512,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Retained: 2026-10-28 reread complete peer_response.go and its tests. Retain strict receipt identity and uncertain/no-replay outcomes while replacing per-job task allocation and full raw history with one reusable worker and eight SHA256 fingerprints. Filter downstream JSON envelope to bound heap; read-only connection recovery never replays a POST. Explicit saved-route stage/readback/rename is loop-owned, independently of worker observations. Current and historical internal-memory metrics are distinct; no claimed cause for the historical 216-byte minimum. - Omitted/replaced code: `Generic PCController peerRPCSession JSON-RPC/WebSocket/Socket.IO response envelope`. Disposition: **pending**. Reason: Pakar uses its existing living /api/command and board/boot/deadline contract, not an unimplemented promise of generic PCController RPC compatibility. Full manager.go route/authority/transport adapters remain pending review. - Test-code evidence: `desktop/src/bridge.rs:2179 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_network_repeater_confirms_upstream_usb_readback_and_preserves_both_hops]`. -- Test-code evidence: `desktop/src/usb_table.rs:842 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback]`. +- Test-code evidence: `desktop/src/usb_table.rs:843 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback]`. - Test-code evidence: `tests/peer_relay_test.cpp:140 [UTF8-LF sha256=30aa409380278617eacba57eba16589bb4e7b4671479e9c44087817882494ba2; anchor=int main()]`. - Test-code evidence: `tests/peer_network_commission_test.cpp:34 [UTF8-LF sha256=ec7bc2ebc0037b133588e44cd8fdd23afb7fb587243488272007cd2222740f0d; anchor=Acceptance alone never switches Wi-Fi.]`. - Remaining: Issue #2: Generic PCController peerRPCSession JSON-RPC/WebSocket/Socket.IO response envelope. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open. @@ -2557,7 +2575,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Target: `firmware/esp/src/WebAccess.h:36 [UTF8-LF sha256=774b524f4cd81c003e4139d0bb6cf3353d987674bbfb49d7a1b989ee2a232294; anchor=ApiPolicy::numberedRoute]`. - Retained: Actual TestVersionedCoreAPIRoutesAreRejected test cases adapted into the C++ helper exercised by ESP async middleware; generalized to all numbered API roots and pre-auth rejection. - Omitted/replaced code: `TestCanonicalRESTRouteInventory, TestRESTAppActionCannotInjectCoordinatorNavigationMetadata, typed app launch/action outcome lifecycle`. Disposition: **pending**. Reason: These exercise the full PCController Go host coordinator, not the ESP handlers. Applicable generic typed action/outcome/auth ownership and full real multiplexer route inventory still need explicit Pakar contracts and tests. The narrower source/wire tests here do not claim end-to-end async server acceptance. -- Test-code evidence: `tests/protocol_test.cpp:85 [UTF8-LF sha256=4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144; anchor=Actual donor TestVersionedCoreAPIRoutesAreRejected cases]`. +- Test-code evidence: `tests/protocol_test.cpp:93 [UTF8-LF sha256=b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04; anchor=Actual donor TestVersionedCoreAPIRoutesAreRejected cases]`. - Test-code evidence: `tests/living_contract_test.mjs:26 [UTF8-LF sha256=67389b8a5ef0a051959d1938d52abb6b48edeb194e8a73f51235d376c8121d59; anchor=pre-auth 404 wiring]`. - Remaining: Port applicable real top-level route inventory, typed app outcomes and coordinator-owned metadata spoof tests after mapping the actual Pakar host coordinator. @@ -2566,14 +2584,14 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `b03498f9df5a9f8e5bc3c94eabec71ab4fb412b53c1fb1729fe63a45ec1ba3b9`. - Target: `mobile/test/selection_batch_network_test.dart:19 [UTF8-LF sha256=41eb7d501bf707974913ef8d1813b0e18d841b85266c032778acd15848f09dc3; anchor=test(]`. -- Target: `desktop/src/peer_http.rs:959 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn local_address_cache_accepts_only_verified_tcp_peer_not_advertised_ip]`. +- Target: `desktop/src/peer_http.rs:963 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn local_address_cache_accepts_only_verified_tcp_peer_not_advertised_ip]`. - Retained: Adapted actual cached-address reuse and changed-DHCP-address scenarios with injected lookups/dials. Added actual loopback HTTP Host identity, authentication/timeout retention, selection/batch/readback and melody fixtures. - Retained: Native fixtures exercise actual reqwest loopback TCP, cached subsequent resolution, original HTTP Host and explicit port, provenance rejection, finite cache/replacement and invalidation. They are not Windows mDNS, Android DNS or DHCP physical acceptance. - Retained: Current native discovery fixtures cover persisted route roundtrip, endpoint/board/scheme/port fencing and credential-free failed-hostname recovery. Flutter trusted-CA HTTPS/WSS fixtures exercise actual numeric TCP fallback with original logical certificate identity, wrong-board rejection and shared-route reuse without repeated DNS. Separate ControlShell widget fixtures cover startup, manual Disconnect and editor handoff holds; none contacts production. - Omitted/replaced code: `Go net.TCPConn placeholders, netip addresses and go test runtime`. Disposition: **replaced**. Reason: Tests exercise the Dart resolver used by this application and a real local HTTP listener; Go donor tests are not executed as Flutter evidence. Physical phone/Wi-Fi and audible melody acceptance remain separate. - Test-code evidence: `mobile/test/lan_resolver_transport_test.dart:12 [UTF8-LF sha256=bf4a46ca2ce7a9639b66bd7c03f9ecd57065b58a2d7fb2cc5e8f6a0edc3f637e; anchor=void main()]`. - Test-code evidence: `mobile/test/selection_batch_network_test.dart:19 [UTF8-LF sha256=41eb7d501bf707974913ef8d1813b0e18d841b85266c032778acd15848f09dc3; anchor=test(]`. -- Test-code evidence: `desktop/src/peer_http.rs:1110 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn local_address_cache_bounds_replaces_and_invalidates_without_ttl_or_authority]`. +- Test-code evidence: `desktop/src/peer_http.rs:1114 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn local_address_cache_bounds_replaces_and_invalidates_without_ttl_or_authority]`. - Test-code evidence: `mobile/test/network_route_recovery_test.dart:11 [UTF8-LF sha256=e353a06b0fab6f9dd84cc7ce24aee1a5e8517c6e179b3975826f6adaa52f951f; anchor=void main()]`. - Test-code evidence: `mobile/test/configuration_event_transport_test.dart:9 [UTF8-LF sha256=4c48e1641b05832a0c0fd5945a9a63e080b8563515f00970f03bb7fcdee9dd08; anchor=void main()]`. - Test-code evidence: `tests/peer_relay_test.cpp:140 [UTF8-LF sha256=30aa409380278617eacba57eba16589bb4e7b4671479e9c44087817882494ba2; anchor=int main()]`. @@ -2588,8 +2606,8 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Target: `mobile/lib/api.dart:181 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=final LanResolver resolver;]`. - Target: `mobile/lib/discovery.dart:116 [UTF8-LF sha256=8cb3956f80a50c5be2c134829bc7d323a3f4c58fbbcf1ea5d5e1aaa10ac7fbba; anchor=class DiscoveryCatalog]`. - Target: `mobile/lib/devices_page.dart:73 [UTF8-LF sha256=73b22cde59bac6f882fd989e6494a09d3d19b010b0fc8e5ae69e55591eca44c0; anchor=catalog]`. -- Target: `desktop/src/peer_http.rs:339 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=pub fn device_client_builder]`. -- Target: `desktop/src/main.rs:818 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=peer_http::remember_address]`. +- Target: `desktop/src/peer_http.rs:339 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=pub fn device_client_builder]`. +- Target: `desktop/src/main.rs:820 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=peer_http::remember_address]`. - Target: `firmware/esp/src/PeerLanResolver.h:13 [UTF8-LF sha256=2413d89e26403aae1a9a528c60da09acf4ea5079067b8c1183e7e6c4d8f41546; anchor=class PeerLanResolver]`. - Retained: Actual complete donor resolver and tests read from canonical PCController; adapted successful-address caching, retaining URL hostname/HTTP Host/TLS SNI rather than replacing the public identity with an IP. - Retained: 2026-10-28 reread resolver.go and resolver_test.go through EOF for ESP-to-ESP recovery. Adapt its reconnect-sticky successful address to a four-entry board+hostname+boot-verified cache. .local explicitly uses SDK mdns_query_a with a 900ms budget; unicast uses TCPIP-owned asynchronous IPv4 DNS and object-owned late callbacks instead of unbounded getaddrinfo. Explicit saved-route hints are reverified after reboot. HTTP Host remains the configured hostname; no cache/discovery record grants authorization or causes command replay. @@ -2601,7 +2619,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Omitted/replaced code: `Go mutex, process-global resolver, Linux platform NBNS fallback and unbounded address candidates`. Disposition: **replaced**. Reason: Dart isolate ownership and a shared per-API resolver replace Go synchronization/global state. DNS and each dial have deadlines, successful cache is bounded64 hosts and candidates2; platform discovery remains separate. Android OS/mDNS resolution and DHCP movement still need actual phone/LAN acceptance; no platform helper or multicast success is inferred. - Test-code evidence: `mobile/test/lan_resolver_transport_test.dart:12 [UTF8-LF sha256=bf4a46ca2ce7a9639b66bd7c03f9ecd57065b58a2d7fb2cc5e8f6a0edc3f637e; anchor=void main()]`. - Test-code evidence: `mobile/test/selection_batch_network_test.dart:19 [UTF8-LF sha256=41eb7d501bf707974913ef8d1813b0e18d841b85266c032778acd15848f09dc3; anchor=test(]`. -- Test-code evidence: `desktop/src/peer_http.rs:1199 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn local_verified_address_override_preserves_http_hostname_and_explicit_port]`. +- Test-code evidence: `desktop/src/peer_http.rs:1203 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn local_verified_address_override_preserves_http_hostname_and_explicit_port]`. - Test-code evidence: `tests/peer_relay_test.cpp:140 [UTF8-LF sha256=30aa409380278617eacba57eba16589bb4e7b4671479e9c44087817882494ba2; anchor=int main()]`. - Scoped advantage: Session-sticky routing plus hostname-first durable same-board recovery; authentication and generic HTTP failures never grant discovery or mutation replay authority. - Remaining: Verify physical Android DNS-SD/mDNS resolution, reconnect/DHCP change, TLS hostname identity and retained discovery records under real network loss. Preserve explicit Disconnect and identity fencing. @@ -2619,7 +2637,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Test-code evidence: `desktop/src/platform/discovery.rs:229 [UTF8-LF sha256=126098720cf4b0d91a74e7147b41954f2361960f4ae7d210896f8c762ae24fd3; anchor=fn discovery_auto_selects_one_physical_identity_not_one_interface]`. - Test-code evidence: `mobile/test/automatic_board_connection_test.dart:32 [UTF8-LF sha256=cee36549184c34fbc52bf695f2bf92a507b60315c6b8534b04f2cc8ebae08616; anchor=void main()]`. - Test-code evidence: `mobile/test/automatic_connection_widget_test.dart:65 [UTF8-LF sha256=fdcf213e00e2e2e0f4840a5a89151435358b1ecbf9c05cf13979c1a536b67d34; anchor=void main()]`. -- Test-code evidence: `tests/protocol_test.cpp:27 [UTF8-LF sha256=4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144; anchor=admission.needsHello(2000,0)]`. +- Test-code evidence: `tests/protocol_test.cpp:35 [UTF8-LF sha256=b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04; anchor=admission.needsHello(2000,0)]`. - Remaining: Issue #2/#10: installed native/Android startup, real router/AP discovery, DHCP and hostname rename/reconnect acceptance remain open. Read-only socket/widget fixtures do not prove physical network or production deployment; unsaved drafts and maintenance owners still block new-board handoff. ### PCController: `Tools/Controller/internal/link/request_admission_test.go` @@ -2627,8 +2645,8 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `0148ea4aac3cf230050045756a4308157adf786a2b6ca2d4fd99bcf665a622c1`. - Target: `desktop/src/connection.rs:28 [UTF8-LF sha256=b87a15893bb66b66dbfa84ff9ffb611a40532dc679991397651267045e14e9b0; anchor=pub struct Gate]`. -- Target: `desktop/src/main.rs:2263 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=fn serial_worker(]`. -- Target: `desktop/src/usb_table.rs:101 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=pub struct Operation]`. +- Target: `desktop/src/main.rs:2267 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=fn serial_worker(]`. +- Target: `desktop/src/usb_table.rs:102 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=pub struct Operation]`. - Retained: Lamp-background checkpoint reread actual request-admission fixture and current selected-USB worker/HTTP-isolation regression. App-only presentation IPC is separate from physical admission; selected transport, lease and no-late-write contracts remain unchanged. Inspected main.rs target/proof rebound without execution or physical claims. - Retained: Fully read all489lines through EOF. Adapted queued-intent revocation/no-late-write and ownership-before/after admission assertions as Rust selected-method epoch tests. The production Gate keeps revoked owners until their resource leases drop and never admits a competing route or a second USB handle. - Retained: New main fixture invokes the actual HTTP worker against a live loopback listener while USB is selected, asserting zero accepted connections and zero failure events. This is an unexecuted source fixture reference until the guarded owner runs tests, not live USB or electrical proof. @@ -2637,9 +2655,9 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Omitted/replaced code: `PulseDTR cancellation/restoration/write exclusion and live physical port acquisition/late-close tests`. Disposition: **pending**. Reason: This pass intentionally adds no automatic reset and keeps AVR/ISP/audio deferred. Inactive DTR on Rust open is source configuration, not measured electrical behavior; OS acquisition/cancellation/retryable-close ownership still needs dedicated fake-handle and real-host acceptance. - Test-code evidence: `desktop/src/connection.rs:129 [UTF8-LF sha256=b87a15893bb66b66dbfa84ff9ffb611a40532dc679991397651267045e14e9b0; anchor=fn handoff_waits_for_all_actual_old_resources_and_rejects_stale_epoch()]`. - Test-code evidence: `desktop/src/connection.rs:117 [UTF8-LF sha256=b87a15893bb66b66dbfa84ff9ffb611a40532dc679991397651267045e14e9b0; anchor=fn usb_offline_never_admits_network_and_disconnect_revokes_everything()]`. -- Test-code evidence: `desktop/src/main.rs:6230 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=fn usb_selected_http_worker_never_contacts_even_a_live_network_endpoint()]`. -- Test-code evidence: `desktop/src/usb_table.rs:842 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()]`. -- Test-code evidence: `desktop/src/usb_table.rs:735 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()]`. +- Test-code evidence: `desktop/src/main.rs:6234 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=fn usb_selected_http_worker_never_contacts_even_a_live_network_endpoint()]`. +- Test-code evidence: `desktop/src/usb_table.rs:843 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()]`. +- Test-code evidence: `desktop/src/usb_table.rs:736 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()]`. - Scoped advantage: User-required exclusive Wi-Fi-or-USB lifecycle replaces Both rather than silently falling back; physical resources retire before the new method opens. Source evidence only until guarded tests and runtime observations. - Remaining: Run guarded native tests and verify selected USB causes no HTTP/DNS/SSDP/telemetry or second physical connection; validate bounded route retirement, dirty-draft protection and retired outcomes in actual runtime. Do not infer whole donor parity or electrical acceptance from Gate tests. @@ -2647,10 +2665,10 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. Original-byte SHA-256: `ff6c7b21f72bfb944d232c87210f8ffa139dfe016e8b5756f2582604489fffc4`. -- Target: `tests/protocol_test.cpp:68 [UTF8-LF sha256=4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144; anchor=Adapt donor matching-identity/request assertions]`. +- Target: `tests/protocol_test.cpp:76 [UTF8-LF sha256=b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04; anchor=Adapt donor matching-identity/request assertions]`. - Target: `desktop/src/terminal_ui.rs:1412 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn server_reboot_between_preflight_and_post_stops_without_replay()]`. -- Target: `desktop/src/peer_http.rs:1561 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_settings_pin_every_nested_request_and_verify_same_boot()]`. -- Target: `desktop/src/usb_table.rs:101 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=pub struct Operation]`. +- Target: `desktop/src/peer_http.rs:1567 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_settings_pin_every_nested_request_and_verify_same_boot()]`. +- Target: `desktop/src/usb_table.rs:102 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=pub struct Operation]`. - Retained: Actual fakePort matching/mismatched request and identity scenarios read fully and adapted to C++ peer validation and native same-host reboot/pinned-header/409 no-replay HTTP fixtures. - Retained: Old receipts stay in Events, not new peer's confirmed output. - Retained: Full session_test.go reread through EOF and live hash reverified. Admission revocation, peer mismatch and no-replay assertions adapted to actual native GUI HTTP loopback fixtures, not claims of importing Go fakePort acquisition/reset/ACK routing. @@ -2661,13 +2679,13 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Omitted/replaced code: `compact HELLO schemas/build stamp and DTR reset/inactive control-line tests`. Disposition: **pending**. Reason: Build stamp is not board/boot identity; numbered public generation negotiation conflicts with living API. Adapt additive identity and explicit one-shot reset policy with serial owner, without schema selectors/reset-on-connect. - Test-code evidence: `desktop/src/terminal_ui.rs:1484 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn shared_cli_mutation_inherits_pinned_epoch_headers()]`. - Test-code evidence: `tests/peer_fence_test.mjs:23 [UTF8-LF sha256=09291cb48a20e945aef09f5176eb9089db1bf7440fc45deb73daf9e832a456c4; anchor=Upload callbacks precede middleware]`. -- Test-code evidence: `desktop/src/peer_http.rs:1590 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_preflight_reboot_or_capability_loss_never_dispatches_mutation()]`. -- Test-code evidence: `desktop/src/peer_http.rs:1623 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_readback_from_new_boot_is_not_applied()]`. -- Test-code evidence: `desktop/src/peer_http.rs:1682 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_unfenced_mutation_fails_before_network_and_preserves_correlation()]`. -- Test-code evidence: `desktop/src/peer_http.rs:1607 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_server_boot_conflict_is_not_replayed()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1596 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_preflight_reboot_or_capability_loss_never_dispatches_mutation()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1629 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_readback_from_new_boot_is_not_applied()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1688 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_unfenced_mutation_fails_before_network_and_preserves_correlation()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1613 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_server_boot_conflict_is_not_replayed()]`. - Test-code evidence: `tests/web_access_fence_test.cpp:121 [UTF8-LF sha256=a6d3b4d5a9fd3703c6265d093acaa21bd2cb17a30cda92ba9b4e18848e322a72; anchor=Real async queue + real fence recheck]`. -- Test-code evidence: `desktop/src/usb_table.rs:842 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()]`. -- Test-code evidence: `desktop/src/usb_table.rs:735 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()]`. +- Test-code evidence: `desktop/src/usb_table.rs:843 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()]`. +- Test-code evidence: `desktop/src/usb_table.rs:736 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()]`. - Remaining: GUI HTTP and Web pin adoption implemented as bounded slices; native WebSocket/USB/mobile/standalone CLI/cloud fencing, remembered pairing and AVR-only boot identity remain pending; ESP32-S3 application not integrated. - Remaining: Port remaining useful serial lifecycle/priority/ACK/reset tests; fixtures/source/compile are not physical acceptance. @@ -2683,11 +2701,11 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Target: `firmware/esp/src/WebAccess.h:92 [UTF8-LF sha256=774b524f4cd81c003e4139d0bb6cf3353d987674bbfb49d7a1b989ee2a232294; anchor=bool peerAllowed(]`. - Target: `firmware/esp/application.ino:2077 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=bool authenticate()]`. - Target: `assets/web/peer-http.js:90 [UTF8-LF sha256=9613bb23bfa007afcde525d49a193b25b93788b0f24e6a0374ce4f49560f8f9e; anchor=function assertOwner(peer)]`. -- Target: `desktop/src/peer_http.rs:590 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=pub fn admit(]`. -- Target: `desktop/src/main.rs:845 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=fn scoped_http_request(]`. -- Target: `desktop/src/usb_table.rs:571 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=pub struct Admission]`. +- Target: `desktop/src/peer_http.rs:590 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=pub fn admit(]`. +- Target: `desktop/src/main.rs:847 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=fn scoped_http_request(]`. +- Target: `desktop/src/usb_table.rs:572 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=pub struct Admission]`. - Target: `mobile/lib/command_readback.dart:14 [UTF8-LF sha256=c920c79353178bfb46aaed6e80a467951b9131f7f3cab0653d970f6408d8703c; anchor=bool commandReadbackMatches(]`. -- Target: `desktop/src/cell_batch.rs:15 [UTF8-LF sha256=e1c9e090e67ac7d1da3487a8219067d0a4bc9fd471a13d6a24f7a9462bead947; anchor=pub struct Correlation]`. +- Target: `desktop/src/cell_batch.rs:16 [UTF8-LF sha256=453787112bc914d571886b1a64a1244552d2041548bf0ea97f65e448dce7b389; anchor=pub struct Correlation]`. - Target: `desktop/src/realtime.rs:8 [UTF8-LF sha256=134977c4f18998b92ebb2e8d763147a1c0eeb2039c019a603cb7de712502fa01; anchor=pub struct Intent]`. - Target: `mobile/lib/command_wire.dart:49 [UTF8-LF sha256=5b60bf4d43874d5ef071dbc118cbbc581c2c59d1af8491116aba56570298a3cb; anchor=String commandPacket(]`. - Target: `libraries/BoardCore/src/CommandReceipts.h:8 [UTF8-LF sha256=061d79642fdeb1e07f528a63438ba466c3784fc96aef7ff9ca881508675dd2dc; anchor=class CommandReceipts]`. @@ -2698,7 +2716,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Target: `firmware/esp/src/BleRoutes.h:219 [UTF8-LF sha256=b89a7a050b6f1f4121d8de0809dfce67cca404170e40a252cce66e95e5aa7b5d; anchor=String bleRequest(]`. - Target: `services/remote-panel/gateway.mjs:12 [UTF8-LF sha256=6092a0b79c3277ef171d25e4228b42831eb06990689b84f40101b9b898ac872a; anchor=export class Gateway]`. - Target: `services/remote-panel/service.mjs:13 [UTF8-LF sha256=724a7a0167e09af540c7dc6329bd2cc7ae5ed7ce496dfeaa3297a1b6d06a3737; anchor=export function createPanel]`. -- Target: `desktop/src/peer_identity.rs:359 [UTF8-LF sha256=18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979; anchor=pub fn usb_introduction_error(]`. +- Target: `desktop/src/peer_identity.rs:360 [UTF8-LF sha256=bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2; anchor=pub fn usb_introduction_error(]`. - Retained: Lamp-background checkpoint reread all 916 canonical donor lines plus native HTTP admission/producer-envelope checks, selected serial lease and batch ACK correlation. Flutter peer-retirement/command admission/readback and lifecycle proof inspected after compact-footer change. New app-local CellBackgrounds command never enters board request queue or replay path. Only inspected consumers rebound; no new hardware/transport acceptance. - Retained: Actual Session.Request closing/context checks before and after admission adapted to TUI atomic stop checks before/after fresh preflight; no post-dispatch replay. - Retained: Full source read. Fail-closed identity checks strengthened with HTTP server-side board/boot fences; donor HELLO/build stamp is NOT a boot epoch. @@ -2730,21 +2748,21 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Omitted/replaced code: `WithRequestWriteGuard final transport admission;750ms strip ACK/background priority and active-opcode slot diagnostics`. Disposition: **pending**. Reason: Selected-method lease checks precede normal Rust serial writes, retaining the old physical-owner lease until resource drop. Native HTTP now adapts donor queued priority selection, but USB request-priority scheduling, reserved macro sequence and single-inflight opcode/sequence ACK ownership remain pending; OS-inflight bytes are non-retractable. Rust USB/PnP close/open cancellation, timing and no-network handoff still require runtime acceptance. - Omitted/replaced code: `Bluetooth transport is not Go serial acquisition or a complete firmware-file transport`. Disposition: **pending**. Reason: S3 has no Classic/SPP/audio hardware. UART DTR/reset/acquisition/quarantine and macro-priority mechanisms are not GATT operations; existing serial implementation is preserved, not removed. Direct BLE firmware binary transfer/raw pixel streaming, authenticated encrypted/bonded BLE, full donor serial suites and real phone/RF/coexistence/mirroring acceptance remain pending in issue #20; remote firmware jobs reuse the existing updater and require its network route. - Test-code evidence: `desktop/src/terminal_ui.rs:1136 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn same_hostname_reboot_revokes_drafts_and_old_receipts()]`. -- Test-code evidence: `desktop/src/peer_identity.rs:504 [UTF8-LF sha256=18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979; anchor=fn usb_introduction_error_preserves_actual_board_reason_without_suggesting_policy_bypass()]`. +- Test-code evidence: `desktop/src/peer_identity.rs:505 [UTF8-LF sha256=bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2; anchor=fn usb_introduction_error_preserves_actual_board_reason_without_suggesting_policy_bypass()]`. - Test-code evidence: `mobile/test/bridge_discovery_test.dart:37 [UTF8-LF sha256=1e650a1f6897c67ce9e87de864ff28ed98e0a818ca95ba6b413897b5cd99a905; anchor=Same-host board/boot replacement retires firmware owners synchronously]`. - Test-code evidence: `tests/peer_fence_test.mjs:23 [UTF8-LF sha256=09291cb48a20e945aef09f5176eb9089db1bf7440fc45deb73daf9e832a456c4; anchor=Upload callbacks precede middleware]`. - Test-code evidence: `tests/web_peer_http_test.mjs:24 [UTF8-LF sha256=db715ef84572ee0279db89cdb3bc5700bbd6e7ebe206a8fdedf335b60d60d048; anchor=Same-host reboot between draft creation and preflight]`. -- Test-code evidence: `desktop/src/peer_http.rs:1640 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_revocation_during_preflight_stops_before_write()]`. -- Test-code evidence: `desktop/src/peer_http.rs:1660 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_revocation_after_dispatch_reports_uncertainty_not_success()]`. -- Test-code evidence: `desktop/src/main.rs:887 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=// The mapping response identifies its own producer.]`. -- Test-code evidence: `desktop/src/peer_http.rs:1442 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_enveloped_read_needs_no_http_status_preflight()]`. -- Test-code evidence: `desktop/src/peer_http.rs:1459 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_foreign_or_previous_boot_response_is_never_adopted()]`. -- Test-code evidence: `desktop/src/peer_http.rs:1481 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_incomplete_or_invalid_envelope_is_not_legacy()]`. -- Test-code evidence: `desktop/src/peer_http.rs:1504 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_revoked_inflight_result_is_not_applied()]`. -- Test-code evidence: `desktop/src/peer_http.rs:1521 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_expired_queue_does_not_contact_device()]`. -- Test-code evidence: `desktop/src/peer_http.rs:1534 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_without_envelope_retains_both_legacy_status_fences()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1646 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_revocation_during_preflight_stops_before_write()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1666 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_revocation_after_dispatch_reports_uncertainty_not_success()]`. +- Test-code evidence: `desktop/src/main.rs:889 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=// The mapping response identifies its own producer.]`. +- Test-code evidence: `desktop/src/peer_http.rs:1448 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_enveloped_read_needs_no_http_status_preflight()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1465 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_foreign_or_previous_boot_response_is_never_adopted()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1487 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_incomplete_or_invalid_envelope_is_not_legacy()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1510 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_revoked_inflight_result_is_not_applied()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1527 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_expired_queue_does_not_contact_device()]`. +- Test-code evidence: `desktop/src/peer_http.rs:1540 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_without_envelope_retains_both_legacy_status_fences()]`. - Test-code evidence: `tests/web_access_fence_test.cpp:121 [UTF8-LF sha256=a6d3b4d5a9fd3703c6265d093acaa21bd2cb17a30cda92ba9b4e18848e322a72; anchor=Real async queue + real fence recheck]`. -- Test-code evidence: `desktop/src/usb_table.rs:1539 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn table_write_is_exact_boot_fenced_and_post_ack_values_are_not_assumed()]`. +- Test-code evidence: `desktop/src/usb_table.rs:1540 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn table_write_is_exact_boot_fenced_and_post_ack_values_are_not_assumed()]`. - Test-code evidence: `mobile/test/connection_lifecycle_test.dart:254 [UTF8-LF sha256=7c3e281d1e98ee1cf49e9116a0cc8c85a9adcc33683992d225b6258dcd94bce4; anchor=Lost post-ACK readback stops bulk without discarding a fresh workspace]`. - Test-code evidence: `desktop/src/ui/cell_table.rs:1866 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=Even identical values require the exact operation ID]`. - Test-code evidence: `desktop/src/realtime.rs:786 [UTF8-LF sha256=134977c4f18998b92ebb2e8d763147a1c0eeb2039c019a603cb7de712502fa01; anchor=fn realtime_actual_ws_worker_delivers_receipt_without_http_or_poll_tick()]`. @@ -2754,9 +2772,9 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O - Test-code evidence: `tests/cloud_command_guard_test.cpp:28 [UTF8-LF sha256=2de44ca916fe1670eba11edeb706e88dfdafc4994d0a9d07301a279ef71c0581; anchor=Receipts::Conflict]`. - Test-code evidence: `mobile/test/workspace_lifecycle_test.dart:422 [UTF8-LF sha256=537941477dab0a2460cf42aab9220a7baf8d1aecf36eb140b21179674985071e; anchor=Background/resume retains selection]`. - Test-code evidence: `mobile/test/realtime_transport_test.dart:74 [UTF8-LF sha256=ef8a5a39abe37c40e3393cdde5b3f012dbc5a7adfc2e2cd104571ca04cd5de7e; anchor=HTTP refresh cannot impersonate]`. -- Test-code evidence: `desktop/src/usb_table.rs:842 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()]`. -- Test-code evidence: `desktop/src/usb_table.rs:735 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()]`. -- Test-code evidence: `desktop/src/usb_table.rs:1411 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn actual_usb_worker_windows_read_latency_does_not_expire_large_capture]`. +- Test-code evidence: `desktop/src/usb_table.rs:843 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()]`. +- Test-code evidence: `desktop/src/usb_table.rs:736 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()]`. +- Test-code evidence: `desktop/src/usb_table.rs:1412 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn actual_usb_worker_windows_read_latency_does_not_expire_large_capture]`. - Test-code evidence: `tests/ble_wire_test.cpp:15 [UTF8-LF sha256=bf5675db9debf06160e8ef72d59e7c764bc3f88cde508cfcbb32a989f004c34e; anchor=int main()]`. - Test-code evidence: `tests/ble_firmware_test.mjs:130 [UTF8-LF sha256=7bfd1e524abb6303f16bc0d9bf75a80ba892876d9c72548575954de34fd8a4f0; anchor=BLE firmware integration source guards]`. - Test-code evidence: `tests/ble_storage_test.cpp:51 [UTF8-LF sha256=22f4c0e4fc0846492ddaa6c04a01e113ace607d86e9edeac1d2c69b8ee46a349; anchor=Do not retain an internal bulk-buffer fallback]`. @@ -3101,7 +3119,7 @@ Verdict: **parity-gap**. Revision: `b0111ae0c80dc34149ea1044de7dd5488920301b`. O ### Pealayer: `.github/dependabot.yml` -Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `fa4791635251ad7d5be26ce70d71a8e59aa7b814a4f09f2b5b749d8a49908225`. +Verdict: **scoped-improvement**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `fa4791635251ad7d5be26ce70d71a8e59aa7b814a4f09f2b5b749d8a49908225`. - Target: `.github/dependabot.yml:1 [UTF8-LF sha256=136887ba77b56544d0bcd367a31d2daaa7637ecdb8b997d63df6cb552d6f08e8; anchor=version: 2]`. - Retained: Actual donor weekly grouped github-actions and Cargo updates, with Cargo path adapted to the existing desktop workspace. @@ -3111,15 +3129,16 @@ Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cd ### Pealayer: `.github/workflows/ci-cd.yml` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `bba9a295ee7b59e318f76e0b6f6a80f0aec631e249f7d8c798f6c92c0bb7fd8c`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `2e5c933b7c1646d5cb26ddd8a10f88529de15bd205b525295858755d5044988b`. -- Target: `.github/workflows/build.yml:2 [UTF8-LF sha256=2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e; anchor=name: "🚀 Build · Test · Release"]`. -- Target: `tools/build-desktop.ps1:47 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=--test-threads=1]`. -- Target: `tools/ci-checks.mjs:278 [UTF8-LF sha256=ccc3d394d143d99959677140fe0321c1a9826f6963de91433dd30e7a51c9ec8a; anchor=export function runChecks]`. +- Target: `.github/workflows/build.yml:2 [UTF8-LF sha256=88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861; anchor=name: "🚀 Build · Test · Release"]`. +- Target: `tools/build-desktop.ps1:49 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=--test-threads=1]`. +- Target: `tools/ci-checks.mjs:280 [UTF8-LF sha256=c33954b785a09f8bf3b469fdf9a8b12133c75bf1198fa76ac050678c5ceaa64c; anchor=export function runChecks]`. - Target: `tools/prepare-release.mjs:18 [UTF8-LF sha256=820cefc9698d46f95cf39b4cd667494a05cd03d119a1c54f9892b2a35d8b824b; anchor=export function firmwareManifest]`. - Retained: Actual donor branch/PR/tag/dispatch/merge-group triggers, concurrency policy, pinned actions without checkout credentials, health-before-build jobs, timeouts, Rust cache reuse, locked tests/builds, packaging, curated notes, manifest/checksums/provenance and aggregate results adapted to current Windows/ESP/AVR/Android targets. - Retained: Release content is gated on all supported-target builds, created as an immutable draft prerelease, with the matched S3/AVR buffered pair and raw HTTPS update manifests. Explicit legacy packaging is preserved but the overflowing ESP8266 image is not promised as a release output. Untrusted PRs do not execute publishing code with a write token. - Retained: Actual donor serial native test execution, isolated test configuration and RUST_BACKTRACE=1 restored. Runtime harness flags are separated from compile jobs; immediate panic output remains available even if a later test aborts before its summary. +- Retained: Reread the full workflow at 10fc6604 and its exact diff from the previous inventory: the only added step verifies pinned canonical opcode bindings against the owner before builds. Pakar includes the equivalent mandatory upstream check; newly inventoried donor files remain pending unless separately compared. - Omitted/replaced code: `LIBMPV_WINDOWS_RELEASES_API_URL, MPV_DLL_PATH, Windows GNU libmpv linking, Linux/macOS mpv dependencies and standalone pealayer-downloader`. Disposition: **not-applicable**. Reason: Pakar deliberately excludes the media runtime and standalone media utility. Copying this setup would introduce forbidden mpv and unrelated package dependencies. - Omitted/replaced code: `macOS Intel/Apple silicon and Linux native platform matrix/packages`. Disposition: **pending**. Reason: Current accepted native target is Windows; firmware and Android use Linux runners. Full donor reread includes the new scripts/run-ci-rust-tests.sh macOS sampling helper and 15-minute native test step. Linux/macOS native matrix and diagnostic sampling remain useful pending work; they require actual Pakar platform coverage, not donor's unrelated acceptance. - Omitted/replaced code: `UPX checksum-locked packing and packed native package smoke/resource checks`. Disposition: **pending**. Reason: Existing Windows wrappers preserve donor resource/donor/cache gates and CLI runtime tests, but Pakar has no accepted compressed native package probe. Do not call a source or CLI test full packed GUI runtime acceptance. @@ -3130,7 +3149,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `.github/workflows/codeql.yml` -Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `fc3c298cf966d77f50b575614b4c26f24f1606459f07749a46880cd482f1cb53`. +Verdict: **equivalent-behavior**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `fc3c298cf966d77f50b575614b4c26f24f1606459f07749a46880cd482f1cb53`. - Target: `.github/workflows/codeql.yml:2 [UTF8-LF sha256=0ced3b7ee236102d9322f20ee0e4a37347aae41d791d48c38731f96daf4bdfba; anchor=name: "🛡️ Security · CodeQL"]`. - Retained: Actual donor Actions and JavaScript matrix, no-build security-extended queries, pinned checkout/CodeQL actions, no persisted checkout credentials, PR/main/schedule/dispatch/merge-group triggers, cancellation, timeouts and fail-closed aggregate summary. @@ -3139,7 +3158,7 @@ Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1c ### Pealayer: `assets/themes/palettes.json` -Verdict: **equivalent-file**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `11990ef4b31ba6eb1275c6e76b9156e0f05bacb2f59a8fa0372b778c6caf1501`. +Verdict: **equivalent-file**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `11990ef4b31ba6eb1275c6e76b9156e0f05bacb2f59a8fa0372b778c6caf1501`. - Target: `assets/themes/palettes.json:2 [UTF8-LF sha256=11990ef4b31ba6eb1275c6e76b9156e0f05bacb2f59a8fa0372b778c6caf1501; anchor="studio"]`. - Retained: Byte-identical Studio/Native light/dark JSON catalog, all fourteen semantic roles. @@ -3150,7 +3169,7 @@ Verdict: **equivalent-file**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6a ### Pealayer: `build.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `68fb1bdd9e7c7523ab303e37001d3a5252dcb03abe85e489432fe913be7b2e0f`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `68fb1bdd9e7c7523ab303e37001d3a5252dcb03abe85e489432fe913be7b2e0f`. - Target: `desktop/build.rs:16 [UTF8-LF sha256=a7c694cdd2cfd17e3359db8970ce9ffd7db699110145543dde7c73703ca017ef; anchor=brand_image::native_icon_bytes(brand_image::icon_bytes())]`. - Target: `docs/BRANDING-PARITY.md:60 [UTF8-LF sha256=0bfa8122dc9d6034551304f2fed472ddebcff170e14a23f63011177aab75d2d3; anchor=## Explicit unfinished useful code and reasons]`. @@ -3162,7 +3181,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `docs/releases/next.md` -Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `71f81fa503d0494a85dd700e16cabdb23e1a6dcd6abbb0abc1af47000584b3f7`. +Verdict: **equivalent-behavior**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `71f81fa503d0494a85dd700e16cabdb23e1a6dcd6abbb0abc1af47000584b3f7`. - Target: `docs/releases/next.md:1 [UTF8-LF sha256=9e83c4d1a348af3bc275a5ec924abea7317ba22d1f0e66eac63d6f5499efbeec; anchor=# PakarController development packages]`. - Retained: Actual donor curated preview notes explicitly distinguish a development milestone from stable-release, physical and platform acceptance. @@ -3171,7 +3190,7 @@ Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1c ### Pealayer: `docs/REVIEW-COMMENT-AUDIT.md` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `7a91d9fa8778383ee37e33d861ceebc5ab210e46bedab6af8be82d56c27523cc`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `7a91d9fa8778383ee37e33d861ceebc5ab210e46bedab6af8be82d56c27523cc`. - Target: `tools/audit-github-conversations.mjs:59 [UTF8-LF sha256=0bd597414af4e28668d2da96e250a27a99550fff9b86e5d58136b7de583a1dcf; anchor=export function collect]`. - Target: `docs/GITHUB-COORDINATION.md:1 [UTF8-LF sha256=64a078407d296db907e8645e07dc25a6392168cb1cb2e39cc8bb18a9bce01f0d; anchor=# Conversation-aware integration]`. @@ -3183,11 +3202,11 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `docs/superpowers/plans/2026-09-28-windows-taskbar-and-tray-suite.md` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `033a82778e4ed8258bbbf99600d16039f523043386e302032d6df8849624ea9f`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `033a82778e4ed8258bbbf99600d16039f523043386e302032d6df8849624ea9f`. - Target: `desktop/src/platform/windows_tray.rs:17 [UTF8-LF sha256=94bd79acba0dd4d572222cb064e451a274ee38579a392c95c56d997779cc35bf; anchor=struct TooltipSync]`. - Target: `desktop/src/platform/windows_notifications.rs:158 [UTF8-LF sha256=71f2254825ba2b16d83696ce0e0cf74ec7c95eedda5f60e1c3d167826693ec1a; anchor=fn tooltip_data(]`. -- Target: `desktop/src/main.rs:5202 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=event_log.failure("Windows tray tooltip", &error)]`. +- Target: `desktop/src/main.rs:5206 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=event_log.failure("Windows tray tooltip", &error)]`. - Retained: Full donor plan read through EOF as source requirements, not trusted commands. Generic existing tray lifecycle/menu/disposal retained; actual windows.rs NIM_MODIFY/TIP sections read and adapted to the owned GUID rather than duplicate registration. Tooltip Shell acceptance is separated from object presence; failed writes retain pending latest state with bounded retry/incident recovery and observed restart epoch invalidation. - Omitted/replaced code: `Playback percent/error/paused inputs, media thumbnail toolbar Previous/Play/Next/Mute and video-only iconic clipping`. Disposition: **not-applicable**. Reason: Pakar is explicitly mpv-free and owns controller operations, not playback/chapter/video. No synthetic media percentages or nonexistent actions are imported; actual pending-operation activity remains. - Omitted/replaced code: `Full root taskbar initialization/retry, thumbnail toolbar lifecycle, visible tray/menu/notification clicks and all Windows shell suite acceptance`. Disposition: **pending**. Reason: This fixes only GUID-bound tooltip synchronization on an already owned tray object. Mock clocks, NOTIFYICONDATA assertions and observed restart messages cannot certify complete root shell readiness or user-visible action delivery. @@ -3199,7 +3218,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `docs/verification/LOCAL-WORKSPACE-HYGIENE.md` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `c024125307f6e466c924e1b8874f869a575b085b2a05bb4493bfd1d1e9f38975`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `c024125307f6e466c924e1b8874f869a575b085b2a05bb4493bfd1d1e9f38975`. - Target: `docs/REUSE-PREFLIGHT.md:42 [UTF8-LF sha256=13521024e5b18f314abcc71af4e9c722262a7cb04c17f03155b1e88d0cf0972e; anchor=Mandatory sequence on every task]`. - Retained: Actual canonical-cache/stable-staging/preservation/blocked-operation and separate runtime-acceptance guidance read and adopted in mandatory continuation policy and tooling. @@ -3212,7 +3231,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `docs/WINDOWS-SHELL-RECOVERY.md` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `57fbd904e18d8f0036dd67e2c866d357ab282075689a1cbf6b38a64270875492`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `57fbd904e18d8f0036dd67e2c866d357ab282075689a1cbf6b38a64270875492`. - Target: `desktop/src/platform/windows_tray.rs:14 [UTF8-LF sha256=94bd79acba0dd4d572222cb064e451a274ee38579a392c95c56d997779cc35bf; anchor=Shell acceptance, not object presence]`. - Target: `desktop/src/ui/shell.rs:1332 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=value["tray_shell"]]`. @@ -3228,7 +3247,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `README.md` -Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `4e78a6c486bfc7d78adc6d34552bddfd67c89997edb8d2bae0b46e70c705dcb6`. +Verdict: **scoped-improvement**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `4e78a6c486bfc7d78adc6d34552bddfd67c89997edb8d2bae0b46e70c705dcb6`. - Target: `README.md:7 [UTF8-LF sha256=6ef2bde812ca8aaf889f5ad1c8313ae6e4e5ac079b93424ef4be6e2cdd007da5; anchor=Connected boards. One contextual control workspace.]`. - Target: `tools/generate-readme-artwork.mjs:1 [UTF8-LF sha256=2162d1ad3760618260eb9d659dfebb6651ad1e5f5b4eb2c37c12cde1ef7ff8d2; anchor=README uses the same bytes]`. @@ -3240,7 +3259,7 @@ Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cd ### Pealayer: `scripts/capture-visible-window-windows.ps1` -Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `94bc5aed91407818905412d50dde72ea669f3c799ef56a043dd0a81befdce47f`. +Verdict: **scoped-improvement**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `94bc5aed91407818905412d50dde72ea669f3c799ef56a043dd0a81befdce47f`. - Target: `tools/capture-window-windows.ps1:75 [UTF8-LF sha256=c9f48604a224599ea0252638558e80f4025beb4b53834112af9e48af03ae73d0; anchor=public static extern bool PrintWindow]`. - Retained: Actual donor PrintWindow P/Invoke, minimized/window-bounds validation, DPI awareness, System.Drawing PNG lifecycle and read-only behavior. @@ -3251,7 +3270,7 @@ Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cd ### Pealayer: `scripts/check-crate-boundary.mjs` -Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `da9b469ac596e6eb1999e4d499742a51ebf289335285549569116c1124963e38`. +Verdict: **scoped-improvement**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `da9b469ac596e6eb1999e4d499742a51ebf289335285549569116c1124963e38`. - Target: `tools/check-crate-boundary.mjs:10 [UTF8-LF sha256=4a8fbcecaf424460c051de61d5e44658532ec64527460ce21d4d86ec95c0550e; anchor=export function checkCrateBoundary]`. - Retained: Actual donor module extraction/intersection, thin executable and MSVC duplicate resource linkage guards imported/adapted. Native build wrapper and CI execute this read-only guard before compiling. @@ -3262,7 +3281,7 @@ Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cd ### Pealayer: `scripts/libmpv-windows.ps1` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `ab6e48f3e0a55a2d86ad1dbb19c01a23c751891cb5a7ed61875a21b1e52645e5`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `ab6e48f3e0a55a2d86ad1dbb19c01a23c751891cb5a7ed61875a21b1e52645e5`. - Target: `tools/windows-build-host.ps1:16 [UTF8-LF sha256=7da123594866f591b490db084496b4bef75b2db3f6e0ac5b425b8d86e9401e9b; anchor=function Get-PakarCargoTargetDirectory]`. - Target: `tools/windows-build-host.ps1:46 [UTF8-LF sha256=7da123594866f591b490db084496b4bef75b2db3f6e0ac5b425b8d86e9401e9b; anchor=function Test-PakarFileContentEqual]`. @@ -3279,7 +3298,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `scripts/package-probe-windows.ps1` -Verdict: **equivalent-file**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `f4516884990ad76c020fbc6534d902c4949abae0b48da8ea40c008afa44dfd4f`. +Verdict: **equivalent-file**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `f4516884990ad76c020fbc6534d902c4949abae0b48da8ea40c008afa44dfd4f`. - Target: `tools/package-probe-windows.ps1:27 [UTF8-LF sha256=71604ab464776891dbc95db7123218c22b3ede09ce2835fe4659d75c6d0b9d5e; anchor=function Invoke-PackageProbe]`. - Target: `tools/replace-desktop.ps1:71 [UTF8-LF sha256=95a7f84383869622426e97d7c21d579ce93fd5c55d2bd4607697b6b352bbe525; anchor=$reply=Invoke-PackageProbe]`. @@ -3291,7 +3310,7 @@ Verdict: **equivalent-file**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6a ### Pealayer: `scripts/package-windows.ps1` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `5651709cfb58c2f1e0d7052b3ca604df154563ce552498a066c6e67b8f9baedf`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `5651709cfb58c2f1e0d7052b3ca604df154563ce552498a066c6e67b8f9baedf`. - Target: `tools/windows-build-host.ps1:62 [UTF8-LF sha256=7da123594866f591b490db084496b4bef75b2db3f6e0ac5b425b8d86e9401e9b; anchor=function Assert-PakarPackageSourceStable]`. - Target: `tools/stage-desktop.ps1:38 [UTF8-LF sha256=1bbfe87fe8c9e6936e140c7911c5493f5937eceac1402ca386661dcabb40c4bd; anchor=Invoke-PackageProbe]`. @@ -3307,9 +3326,9 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `scripts/run-windows.ps1` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `013e5c67e227ed851f8a3d26b27654e38c8816edca2965381bbb1b48d10a750d`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `013e5c67e227ed851f8a3d26b27654e38c8816edca2965381bbb1b48d10a750d`. -- Target: `tools/build-desktop.ps1:33 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Get-PakarCargoTargetDirectory]`. +- Target: `tools/build-desktop.ps1:35 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Get-PakarCargoTargetDirectory]`. - Retained: Shared resolver call and locked native build flow mapped to Pakar wrapper. Existing canonical cache is reused; explicit Check/Test/Release and storage/reuse gates avoid unnecessary links. - Omitted/replaced code: `RustBin machine/user/toolchain executable fallback selection and rustc -vV host detection`. Disposition: **pending**. Reason: Pakar currently uses installed Cargo from PATH. Alternate host/toolchain executable fallback and recorded host triple are reusable infrastructure and remain unported. - Omitted/replaced code: `libmpv host resolution/environment/profile and DLL copy`. Disposition: **not-applicable**. Reason: These operations configure the excluded mpv renderer. Pakar uses its own mpv-free linked dependencies. @@ -3320,10 +3339,10 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `scripts/storage-hygiene.ps1` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `0d8fdeb3e15fb52b917784d4cb3875c68bc12c6c6ed78cd16f2ff8ee3561d89c`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `0d8fdeb3e15fb52b917784d4cb3875c68bc12c6c6ed78cd16f2ff8ee3561d89c`. - Target: `tools/storage-hygiene.ps1:11 [UTF8-LF sha256=3d1091c2761add106a5104f671bf12793c9621803f38bd898b193f597eabb329; anchor=function Get-DirectorySummary]`. -- Target: `tools/build-mobile.ps1:85 [UTF8-LF sha256=43982d06947af7703e0374aa9092ddd62c032fc0643445c3a21cab87206ef072; anchor=$taskCache=Get-DirectorySummary]`. +- Target: `tools/build-mobile.ps1:87 [UTF8-LF sha256=0c5eee09b25ad17fc062555da65024fc84a9d8cc7c4a057d6d2e8a53d2ed8fb4; anchor=$taskCache=Get-DirectorySummary]`. - Retained: Actual Get-DirectorySummary imported into tools/storage-hygiene.ps1 with Pakar canonical cache, board cache, mobile build and stable staging paths. Read-only by default and warns at the existing 8 GiB budget; logical sizes explicitly distinguished from disk allocation or wear. - Retained: build-mobile.ps1 now calls the actual imported summary for its sole mobile/build cache and verifies free space before compilation. Existing SDK path comes from mobile README; no auto-install, dependency upgrade, cache relocation or clean. - Omitted/replaced code: `PruneRepositoryTarget exact-child/git-ignore/allowed-child/running-process checks and recursive deletion`. Disposition: **replaced**. Reason: New explicit user authorization permits obsolete debug-only deletion. Adapt the actual donor exact-child, ignore, allowed-content, reparse and writer checks to the owned desktop/target/debug; add tracked-file refusal and Plan. Never remove the target root, release cache, settings or rollback. The verified 10.408 GiB debug tree was pruned; stronger guards keep the read-only default intact. @@ -3336,7 +3355,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `scripts/update-screenshots-windows.ps1` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `48507f6e9395c8c312c5557db729d05ed8d6a83e980d57a9b01e77ea525db287`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `48507f6e9395c8c312c5557db729d05ed8d6a83e980d57a9b01e77ea525db287`. - Target: `tools/capture-window-windows.ps1:75 [UTF8-LF sha256=c9f48604a224599ea0252638558e80f4025beb4b53834112af9e48af03ae73d0; anchor=public static extern bool PrintWindow]`. - Retained: Actual PrintWindow(PW_RENDERFULLCONTENT), near-uniform-black sampler, GetWindowDC/BitBlt/screen fallback and PID/dimension validation imported. Pakar fixture supplies isolated profile/selected surfaces; app-owned framebuffer capture does not depend on WGC. @@ -3350,7 +3369,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/application_shortcuts.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `1f173bef8acc2904eac5b0a91407aa4f7629ce65c88ea3a8ac78f8c13321d203`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `1f173bef8acc2904eac5b0a91407aa4f7629ce65c88ea3a8ac78f8c13321d203`. - Target: `desktop/src/application_shortcuts.rs:13 [UTF8-LF sha256=a970f63b589923be7a11260ad192a921e79b0fd33b7faeb631c6ab99d94750c1; anchor=pub struct ApplicationShortcuts]`. - Target: `desktop/src/config.rs:186 [UTF8-LF sha256=b84801a85e31a44b2691bd5f6ccefea0106d799952b0fb61e2d6162ee11b9414; anchor=pub application_shortcuts:]`. @@ -3366,7 +3385,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/branding.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `ee6ef94e685a86e72258e4609692a9fefa516d5935d75d15a5abe0ee42ada3c1`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `ee6ef94e685a86e72258e4609692a9fefa516d5935d75d15a5abe0ee42ada3c1`. - Target: `desktop/src/branding.rs:75 [UTF8-LF sha256=13a85d887a09acb79aed6acb7b8c0e38f9ea1ba2e35e9306c8bf7558211bc211; anchor=pub fn icon_data_from_bytes]`. - Target: `desktop/src/brand_image.rs:25 [UTF8-LF sha256=ab71607dcde16d7af14b0a292982f902186dacf6b5b78b3f4c983e37464428e9; anchor=pub fn native_icon_bytes]`. @@ -3389,7 +3408,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/cli.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `412b553fcdcd4436075af6bc93c956a4b7d9ac93a552a3458f2afabb8aa1448f`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `412b553fcdcd4436075af6bc93c956a4b7d9ac93a552a3458f2afabb8aa1448f`. - Target: `desktop/src/cli_output.rs:28 [UTF8-LF sha256=135bdb2862fb8e1946164e685059aadbb12e19db096056224a16632e8333bc89; anchor=pub fn parse_cli_output(]`. - Retained: Actual format_help_message and PrintHelp/PrintVersion flag branches adapted with native short/long help/version assertions; terminate before config, network, GUI ownership and windows. Share device command help with existing TUI instead of duplicate stale strings. @@ -3401,10 +3420,10 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/diagnostics.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `92b065a4d8ff01ae3b4a81fa11fb6e5b671f85bb1f667be6af389e692fef9f71`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `92b065a4d8ff01ae3b4a81fa11fb6e5b671f85bb1f667be6af389e692fef9f71`. - Target: `desktop/src/cli_console.rs:26 [UTF8-LF sha256=bdf70294c5d4a40007baaf637a8ee26a8576f6dfd03604274fdd9a7d3de2a4ac; anchor=fn write_output(]`. -- Target: `desktop/src/main.rs:5813 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=cli_println!("{reply}")]`. +- Target: `desktop/src/main.rs:5817 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=cli_println!("{reply}")]`. - Target: `desktop/src/terminal_ui.rs:994 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=cli_eprintln!(]`. - Retained: Lamp-background checkpoint scoped rereview of actual cli_output/write_cli_line and complete Pakar cli_console.rs. New explicit CLI option retains inherited pipe handles and fallible non-panicking output; GUI launches never attach or allocate a terminal. Inspected consumer hashes are rebound without claiming unrelated diagnostic/reporting parity. - Retained: Read complete152-line6485-byte donor through EOF. Actual cli_println/cli_eprintln, cli_output, write_cli_line and disconnected_cli_output_returns_an_error_without_panicking are adapted into cli_console. All primary native stdout/stderr call sites use fallible writes, including IPC, help/version, shell errors, management and TUI startup. Partial print support retains the existing table text interface without adding newline artifacts. @@ -3418,9 +3437,9 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/main.rs` -Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `452eb004c52bdcff6936de5602cfdddf5c925d58db9e1e48220fc9a21075b696`. +Verdict: **equivalent-behavior**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `452eb004c52bdcff6936de5602cfdddf5c925d58db9e1e48220fc9a21075b696`. -- Target: `desktop/src/main.rs:2 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=#![cfg_attr(windows, windows_subsystem = "windows")]]`. +- Target: `desktop/src/main.rs:2 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=#![cfg_attr(windows, windows_subsystem = "windows")]]`. - Target: `desktop/src/cli_console.rs:69 [UTF8-LF sha256=bdf70294c5d4a40007baaf637a8ee26a8576f6dfd03604274fdd9a7d3de2a4ac; anchor=pub fn prepare(]`. - Target: `desktop/src/application_identity.rs:3 [UTF8-LF sha256=c37a32df5c00a1cc559c58d226b87d6e9756e7d837b56488646bd0ecc54f26bb; anchor=pub const WINDOWS_APP_ID]`. - Target: `desktop/src/platform/windows_jump_list.rs:13 [UTF8-LF sha256=847796332bd1ba7dd3c51a38a1699b0881ae7efe29249d8129de00d2a481d841; anchor=wide_null(crate::application_identity::WINDOWS_APP_ID)]`. @@ -3435,7 +3454,7 @@ Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1c ### Pealayer: `src/messaging.rs` -Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `44ba995614f2acc3230f6adc13c00500e6844db81aa36d5e60e7eeb9e90d6f9f`. +Verdict: **scoped-improvement**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `44ba995614f2acc3230f6adc13c00500e6844db81aa36d5e60e7eeb9e90d6f9f`. - Target: `desktop/src/messaging.rs:83 [UTF8-LF sha256=57e357298d9dd8ae515a21bd13a4959ef77e684b345aed02da9dab818f5a204c; anchor=pub fn publish(]`. - Target: `desktop/src/ui/shell.rs:1309 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=value["messages"]]`. @@ -3450,7 +3469,7 @@ Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cd ### Pealayer: `src/network.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `22abaf1ca05c64d7e694b7b1d8216904df23cb84f47a0d23c6e91e78d40b86f2`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `22abaf1ca05c64d7e694b7b1d8216904df23cb84f47a0d23c6e91e78d40b86f2`. - Target: `desktop/src/platform/lan_discovery.rs:27 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=pub struct Advertiser]`. - Target: `desktop/src/ui/preferences.rs:500 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=Enable API bridge / repeater]`. @@ -3461,7 +3480,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/platform/window_icons.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `63bbaa244728a2fb4bd53ad5c35f7ff4b95790e70358d47c34ae704ea79d4a4e`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `63bbaa244728a2fb4bd53ad5c35f7ff4b95790e70358d47c34ae704ea79d4a4e`. - Target: `desktop/src/platform/windows_window_icons.rs:138 [UTF8-LF sha256=bc430351f14d15d6559e6f1dd8a593329c1e05cf7661278856d959b9ab539f6b; anchor=pub fn apply(]`. - Target: `desktop/src/ui/shell.rs:1167 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=desktop.set_icon(&icon)]`. @@ -3474,7 +3493,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/platform/windows_quick_actions.rs` -Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `35f6de708a0e402f6958a4d8feeead5037b42174286050ddc98c494d4173e4cb`. +Verdict: **equivalent-behavior**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `35f6de708a0e402f6958a4d8feeead5037b42174286050ddc98c494d4173e4cb`. - Target: `desktop/src/platform/windows_quick_actions.rs:15 [UTF8-LF sha256=432e49b73bdd263fd21de74cdded3de2115605f203f4f3a455e1e2d8553cc0a3; anchor=pub const WINDOWS_QUICK_ACTIONS]`. - Retained: Actual typed action/resource catalog, equality traits, explicit negative resource-index selection, Preferences, Exit and generic Toggle fullscreen. Controller actions share the launch/IPC dispatcher and resource compiler. @@ -3484,7 +3503,7 @@ Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1c ### Pealayer: `src/platform/windows_shell_icons.rs` -Verdict: **equivalent-file**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `e1d8793f8f1697f2030bc407f51e48cab4063964c051f2e21d1f60ae3349732a`. +Verdict: **equivalent-file**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `e1d8793f8f1697f2030bc407f51e48cab4063964c051f2e21d1f60ae3349732a`. - Target: `desktop/src/platform/windows_shell_icons.rs:45 [UTF8-LF sha256=e1d8793f8f1697f2030bc407f51e48cab4063964c051f2e21d1f60ae3349732a; anchor=pub fn shell_icon_ico]`. - Retained: Byte-identical actual Phosphor rasterizer, centered glyph coverage, all seven ICO resolutions, bottom-up BGRA, DWORD-aligned AND masks and explicit directory offsets. Pakar build.rs keeps it for semantic quick-action assets; application PE/window/tray artwork now uses the shared master and actual Pealayer branding conversion. @@ -3493,7 +3512,7 @@ Verdict: **equivalent-file**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6a ### Pealayer: `src/server/discovery.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `a707a76b8424353a304ec28e344e467e89823b81c1f4dca321ec3b7060069c6c`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `a707a76b8424353a304ec28e344e467e89823b81c1f4dca321ec3b7060069c6c`. - Target: `desktop/src/platform/lan_discovery.rs:27 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=pub struct Advertiser]`. - Target: `desktop/src/platform/discovery.rs:174 [UTF8-LF sha256=126098720cf4b0d91a74e7147b41954f2361960f4ae7d210896f8c762ae24fd3; anchor=pub fn ssdp_locations]`. @@ -3505,13 +3524,13 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/board_info.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `ab1c99e674e902e37626963e2dd5cf7d993965334411d5e33dafd1ea2bf79e51`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `ab1c99e674e902e37626963e2dd5cf7d993965334411d5e33dafd1ea2bf79e51`. - Target: `desktop/src/capabilities.rs:7 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=pub struct Manifest]`. - Target: `desktop/src/ui/shell.rs:1062 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn synchronize_context(]`. - Target: `desktop/src/ui/device_settings.rs:23 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=pub(crate) fn available(]`. - Target: `docs/DEVICE-CONTEXT.md:84 [UTF8-LF sha256=3d7c4a2b05e71ed13fc0f048d852c84d31b52cb1cf63e76180591a6f17a22fe8; anchor=## Exact reuse and remaining useful code]`. -- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction]`. +- Target: `desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction]`. - Target: `desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(]`. - Target: `mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(]`. - Target: `mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences]`. @@ -3530,7 +3549,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O - Test-code evidence: `desktop/src/capabilities.rs:605 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=fn no_profile_or_individual_ack_means_no_controls]`. - Test-code evidence: `tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute]`. - Test-code evidence: `tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]]`. -- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings]`. +- Test-code evidence: `desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings]`. - Test-code evidence: `mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback]`. - Test-code evidence: `tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of []`. - Remaining: Typed PCController adapter, donor tests and native runtime proof remain #10/#3/#6. No whole-file equivalence or application superiority claimed. @@ -3539,7 +3558,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/color_picker.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `fe2bf96c968d83874903f5d06085775f5787cf24467fb0c7be3fcf53077c1aa4`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `fe2bf96c968d83874903f5d06085775f5787cf24467fb0c7be3fcf53077c1aa4`. - Target: `desktop/src/ui/color_picker.rs:25 [UTF8-LF sha256=3a42e1d960fab77e1496899d7c708882f5db1ece1e92c01bd3192bc3e9eef0d5; anchor=pub fn remember_color(]`. - Target: `desktop/src/ui/color_picker.rs:243 [UTF8-LF sha256=3a42e1d960fab77e1496899d7c708882f5db1ece1e92c01bd3192bc3e9eef0d5; anchor=pub fn accent_picker(]`. @@ -3558,7 +3577,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/control_density.rs` -Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `690a964825638da4272550f389a948ad62b5947bad03df8aaee60de49c1325ed`. +Verdict: **equivalent-behavior**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `690a964825638da4272550f389a948ad62b5947bad03df8aaee60de49c1325ed`. - Target: `desktop/src/ui/control_density.rs:7 [UTF8-LF sha256=d5e8b6ae76c101f6473297f4305061ca8b5d83a7e1f4137850383a66b9b1ff6c; anchor=pub fn configure(style: &mut egui::Style, density: UiControlDensity)]`. - Target: `desktop/src/config.rs:38 [UTF8-LF sha256=b84801a85e31a44b2691bd5f6ccefea0106d799952b0fb61e2d6162ee11b9414; anchor=pub enum UiControlDensity]`. @@ -3576,7 +3595,7 @@ Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1c ### Pealayer: `src/ui/controls.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `f5211d73c38438f9cff2543ac234965a8dabd26f4a532fb8b8ecf51248fc0a56`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `f5211d73c38438f9cff2543ac234965a8dabd26f4a532fb8b8ecf51248fc0a56`. - Target: `desktop/src/ui/cell_table.rs:368 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn find_field(]`. - Target: `desktop/src/ui/cell_table.rs:394 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn table_helper(]`. @@ -3598,7 +3617,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/dialog.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `8a396d67862578f8727e43a952e82120b20c9c582ebcc5366ab0968ba8f704d8`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `8a396d67862578f8727e43a952e82120b20c9c582ebcc5366ab0968ba8f704d8`. - Target: `desktop/src/ui/preferences.rs:364 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=let action_height = super::control_density::height(ui).max(dialog::ACTION_HEIGHT);]`. - Target: `desktop/src/ui/cell_table.rs:725 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn manager_selector(]`. @@ -3648,7 +3667,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/dropdown.rs` -Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `134f1613df05c9db44f8ccd178981a8eca4fb6c254ced6466229afca66b40ee9`. +Verdict: **scoped-improvement**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `134f1613df05c9db44f8ccd178981a8eca4fb6c254ced6466229afca66b40ee9`. - Target: `desktop/src/ui/dropdown.rs:398 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=pub trait DropdownUiExt]`. - Target: `desktop/src/ui/cell_table.rs:763 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn cell_order_controls(]`. @@ -3682,7 +3701,7 @@ Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cd ### Pealayer: `src/ui/elegance_theme.rs` -Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `8d11f915ccf56e5ab67232ceac7432051437484d1faecacabab62ec5403d63bd`. +Verdict: **equivalent-behavior**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `8d11f915ccf56e5ab67232ceac7432051437484d1faecacabab62ec5403d63bd`. - Target: `desktop/src/ui/elegance_theme.rs:23 [UTF8-LF sha256=a494def22553b0c21b4bb9b2f786f9d117b26ed163b2a254f0ec43f3f979556f; anchor=pub fn sync_elegance_theme(ctx: &Context)]`. - Retained: Read all 321 donor lines through EOF. Pakar retains the actual host-style-preserving Elegance adapter: palette caching, opacity, WCAG 4.5:1 filled-action correction, typography, radius and spacing derivation are unchanged. All three donor tests are now imported and execute against Pakar's real configuration owner. @@ -3694,7 +3713,7 @@ Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1c ### Pealayer: `src/ui/i18n.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `811a48221c47c903c1d70ca904ead90a7a6b7f5ee0ba9a5f26a7e60dd30a75c3`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `811a48221c47c903c1d70ca904ead90a7a6b7f5ee0ba9a5f26a7e60dd30a75c3`. - Target: `desktop/src/ui/i18n.rs:6 [UTF8-LF sha256=0f06c9f2f84e5710fe5bbea7a83221c0c527e61ba52ab0b63ee032974ced6739; anchor=pub(crate) fn configure_ui_fonts]`. - Target: `desktop/src/ui/dialog.rs:18 [UTF8-LF sha256=854b8e1ca332650ad9964cb3e36f6a6304607502e953fa1bdf660bafb00f117f; anchor=pub fn singleline_text_edit]`. @@ -3716,7 +3735,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/icons.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `cd56a5849a0be621d8472b440c9cbac8b91bcaf603d228cb6148bba1eb554fc9`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `cd56a5849a0be621d8472b440c9cbac8b91bcaf603d228cb6148bba1eb554fc9`. - Target: `desktop/src/ui/icons.rs:581 [UTF8-LF sha256=cd5fe34a628b22220e9be47bf4de262e5e8eeec8e7c045f6dde76414c511a40b; anchor=pub fn searchable_workspace_icon_picker(]`. - Target: `desktop/src/ui/shell.rs:4404 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=icons::searchable_workspace_icon_picker]`. @@ -3738,7 +3757,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/menu.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `a0196878c7b76b898d0a5791b122181d9045d3fbbe9f56de52bc43242edf2d9d`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `a0196878c7b76b898d0a5791b122181d9045d3fbbe9f56de52bc43242edf2d9d`. - Target: `desktop/src/ui/menu.rs:15 [UTF8-LF sha256=80c2a5130e97fd8dfe62206034a48347b691fe06bb65998049937afeee37f602; anchor=pub fn top_menu_button(]`. - Target: `desktop/src/ui/shell.rs:1426 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=menu::top_menu_button(ui, crate::ui::i18n::text("File")]`. @@ -3765,7 +3784,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/palette.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `c169db6a61b79ebb2ce00f0ca442305eefeea7b34740720a2cdf6424d6fef85d`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `c169db6a61b79ebb2ce00f0ca442305eefeea7b34740720a2cdf6424d6fef85d`. - Target: `desktop/src/ui/palette.rs:36 [UTF8-LF sha256=3d04f723252650661f9fdacd2e1929f3ad28fac4cd3dc40720bca32eac4f3a7c; anchor=pub fn apply(]`. - Retained: Native semantic visual-role mapping and actual palette JSON; appearance geometry is not overwritten. @@ -3779,7 +3798,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/preferences.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `1fa2482a389fee84c79eef3d69ad8cc0ecb922c319fd222219af3e90d7e6f965`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `1fa2482a389fee84c79eef3d69ad8cc0ecb922c319fd222219af3e90d7e6f965`. - Target: `desktop/src/ui/preferences.rs:365 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=egui::Panel::bottom(ui.id().with("preferences-footer"))]`. - Target: `desktop/src/ui/preferences.rs:67 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn sync_connection_owner(]`. @@ -3810,7 +3829,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/status_bar.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `e407025a1ee959230634f8350de20d58432313d6dd0f734ada735b8fc9fec4db`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `e407025a1ee959230634f8350de20d58432313d6dd0f734ada735b8fc9fec4db`. - Target: `desktop/src/ui/status_bar.rs:409 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn item_menu(]`. - Target: `desktop/src/ui/status_bar.rs:36 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=impl<'de> Deserialize<'de> for Items]`. @@ -3842,7 +3861,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O - Test-code evidence: `desktop/src/ui/status_bar.rs:629 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_connection_and_rgb_require_current_route_not_cached_peer_or_websocket()]`. - Test-code evidence: `desktop/src/ui/status_bar.rs:650 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_measured_progress_distinguishes_unknown_zero_and_completion()]`. - Test-code evidence: `desktop/src/ui/status_bar.rs:668 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_progress_and_focus_use_visible_accent_with_actual_dark_app_palette()]`. -- Test-code evidence: `desktop/src/main.rs:5915 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=fn status_bar_startup_message_respects_disconnected_and_selected_route()]`. +- Test-code evidence: `desktop/src/main.rs:5919 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=fn status_bar_startup_message_respects_disconnected_and_selected_route()]`. - Test-code evidence: `desktop/src/ui/status_bar.rs:701 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_real_egui_slots_stay_single_row_in_narrow_rtl_and_scaled_views()]`. - Test-code evidence: `desktop/src/ui/status_bar.rs:726 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_telemetry_changes_preserve_slot_bounds_and_never_request_save()]`. - Test-code evidence: `desktop/src/ui/status_bar.rs:741 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_buttons_dispatch_click_and_keyboard_without_passive_actions()]`. @@ -3857,7 +3876,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/ui/toasts.rs` -Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `30d4ff8c9a30b783f9513a3508787e9ca233881bb3a9bda2e1b9f9cd1bc9c989`. +Verdict: **scoped-improvement**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `30d4ff8c9a30b783f9513a3508787e9ca233881bb3a9bda2e1b9f9cd1bc9c989`. - Target: `desktop/src/ui/toasts.rs:4 [UTF8-LF sha256=c6dee228dbe78715b11711d60db187601a7d116499677ea8e6499ddb4e69e5e7; anchor=pub fn draw(ctx:]`. - Retained: Actual donor root-only overlay: four newest messages, severity icons and semantic palette roles, bounded width, scrollable text, title, dismiss and deadline-driven repaint. The current optional details disclosure and localized label are imported unchanged in behavior. @@ -3869,7 +3888,7 @@ Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cd ### Pealayer: `src/ui/workspace_profiles.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `410d274f51e5e7db7ce81582d36166a97240b097e993cec5fee8707a95183e2f`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `410d274f51e5e7db7ce81582d36166a97240b097e993cec5fee8707a95183e2f`. - Target: `mobile/lib/output_panel.dart:27 [UTF8-LF sha256=3cf8895bbbdfc82cb7f4c12ed8e1895623099975722753d5dc722d3eb7ebe9c3; anchor=class OutputPanel]`. - Target: `assets/web/feature-workspaces.js:108 [UTF8-LF sha256=13a51897342b90e6d328d84da0c7272fd6f909fb84996de23a164bb48feb88fa; anchor=function diagnosticWorkspace(value)]`. @@ -3914,7 +3933,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `src/update.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `909e8aa4f903d1a8a63589fd2e371d77ff7b8c6c6bcb3fc9949609ab55440652`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `909e8aa4f903d1a8a63589fd2e371d77ff7b8c6c6bcb3fc9949609ab55440652`. - Target: `desktop/src/client_management.rs:278 [UTF8-LF sha256=29d4d38c2785187fe4ec71ba04dd8d297d4f3ec4a8161cf84fcd6b16336d87d1; anchor=pub fn newer(]`. - Target: `desktop/src/client_install.rs:273 [UTF8-LF sha256=d6088c3223ee29219a4b1048d7aa5d35d03f1906e371039dd7032145e9f87186; anchor=pub fn helper(]`. @@ -3928,7 +3947,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `tests/config_persistence_test.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `e06205e3e023e47e8a8c646e881044ce967e793628f7d52159fbbdf589a6f0d7`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `e06205e3e023e47e8a8c646e881044ce967e793628f7d52159fbbdf589a6f0d7`. - Target: `desktop/src/native_workspace.rs:48 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=pub struct Snapshot]`. - Retained: Completely reread actual test. Adapt fresh-session serde roundtrip and persisted layout/state assertions to the actual native board/application workspace store, using actual egui ScrollArea state and DockState. No media dependencies or per-test temporary-directory cleanup copied. @@ -3938,7 +3957,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `tests/i18n_surface_audit_test.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `504768bc9cf2fda32a8dab8b0f50d573c74e45001734f45c7ff3120f36333f63`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `504768bc9cf2fda32a8dab8b0f50d573c74e45001734f45c7ff3120f36333f63`. - Target: `tests/localization_test.mjs:86 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=Adapt Pealayer tests/i18n_surface_audit_test.rs]`. - Retained: Actual donor known-raw-caption prohibition and required localized-boundary audit pattern adapted to real shell menu captions, not renamed timeline/media files. Added peer text exclusion and reversible placeholder/language tests. @@ -3949,7 +3968,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `tests/windows_shell_suite_test.rs` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `3f1f8f7709dd7b0e9dad2c58d1b345e9a7b054bb1bcfbcff9c6aede6598791c6`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `3f1f8f7709dd7b0e9dad2c58d1b345e9a7b054bb1bcfbcff9c6aede6598791c6`. - Target: `desktop/src/platform/windows_notifications.rs:201 [UTF8-LF sha256=71f2254825ba2b16d83696ce0e0cf74ec7c95eedda5f60e1c3d167826693ec1a; anchor=assert!(Hook::new(42).is_err())]`. - Retained: Actual Preferences action/resource catalog is validated; invalid HWND registration rejects rather than claiming success; owner exclusion is tested. Live notification acceptance and shown-callback evidence are recorded independently. @@ -3961,7 +3980,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/scripts/appearance.test.mjs` -Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `35f269e9463e49dbc41572683ca374be8674a93e0e97c84240838d34dc950ddc`. +Verdict: **equivalent-behavior**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `35f269e9463e49dbc41572683ca374be8674a93e0e97c84240838d34dc950ddc`. - Target: `tests/web_appearance_test.mjs:1 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=First four tests port the actual Pealayer]`. - Retained: All four actual donor contract tests ported: Neutral helper default, preference merge without unrelated-field loss/resolution leakage, host/offline theme/accent and repeated native event/explicit-theme handling. Additional shipped-code tests cover all palette roles, cancel/apply, contrast, identical-write skip, media events, malformed storage, cross-tab updates and session-only storage failure. @@ -3972,7 +3991,7 @@ Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1c ### Pealayer: `web_ui/src/App.tsx` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `ba2d7a35e2f887ec556b681cca24aaa6f263295208cbc80678bc248b61949845`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `ba2d7a35e2f887ec556b681cca24aaa6f263295208cbc80678bc248b61949845`. - Target: `firmware/esp/src/WebUi.h:2475 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=function createWorkspaceStorage]`. - Target: `assets/web/device-settings.js:93 [UTF8-LF sha256=28b490c94a63c0b55df4cac22405b02d9ef43725ee08d5e9e3cc418ae8df5492; anchor=function settingsObserve]`. @@ -3987,7 +4006,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/appearance.ts` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `b521c20a1f10e6f818978bcb09948c689b74caaf72df18bdec56f2f566f8db58`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `b521c20a1f10e6f818978bcb09948c689b74caaf72df18bdec56f2f566f8db58`. - Target: `assets/themes/appearance.js:4 [UTF8-LF sha256=62a7ebba994ad44f4e2d647bb97684aac9b563104f3f707b43573289e514ecdd; anchor=export function mergeAppearance]`. - Target: `tools/generate-web-appearance.mjs:33 [UTF8-LF sha256=e57a615bf5134b718d6df7b644e56faced0c0ef73e8662cf8cb06c05e23e59b4; anchor=replaceBlock('// BEGIN SHARED APPEARANCE']`. @@ -4003,7 +4022,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/components/ColorDropdown.tsx` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `49d37654faab5033df04954456d0fe980571ccbc66478caaab7007dae1b8c151`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `49d37654faab5033df04954456d0fe980571ccbc66478caaab7007dae1b8c151`. - Target: `mobile/lib/color_picker.dart:50 [UTF8-LF sha256=8d1b4206d9b99bf4067df432e0147fdfc7fe67f60c6dab83ceb04478de2560c2; anchor=class _ColorPicker]`. - Retained: Read the full donor. Retained a single focused picker, bounded scrollable content, named presets and keyboard-focusable controls, with session recents shared across callers. Flutter dialog owns Cancel/Apply and returns a color rather than inventing another state or transport owner. @@ -4014,7 +4033,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/components/ColorPicker.tsx` -Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `024fdabb482a714c38a91d0dde5d0be11486b20859a019f4fbc2d3dd34295022`. +Verdict: **scoped-improvement**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `024fdabb482a714c38a91d0dde5d0be11486b20859a019f4fbc2d3dd34295022`. - Target: `mobile/lib/color_picker.dart:33 [UTF8-LF sha256=8d1b4206d9b99bf4067df432e0147fdfc7fe67f60c6dab83ceb04478de2560c2; anchor=Future showLedColorPicker]`. - Retained: Read the complete actual donor before implementation. Adapted preset selection, uppercase RGB representation and twelve deduplicated session recent colors into the shared Flutter picker used by semantic state appearance, temporary test color and game group overrides. An explicit Apply commits the local picker choice; Cancel makes no command or recent-color write. @@ -4027,7 +4046,7 @@ Verdict: **scoped-improvement**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cd ### Pealayer: `web_ui/src/components/ControlBar.tsx` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `cbd6ebc09cbf23e4958c4d1979974d3e856f2096bcc2dcfd1556c5ef4c45cafd`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `cbd6ebc09cbf23e4958c4d1979974d3e856f2096bcc2dcfd1556c5ef4c45cafd`. - Target: `web/modules/components.js:98 [UTF8-LF sha256=200e38d3a70594f6f2463b03bc74df53cc10e17e8d2264c7851c200d9beff7d4; anchor=const actionIcons=]`. - Target: `assets/web/application-utilities.js:47 [UTF8-LF sha256=20744bfcfc0968df0205a46aeb3bdd513b205f0f91796b168dd99dcb16fdbbf1; anchor=function refreshLabels(]`. @@ -4041,7 +4060,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/components/DesignerFieldLabel.tsx` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `ed527ea04c4dc8e9f51e755c0dc92b8cd9a71a414b2fbcfbaba96e97cd7916a7`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `ed527ea04c4dc8e9f51e755c0dc92b8cd9a71a414b2fbcfbaba96e97cd7916a7`. - Target: `web/modules/components.js:99 [UTF8-LF sha256=200e38d3a70594f6f2463b03bc74df53cc10e17e8d2264c7851c200d9beff7d4; anchor=const controlIcons=]`. - Target: `assets/web/localization.js:43 [UTF8-LF sha256=fc7a39cae41e490fba858a8c7129abf0a7064811c486ddf9ba1b115b79e7c0fb; anchor=function renderUiText(]`. @@ -4054,7 +4073,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/components/EffectGroupDialog.tsx` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `8c90f7a85286efada6d5a1e24212a03dd1ae14e51bea1767f8d195a538ec8f80`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `8c90f7a85286efada6d5a1e24212a03dd1ae14e51bea1767f8d195a538ec8f80`. - Target: `assets/web/feature-workspaces.js:383 [UTF8-LF sha256=13a51897342b90e6d328d84da0c7272fd6f909fb84996de23a164bb48feb88fa; anchor=async function reloadCorrections(]`. - Target: `web/modules/components.js:135 [UTF8-LF sha256=200e38d3a70594f6f2463b03bc74df53cc10e17e8d2264c7851c200d9beff7d4; anchor=function dialog(]`. @@ -4074,7 +4093,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/components/HeaderBar.tsx` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `ad53ee284d969054f69b65e8447a313498b5928eae0aed2564e95f8c71e70d04`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `ad53ee284d969054f69b65e8447a313498b5928eae0aed2564e95f8c71e70d04`. - Target: `tools/generate-branding.mjs:3 [UTF8-LF sha256=816544b2525d3c9210a586b8c2c5d59ed6c51fab8ca4bda27fbf2edbdd451367; anchor=Pakar embeds it for the standalone ESP surface]`. - Target: `mobile/lib/header_controls.dart:17 [UTF8-LF sha256=fdbae404068b75de261d1add7d5768e1b6844272ddfe4edb1b92b338f6cf4f87; anchor=class HeaderLayout]`. @@ -4101,7 +4120,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/components/NumericValueControl.tsx` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `6f1e99cd5ae8ef0bae30d43a86f22a22371c6543498c5d8938e486cff151d218`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `6f1e99cd5ae8ef0bae30d43a86f22a22371c6543498c5d8938e486cff151d218`. - Target: `mobile/lib/pixel_corrections_editor.dart:115 [UTF8-LF sha256=7b307453c53c084f22bb5e3845b43ba56e34a83633447b36041c4b1facad64c5; anchor=class PixelCorrectionNumberControl]`. - Target: `assets/web/pixel-groups.js:44 [UTF8-LF sha256=24abe18fbf1f11fe248f2f1ac5fe6b7149014be1290fae0f8b3bef59c256e617; anchor=function create(options)]`. @@ -4132,7 +4151,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/components/PlaybackButton.tsx` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `10b2c97e2b85d1f5390790992b53a8250dc49847ce0c4b1679f5928e30b9fe5a`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `10b2c97e2b85d1f5390790992b53a8250dc49847ce0c4b1679f5928e30b9fe5a`. - Target: `assets/web/application-utilities.js:37 [UTF8-LF sha256=20744bfcfc0968df0205a46aeb3bdd513b205f0f91796b168dd99dcb16fdbbf1; anchor=function setControlCaption(]`. - Target: `web/index.html:3274 [UTF8-LF sha256=aa518a96eea2dd7d787cb0a31d5191c78886e2e31605eda64458a0cea728835d; anchor=function renderAssignmentTools(]`. @@ -4146,7 +4165,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/components/PreferencesTab.tsx` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `30a63cc1db61a46346c2d4c30ce011dc74081a8a6da2e29853e56d39811a0de1`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `30a63cc1db61a46346c2d4c30ce011dc74081a8a6da2e29853e56d39811a0de1`. - Target: `mobile/lib/device_settings_page.dart:18 [UTF8-LF sha256=b187bcc1ed640dc8b7052ce03c4f36a840289396f8908dbc77b967190eb9e9ee; anchor=class DeviceSettingsPage]`. - Target: `mobile/lib/device_settings.dart:413 [UTF8-LF sha256=0c10e5c712bae2b4fe2f706326115ee703f07e426a64a50728c09575efb71e9a; anchor=class DeviceSettingsSession]`. @@ -4175,7 +4194,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/components/ServerFilePicker.tsx` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `df5b59007e0b726c815bed0eafcce87e4f5a6e4a59e8c79a1414f2cc7be89316`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `df5b59007e0b726c815bed0eafcce87e4f5a6e4a59e8c79a1414f2cc7be89316`. - Target: `assets/web/user-files.js:35 [UTF8-LF sha256=8b25d6925e5a604b95769d844c1c1d7d06ae9e49a33a9e2307bae5c75d77ec5f; anchor=function create(o)]`. - Target: `mobile/lib/documents.dart:19 [UTF8-LF sha256=9b447b248f21e855c2481e28c6c31e66969af5ab837fd32e4d57eb76164b9ff5; anchor=class AndroidDocuments]`. @@ -4199,7 +4218,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/i18n.ts` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `331d2545379e36ea717fcf2876508315437bc5abe49923170f50a4f1bb1b47fc`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `331d2545379e36ea717fcf2876508315437bc5abe49923170f50a4f1bb1b47fc`. - Target: `assets/web/localization.js:19 [UTF8-LF sha256=fc7a39cae41e490fba858a8c7129abf0a7064811c486ddf9ba1b115b79e7c0fb; anchor=function uiTr(text,values)]`. - Target: `tools/generate-font-assets.mjs:62 [UTF8-LF sha256=fdf6b75dac5afebad8598abbe408cd44bbf09cb306d4db91ee515add5ebb1412; anchor=const dictionary={}]`. @@ -4216,7 +4235,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/preferenceFiles.ts` -Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `4580d1396b36f5a907cad6cf2f33a38486c3a7e6948a3bb222974e1b8a2a4af4`. +Verdict: **equivalent-behavior**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `4580d1396b36f5a907cad6cf2f33a38486c3a7e6948a3bb222974e1b8a2a4af4`. - Target: `mobile/lib/documents.dart:6 [UTF8-LF sha256=9b447b248f21e855c2481e28c6c31e66969af5ab837fd32e4d57eb76164b9ff5; anchor=bool preferenceFileAllowed]`. - Target: `assets/web/cell-assignments.js:3 [UTF8-LF sha256=510c03217f05a1938a27466a4dd571446d8db96cdffeb204109c5865632391d2; anchor=function cellAssignmentFileAllowed]`. @@ -4229,7 +4248,7 @@ Verdict: **equivalent-behavior**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1c ### Pealayer: `web_ui/src/timelineWheel.ts` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `1910311a3acba2f1d22d9d4fb57d43e08bcf6ee91f3ea567e381ae90e8a487cd`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `1910311a3acba2f1d22d9d4fb57d43e08bcf6ee91f3ea567e381ae90e8a487cd`. - Target: `web/modules/table-layout.js:7 [UTF8-LF sha256=30162a2894f72d2467b34fc2cb3e682e09b4da0a1b252ccf6579a25273b53542; anchor=function zoomAt]`. - Target: `mobile/lib/table_viewport.dart:158 [UTF8-LF sha256=d7fe024ea911c1610e36e88a8a1fc412e0b95c615584ebb30322d5870ee032a7; anchor=void zoomAt]`. @@ -4245,7 +4264,7 @@ Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. O ### Pealayer: `web_ui/src/webPlatform.ts` -Verdict: **parity-gap**. Revision: `5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad`. Original-byte SHA-256: `d6ee8217c05e96be2e20f9a40ab4c46249d57f58871c661a31c33e2310a92f0e`. +Verdict: **parity-gap**. Revision: `10fc6604a9d6068eb57da2f00d7d9404238f00c8`. Original-byte SHA-256: `d6ee8217c05e96be2e20f9a40ab4c46249d57f58871c661a31c33e2310a92f0e`. - Target: `tools/generate-branding.mjs:18 [UTF8-LF sha256=816544b2525d3c9210a586b8c2c5d59ed6c51fab8ca4bda27fbf2edbdd451367; anchor='FAVICON':]`. - Target: `firmware/esp/src/WebUi.h:142 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=]`. @@ -4560,7 +4579,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. Original-byte SHA-256: `49d608184ca52242cc845026d05384081669eec57007733f43ede09539c79cb6`. -- Target: `.github/workflows/build.yml:106 [UTF8-LF sha256=2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e; anchor=name: "🔧 ESP32-S3 + AVR"]`. +- Target: `.github/workflows/build.yml:108 [UTF8-LF sha256=88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861; anchor=name: "🔧 ESP32-S3 + AVR"]`. - Target: `tools/firmware-report.mjs:57 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function artifactMarkdown]`. - Retained: Adapt actual artifact size/checksum/download summary and staged build workflow mechanisms into existing Pealayer-derived build.yml plus firmware-report.mjs. Retain separate matched firmware outputs and draft-release provenance; no external progress image or rewritten timestamp header. - Omitted/replaced code: `Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging`. Disposition: **replaced**. Reason: Use exact successful main source/run/artifact identity and existing Pakar jobs. Automatic writes require an explicitly authorized runner/environment and repository opt-in. @@ -4573,7 +4592,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. Original-byte SHA-256: `06b31df1731e5ab45fb0f1c714f95c46470cf1006f6c50150dc9a461d95a52d0`. -- Target: `.github/workflows/build.yml:74 [UTF8-LF sha256=2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e; anchor=name: "🧰 Scripts · ${{ matrix.os }}"]`. +- Target: `.github/workflows/build.yml:76 [UTF8-LF sha256=88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861; anchor=name: "🧰 Scripts · ${{ matrix.os }}"]`. - Target: `.github/actionlint.yaml:3 [UTF8-LF sha256=5b3c6b07ca38aaadb14a1d6eb2d35ac83b705f065901fdafba8210afc9be4960; anchor=pakar-deploy]`. - Retained: Adapt actual tooling verification intent into Windows/Linux/macOS fixture/plan matrix before product jobs. Use one Node/PowerShell owner with explicit Windows-only utility boundaries; no donor-client build/test execution is falsely certified. - Omitted/replaced code: `Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging`. Disposition: **replaced**. Reason: Use exact successful main source/run/artifact identity and existing Pakar jobs. Automatic writes require an explicitly authorized runner/environment and repository opt-in. @@ -5394,7 +5413,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O - Target: `libraries/BoardCore/src/SerialLink.h:12 [UTF8-LF sha256=99373bc4c090e34324cfd2ae8c94d6666c227ad7e157a47fbd85125aac6c13a0; anchor=class SerialLink {]`. - Target: `libraries/BoardCore/src/UartFlow.h:26 [UTF8-LF sha256=44f8638f725c9cf83a6f53639144f107aace1556dd254d6dcebcaed4853c6469; anchor=inline uint16_t receiveBudget(]`. -- Target: `libraries/BoardCore/src/Protocol.h:219 [UTF8-LF sha256=6031ecc3f760f2e4fc7a766e5977b1ea990a602de27808ddb060e56bf81c6f47; anchor=inline bool decode(]`. +- Target: `libraries/BoardCore/src/Protocol.h:137 [UTF8-LF sha256=331f68dfe248de399304210d34bfc51d97a39d84610731d7abe6d44587634059; anchor=inline bool decode(]`. - Target: `docs/PU850-PARITY.md:141 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C++ transfer and UART, 2026-10-19]`. - Retained: Every transport and endpoint function read through EOF; current bounded COBS/CRC/sequence/explicit ownership remains, with exact generic pending and business-only omissions. - Retained: Complete section/function decisions and concrete unsafe legacy defects recorded in the C++ transfer and UART section of docs/PU850-PARITY.md. @@ -5409,7 +5428,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O - Target: `libraries/BoardCore/src/SerialLink.h:12 [UTF8-LF sha256=99373bc4c090e34324cfd2ae8c94d6666c227ad7e157a47fbd85125aac6c13a0; anchor=class SerialLink {]`. - Target: `libraries/BoardCore/src/UartFlow.h:26 [UTF8-LF sha256=44f8638f725c9cf83a6f53639144f107aace1556dd254d6dcebcaed4853c6469; anchor=inline uint16_t receiveBudget(]`. -- Target: `libraries/BoardCore/src/Protocol.h:219 [UTF8-LF sha256=6031ecc3f760f2e4fc7a766e5977b1ea990a602de27808ddb060e56bf81c6f47; anchor=inline bool decode(]`. +- Target: `libraries/BoardCore/src/Protocol.h:137 [UTF8-LF sha256=331f68dfe248de399304210d34bfc51d97a39d84610731d7abe6d44587634059; anchor=inline bool decode(]`. - Target: `docs/PU850-PARITY.md:141 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C++ transfer and UART, 2026-10-19]`. - Retained: Every transport and endpoint function read through EOF; current bounded COBS/CRC/sequence/explicit ownership remains, with exact generic pending and business-only omissions. - Retained: Complete section/function decisions and concrete unsafe legacy defects recorded in the C++ transfer and UART section of docs/PU850-PARITY.md. @@ -5483,7 +5502,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. Original-byte SHA-256: `54df8b54e56a589f85b981f15996813e447fc14245ea8048c5f87cfd1f3fdf51`. - Target: `tools/firmware-dependencies.json:2 [UTF8-LF sha256=95a5da284e415b35c47d8f4e9048381ec41c3e181261c437ec91b9cdcf1090c1; anchor="platforms"]`. -- Target: `tools/build-firmware.ps1:208 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=esp32:esp32:esp32s3:CDCOnBoot]`. +- Target: `tools/build-firmware.ps1:210 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=esp32:esp32:esp32s3:CDCOnBoot]`. - Retained: Read complete donor board profile/platform/library locks. Retain exact ESP8266 core/ArduinoJson/ESP Async TCP pins where applicable, preserve existing reviewed Pakar dependency pins, and keep actual S3/AVR FQBN/flags in the canonical wrapper. - Omitted/replaced code: `PU-specific board/profile and separate dependency/config write paths`. Disposition: **replaced**. Reason: Reuse applicable exact versions/official registries in one reviewed pin owner. Preserve operator config and Pakar hardware flags; no silent downgrade, duplicate Arduino_JSON API, unsupported library additions or automatic SDK initialization. - Test-code evidence: `tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:]`. @@ -5549,7 +5568,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. Original-byte SHA-256: `f3e6a8ed2eae52c8ab7f1f178b85c3a1fe4ad2a85bce2a27a67a0b1c07a24d6c`. -- Target: `tools/build-desktop.ps1:81 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Invoke-PakarNative -WorkingDirectory]`. +- Target: `tools/build-desktop.ps1:83 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Invoke-PakarNative -WorkingDirectory]`. - Target: `tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]`. - Retained: Adapt actual native-command failure preservation and build/test/publish stage dispatch into script-runtime.ps1 and build-all.ps1. Existing Rust/Flutter owners remain responsible for Pakar client outputs, with an explicit Release/preview choice. - Omitted/replaced code: `Build and distribute parallel .NET/WinHTTP/Go ASA clients`. Disposition: **replaced**. Reason: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. @@ -5748,7 +5767,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. Original-byte SHA-256: `7379ae908f01676ed3db145f11579bb2bf07b79a7b5da2bdfe3cc8baa172e297`. -- Target: `tools/build-desktop.ps1:81 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Invoke-PakarNative -WorkingDirectory]`. +- Target: `tools/build-desktop.ps1:83 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Invoke-PakarNative -WorkingDirectory]`. - Target: `tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]`. - Retained: Retain executable preflight, bounded native failure handling and explicit selected component dispatch in shared PowerShell helpers. Windows package/capture utilities remain explicitly platform-specific, not advertised as Unix binaries. - Omitted/replaced code: `Build and distribute parallel .NET/WinHTTP/Go ASA clients`. Disposition: **replaced**. Reason: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. @@ -5763,7 +5782,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. Original-byte SHA-256: `0af1f4b0ba2a7014d7f0938f69885b7d7a46763513408058cffeab4772d5827d`. -- Target: `tools/build-desktop.ps1:81 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Invoke-PakarNative -WorkingDirectory]`. +- Target: `tools/build-desktop.ps1:83 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Invoke-PakarNative -WorkingDirectory]`. - Target: `tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]`. - Retained: Retain Bash preflight/delegation to an explicit component owner. pakar.sh shares dispatch with Windows and CI; a MinGW cross-build of WinHTTP is not represented as a Linux-native Pakar application. - Omitted/replaced code: `Build and distribute parallel .NET/WinHTTP/Go ASA clients`. Disposition: **replaced**. Reason: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. @@ -5885,7 +5904,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. Original-byte SHA-256: `7a7d58167051cdfa2bab660a4128d0b29400c17a653bdf751226f86607da246a`. -- Target: `tools/build-desktop.ps1:81 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Invoke-PakarNative -WorkingDirectory]`. +- Target: `tools/build-desktop.ps1:83 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Invoke-PakarNative -WorkingDirectory]`. - Target: `tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]`. - Retained: Adapt actual selected-target orchestration, tool preflight and raw native exit preservation without installing a duplicate Go application stack. Existing Rust checks/tests/Release and Flutter preview remain explicit. - Omitted/replaced code: `Build and distribute parallel .NET/WinHTTP/Go ASA clients`. Disposition: **replaced**. Reason: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. @@ -5900,7 +5919,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. Original-byte SHA-256: `746e6667fba804bce07d90acf6bf370e0f7b62100c83d806cf057ef77f600ff7`. -- Target: `tools/build-desktop.ps1:81 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Invoke-PakarNative -WorkingDirectory]`. +- Target: `tools/build-desktop.ps1:83 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Invoke-PakarNative -WorkingDirectory]`. - Target: `tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]`. - Retained: Retain shell launcher preflight and one delegated owner with explicit testing/build selection. Pakar Bash and Windows now reach identical guarded component wrappers rather than separate drifting build recipes. - Omitted/replaced code: `Build and distribute parallel .NET/WinHTTP/Go ASA clients`. Disposition: **replaced**. Reason: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. @@ -6094,7 +6113,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. Original-byte SHA-256: `60754d1116254eeac6b10e626c2e2b4506e60ad3ecd0296ce59645d63858e540`. - Target: `tools/script-console.mjs:5 [UTF8-LF sha256=2243be58e4dce21a7592865121e94ebdb64f21286f3333358c8259bb2bdedafb; anchor=export const EXIT]`. -- Target: `.github/workflows/build.yml:90 [UTF8-LF sha256=2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e; anchor=node tests/script_tooling_test.mjs]`. +- Target: `.github/workflows/build.yml:92 [UTF8-LF sha256=88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861; anchor=node tests/script_tooling_test.mjs]`. - Retained: Retain explicit Node20.19 minimum and direct Node entrypoints, tests and help without an additional npm install. Shared logger/CLI use Node standard libraries; unavailable watch mode is recorded as a gap. - Omitted/replaced code: `New chalk/chokidar/readdirp npm installation for one-shot tools`. Disposition: **replaced**. Reason: Currently required console/argv behavior uses Node standard libraries and no file watcher is advertised. Preserve zero additional npm tree; advanced watcher parity remains explicit. - Test-code evidence: `tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:]`. @@ -6190,7 +6209,7 @@ Verdict: **parity-gap**. Revision: `431104072952f694a35b3a83c19f13fbb098ca5b`. O Verdict: **equivalent-behavior**. Revision: `filesystem-snapshot`. Original-byte SHA-256: `fa26772dc3f07e02815543e65fe5d90de6415c5b0803aa0e4416aeb8a63b0b31`. -- Target: `tools/build-firmware.ps1:188 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=MiniCore:avr:328:bootloader=uart0]`. +- Target: `tools/build-firmware.ps1:190 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=MiniCore:avr:328:bootloader=uart0]`. - Retained: Read the complete donor profile. External 16 MHz operation, UART bootloader, EEPROM retention and 2.7 V brownout protection remain explicit in the canonical AVR build owner. - Omitted/replaced code: `MightyCore ATmega32 board/pinout`. Disposition: **replaced**. Reason: The fitted controller is ATmega328P. MiniCore modelP is the reviewed target; copying this editor profile would compile for the wrong MCU and memory/pin map. - Omitted/replaced code: `fixed COM1 and USBasp programmer`. Disposition: **replaced**. Reason: COM1 is commonly the ASUS built-in port. Backup-first deployment inventories and pins the newly enumerated device/programmer instead of risking a stale fixed target. @@ -6203,7 +6222,7 @@ Verdict: **equivalent-behavior**. Revision: `filesystem-snapshot`. Original-byte Verdict: **equivalent-behavior**. Revision: `filesystem-snapshot`. Original-byte SHA-256: `ca7d6699a966afa9e1132a4a83359978fa9ace81d2bee295662fa5ba0bd8ca53`. - Target: `.vscode/settings.json:5 [UTF8-LF sha256=2373a0d9d9a7af54872b0ae854ccf1ff95116ef8f80aebfad513fe3031914d5f; anchor="*.ino": "cpp"]`. -- Target: `tools/build-firmware.ps1:235 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor='compile', '--jobs', "$Jobs", '--fqbn']`. +- Target: `tools/build-firmware.ps1:237 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor='compile', '--jobs', "$Jobs", '--fqbn']`. - Retained: Read all 536 donor lines through EOF. Arduino/AVR C++ source association and target compile-profile intent are retained by portable workspace associations and the actual arduino-cli invocation. - Omitted/replaced code: `absolute Arduino15 compiler/core/include paths and tool version`. Disposition: **replaced**. Reason: Generated per-user paths become stale when packages move. The wrapper resolves the installed toolchain and selected FQBN at build time. - Omitted/replaced code: `ATmega32/USBCON and hundreds of copied compiler predefined macros`. Disposition: **replaced**. Reason: The selected compiler must define its real ATmega328P ABI and capabilities; a committed ATmega32 snapshot would make IntelliSense contradict the production build. diff --git a/docs/REUSE-PREFLIGHT-RECEIPT.md b/docs/REUSE-PREFLIGHT-RECEIPT.md index ffbfe2e..a7aaef0 100644 --- a/docs/REUSE-PREFLIGHT-RECEIPT.md +++ b/docs/REUSE-PREFLIGHT-RECEIPT.md @@ -1,5 +1,60 @@ # Donor-first preflight receipt +## Canonical opcode ownership and namespace admission, 2026-10-30 (#41 / PC#702) + +Read the actual complete PCController contract generator and canonical registry, +Pakar Protocol.h and active client routing slices, PC UART/Go dispatch boundaries, +and Pealayer's complete native/compact decoder source. Reuse the donor generator +as the shared portable source rather than create another hand-maintained table. +Native opcodes remain byte-stable; Pakar's existing published assignments become +an explicit second namespace in that same canonical source. Consumer source pins, +generated C++/Rust/Dart and generated Go names prevent independent numeric drift. + +PC UART's advisory marker acceptance was an actual cross-namespace hazard: +Pakar0x11 audio could reach PWM. PC firmware and Go now reject every foreign +fixed marker; the actual C++ test exercises all255 and recovery to a valid frame. +Pealayer's native decoder receives the same gate and generated command constants. +Unknown operations inside the admitted namespace retain Unsupported semantics. +The explicit tunneled adapter is preserved; no payload semantics are conflated. + +Five generator tests, stable-path native/UDP tests and actual UART fixtures pass. +The full96-test build-tool suite initially caught the new sync entrypoint missing +loadProjectEnv; reread its exact env loader/test and reuse the mandatory import, +without weakening the test. All96 then pass. Consumer/API/build and physical +acceptance remain separate. Local raw-GitHub upstream byte verification timed out; +offline pinned-byte/generation checks pass and mandatory CI upstream verification +is still independent evidence. No production board, settings or runtime changed. + +The immutable four-file source pin was subsequently verified through authenticated +GitHub API byte reads, with no downloaded code executed. Flutter analysis and14 USB +tests pass; Pealayer's actual protocol suite passes11. Pakar's two compiled native +namespace/response-coverage tests pass. Name/access provisioners now reuse the +shared bounded serial owner rather than their duplicate decoders/loose ACK checks. +Actual mock provisioning/RX tests pass without opening a serial device. + +Full protocol testing exposed an unchanged baseline fixture bug: its snapshot +slice ended at an earlier configureNtp forward declaration. Verified both source/ +test files unchanged against HEAD, reread the actual definition and demand owner, +then require an end boundary after the asserted definition. The original demand/ +privacy assertions remain and the scoped demand tests pass; the earlier aborted +large wrapper is not retroactively certified complete. Generated-symbol source +guards were updated without removing the actual wire/rejection/no-replay tests. + +The broader compiled Pakar USB filter also passes all 49 tests, covering actual +serial actor, correlated responses, settings, snapshots and subscriptions. The +transport-convergence donor consultation passes with zero stale mapped sources. +The Pealayer inventory was refreshed after publishing its canonical imports; +the complete changed workflow was reread and its source hash rebound. Newly +inventoried files remain pending, not silently accepted as completed comparisons. +Local quality passed its prefix up to the stale generated comparison report; +after explicit metadata refresh, the failed report check and remaining suffix +were rerun separately. This is segmented evidence, not an invented single green +full-suite run. Paired source reviews are PCController PR704 and Pealayer PR223. +The existing structured mobile-plan test caught success text from the new opcode +preflight leaking onto PowerShell's object pipeline. Route that informational +output through Write-Host in all three build wrappers; keep the mandatory check, +nonzero-exit rejection and the existing plan assertions unchanged. + ## Controller transport convergence first slice, 2026-10-30 (#41 / PC#702) Read current repository instructions, transport and merge-readiness documents; @@ -12000,3 +12055,26 @@ and CRLF cases. No guard is removed and no check is suppressed. The existing bluetooth/source wiring was inspected; this is fixture repair, not BLE radio acceptance. Combined shell and audit fixtures pass; final SSH/quality/SDK/client CI remains a separate exact-head gate. No boards or production apps changed. + +## Windows WebSocket-bootstrap fixture repair (2026-10-30, PR43) + +Actions run41080991373 failed in the loopback server at peer_http.rs:746: +Winsock10035 (WouldBlock) on the first HTTP request read, followed by the +client's connection-reset error. The listener deliberately polls accept, but +Windows can inherit its nonblocking mode into accepted sockets. Explicitly +restore blocking mode before the existing bounded HTTP/WebSocket reads. Apply +the same correction to the adjacent cached-HTTP-route fixture. Preserve all +hostname, Host-header, verified-TCP-address, identity, revocation and deadline +assertions; no production transport code or command admission changes. + +Consulted peer-binding's three mapped PCController session/admission sources +and outstanding lifecycle gaps, plus the actual netpolicy HTTP URL and public +transport tests. Those Go tests retain explicit route assertions, but their +net.Pipe/Go runtime does not supply a Rust/Winsock socket-mode fix. Keep Pakar's +existing bounded loopback fixture rather than replace production resolution. + +The canonical focused native-test wrapper was attempted and refused before +Cargo: live Pealayer tracked-file inventory drift. Do not bypass that gate, +change its checkout, relabel unread donor changes as reviewed or claim a local +native pass. Exact-head Windows CI must execute the retained regression and +the broader native suite. No boards, installed apps or device settings changed. diff --git a/docs/TRANSPORT-CONVERGENCE.md b/docs/TRANSPORT-CONVERGENCE.md index cc25dc2..503a442 100644 --- a/docs/TRANSPORT-CONVERGENCE.md +++ b/docs/TRANSPORT-CONVERGENCE.md @@ -16,10 +16,20 @@ delivery properties; bootloader protocols are external recovery contracts. Do not remove the current native-service boundary: outer opcode0x11 is an audio cue in Pakar but PWM in PCController. Both use A5/COBS/CRC-8/ATM and48-byte payloads, -yet reserved-byte admission, HELLO/status/settings, timestamped ACK/events and +yet HELLO/status/settings, timestamped ACK/events and EEPROM layouts differ. Sharing codec mathematics does not make these semantics interchangeable. See PC-CONTROLLER-MERGE-READINESS.md for the preserved comparison. +Opcode hardening now gives both namespaces a single allocation owner in +PCController Project/ProtocolContract.json. The actual original generator was +extracted into a portable core, pinned and reused for firmware/Rust/Flutter views +and Pealayer's native sender. Published allocations and CI base comparisons forbid +renumbering, removal or reserved-slot reuse. Native A5/1 and Pakar A5/0 are fixed +namespace admission, not generation selectors. Both sides reject foreign markers +before dispatch; the existing explicit contract tunnel remains. Do not restore +advisory marker acceptance or cross-dialect fallback. Payload/service parity and +deployment still have their separate acceptance gates. + ## Actual implementation comparison | Path / current owner | Useful attributes | Gaps / decision | diff --git a/docs/file-comparison-evidence.json b/docs/file-comparison-evidence.json index 6299b9a..e03a869 100644 --- a/docs/file-comparison-evidence.json +++ b/docs/file-comparison-evidence.json @@ -2191,14 +2191,14 @@ { "path": "docs/TRANSPORT-CONVERGENCE.md", "anchor": "## Decision: shared semantics, appropriate carriers", - "sha256": "91b59a9967f1eed8f8ac3381147b6a26c9b595e69cab105fe7648320b555e0ef" + "sha256": "7d4b449dec8b072d08139a66e45cc512051bcf9ccd53ad01fe8d250c9a146f1d" } ], "proof": [ { "path": "tests/protocol_test.cpp", "anchor": "Same malformed COBS vectors as PCController", - "sha256": "4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144" + "sha256": "b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04" }, { "path": "tests/fixtures/cobs.json", @@ -2326,7 +2326,7 @@ { "path": "tests/protocol_test.cpp", "anchor": "admission.needsHello(2000,0)", - "sha256": "4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144" + "sha256": "b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04" } ], "omissions": [ @@ -2409,7 +2409,7 @@ "targets": [ { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "MiniCore:avr:328:bootloader=uart0" } ], @@ -2456,7 +2456,7 @@ }, { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "'compile', '--jobs', \"$Jobs\", '--fqbn'" } ], @@ -3013,7 +3013,7 @@ "targets": [ { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "MiniCore:avr:328:bootloader=uart0" }, { @@ -3127,7 +3127,7 @@ "targets": [ { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "MiniCore:avr:328:bootloader=uart0" } ], @@ -3174,7 +3174,7 @@ }, { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "'compile', '--jobs', \"$Jobs\", '--fqbn'" } ], @@ -3694,7 +3694,7 @@ }, { "path": "libraries/BoardCore/src/Protocol.h", - "sha256": "6031ecc3f760f2e4fc7a766e5977b1ea990a602de27808ddb060e56bf81c6f47", + "sha256": "331f68dfe248de399304210d34bfc51d97a39d84610731d7abe6d44587634059", "anchor": "inline bool decode(" }, { @@ -3764,7 +3764,7 @@ }, { "path": "libraries/BoardCore/src/Protocol.h", - "sha256": "6031ecc3f760f2e4fc7a766e5977b1ea990a602de27808ddb060e56bf81c6f47", + "sha256": "331f68dfe248de399304210d34bfc51d97a39d84610731d7abe6d44587634059", "anchor": "inline bool decode(" }, { @@ -7466,7 +7466,7 @@ "targets": [ { "path": "desktop/src/main.rs", - "sha256": "a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a", + "sha256": "919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32", "anchor": "#![cfg_attr(windows, windows_subsystem = \"windows\")]" }, { @@ -7534,7 +7534,7 @@ }, { "path": "desktop/src/main.rs", - "sha256": "a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a", + "sha256": "919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32", "anchor": "cli_println!(\"{reply}\")" }, { @@ -7693,7 +7693,7 @@ }, { "path": "mobile/test/usb_transport_test.dart", - "sha256": "c18934fdea3c2001264dcab582a4ebf1c1f5b7897c9ffc514821e4c6047c563f", + "sha256": "5be41161b7d31bd348b31c7d0f3c0cc836f632cf0ba5a1c3f5ecebdfcf0a3410", "anchor": "Real channel session performs HELLO introduction snapshot and atomic batch without HTTP or DNS" }, { @@ -9287,7 +9287,7 @@ { "path": "desktop/src/usb_table.rs", "anchor": "pub struct Intent", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042" + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1" }, { "path": "firmware/esp/src/PeerRelay.h", @@ -9321,7 +9321,7 @@ { "path": "desktop/src/usb_table.rs", "anchor": "fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042" + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1" }, { "path": "tests/peer_relay_test.cpp", @@ -9396,7 +9396,7 @@ { "path": "desktop/src/main.rs", "anchor": "SerialCommand::Bridge(target", - "sha256": "a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a" + "sha256": "919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32" } ], "omissions": [ @@ -9451,7 +9451,7 @@ { "path": "desktop/src/peer_identity.rs", "anchor": "pub fn sanitize_report(", - "sha256": "18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979" + "sha256": "bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2" }, { "path": "mobile/lib/peer_identity.dart", @@ -9490,7 +9490,7 @@ { "path": "desktop/src/peer_identity.rs", "anchor": "fn reports_drop_secrets_and_never_replace_observed_ip()", - "sha256": "18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979" + "sha256": "bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2" } ], "remaining": [ @@ -9969,7 +9969,7 @@ "targets": [ { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "MiniCore:avr:328:bootloader=uart0" } ], @@ -10020,7 +10020,7 @@ }, { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "'compile', '--jobs', \"$Jobs\", '--fqbn'" } ], @@ -11484,7 +11484,7 @@ { "path": "tools/build-firmware.ps1", "anchor": "esp32:esp32:esp32s3:CDCOnBoot", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d" + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067" } ], "omissions": [ @@ -11670,7 +11670,7 @@ { "path": "tools/build-desktop.ps1", "anchor": "Invoke-PakarNative -WorkingDirectory", - "sha256": "8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037" + "sha256": "720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410" }, { "path": "tools/firmware-report.mjs", @@ -11736,7 +11736,7 @@ { "path": "tools/build-desktop.ps1", "anchor": "Invoke-PakarNative -WorkingDirectory", - "sha256": "8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037" + "sha256": "720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410" }, { "path": "tools/firmware-report.mjs", @@ -11807,7 +11807,7 @@ { "path": ".github/workflows/build.yml", "anchor": "node tests/script_tooling_test.mjs", - "sha256": "2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e" + "sha256": "88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861" } ], "omissions": [ @@ -11862,7 +11862,7 @@ { "path": "tools/build-desktop.ps1", "anchor": "Invoke-PakarNative -WorkingDirectory", - "sha256": "8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037" + "sha256": "720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410" }, { "path": "tools/firmware-report.mjs", @@ -11928,7 +11928,7 @@ { "path": "tools/build-desktop.ps1", "anchor": "Invoke-PakarNative -WorkingDirectory", - "sha256": "8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037" + "sha256": "720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410" }, { "path": "tools/firmware-report.mjs", @@ -11996,7 +11996,7 @@ { "path": "tools/build-desktop.ps1", "anchor": "Invoke-PakarNative -WorkingDirectory", - "sha256": "8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037" + "sha256": "720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410" }, { "path": "tools/firmware-report.mjs", @@ -12227,7 +12227,7 @@ { "path": ".github/workflows/build.yml", "anchor": "name: \"🧰 Scripts · ${{ matrix.os }}\"", - "sha256": "2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e" + "sha256": "88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861" }, { "path": ".github/actionlint.yaml", @@ -12620,7 +12620,7 @@ { "path": ".github/workflows/build.yml", "anchor": "name: \"🔧 ESP32-S3 + AVR\"", - "sha256": "2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e" + "sha256": "88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861" }, { "path": "tools/firmware-report.mjs", @@ -13679,7 +13679,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "pub struct Transaction", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "desktop/src/ui/preferences.rs", @@ -13741,7 +13741,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "fn board_silent_preserves_other_settings", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "mobile/test/board_sound_test.dart", @@ -13756,12 +13756,12 @@ { "path": "desktop/src/board_silent.rs", "anchor": "fn board_settings_full_apply_requires_fresh_baseline_ack_and_exact_persistent_readback()", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "desktop/src/board_silent.rs", "anchor": "fn board_settings_require_each_changed_hardware_capability_and_no_programming_latch()", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "desktop/src/device_settings.rs", @@ -13820,7 +13820,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "pub struct Transaction", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "desktop/src/ui/preferences.rs", @@ -13857,7 +13857,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "fn board_silent_preserves_other_settings", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "mobile/test/board_sound_test.dart", @@ -13899,7 +13899,7 @@ }, { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "'prepare-avr-image.mjs'" } ], @@ -13950,7 +13950,7 @@ }, { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "'prepare-avr-image.mjs'" } ], @@ -15732,17 +15732,17 @@ }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "pub fn admit(" }, { "path": "desktop/src/main.rs", - "sha256": "a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a", + "sha256": "919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32", "anchor": "fn scoped_http_request(" }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "pub struct Admission" }, { @@ -15752,7 +15752,7 @@ }, { "path": "desktop/src/cell_batch.rs", - "sha256": "e1c9e090e67ac7d1da3487a8219067d0a4bc9fd471a13d6a24f7a9462bead947", + "sha256": "453787112bc914d571886b1a64a1244552d2041548bf0ea97f65e448dce7b389", "anchor": "pub struct Correlation" }, { @@ -15807,7 +15807,7 @@ }, { "path": "desktop/src/peer_identity.rs", - "sha256": "18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979", + "sha256": "bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2", "anchor": "pub fn usb_introduction_error(" } ], @@ -15851,7 +15851,7 @@ }, { "path": "desktop/src/peer_identity.rs", - "sha256": "18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979", + "sha256": "bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2", "anchor": "fn usb_introduction_error_preserves_actual_board_reason_without_suggesting_policy_bypass()" }, { @@ -15871,47 +15871,47 @@ }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_revocation_during_preflight_stops_before_write()" }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_revocation_after_dispatch_reports_uncertainty_not_success()" }, { "path": "desktop/src/main.rs", - "sha256": "a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a", + "sha256": "919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32", "anchor": "// The mapping response identifies its own producer." }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_mapping_enveloped_read_needs_no_http_status_preflight()" }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_mapping_foreign_or_previous_boot_response_is_never_adopted()" }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_mapping_incomplete_or_invalid_envelope_is_not_legacy()" }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_mapping_revoked_inflight_result_is_not_applied()" }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_mapping_expired_queue_does_not_contact_device()" }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_mapping_without_envelope_retains_both_legacy_status_fences()" }, { @@ -15921,7 +15921,7 @@ }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "fn table_write_is_exact_boot_fenced_and_post_ack_values_are_not_assumed()" }, { @@ -15971,18 +15971,18 @@ }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()" }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "fn compact_usb_readback_validates_all_values_without_renewing_full_observations()" }, { "path": "desktop/src/usb_table.rs", "anchor": "fn actual_usb_worker_windows_read_latency_does_not_expire_large_capture", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042" + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1" }, { "path": "tests/ble_wire_test.cpp", @@ -16027,7 +16027,7 @@ "targets": [ { "path": "tests/protocol_test.cpp", - "sha256": "4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144", + "sha256": "b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04", "anchor": "Adapt donor matching-identity/request assertions" }, { @@ -16037,12 +16037,12 @@ }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_settings_pin_every_nested_request_and_verify_same_boot()" }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "pub struct Operation" } ], @@ -16080,22 +16080,22 @@ }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_preflight_reboot_or_capability_loss_never_dispatches_mutation()" }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_readback_from_new_boot_is_not_applied()" }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_unfenced_mutation_fails_before_network_and_preserves_correlation()" }, { "path": "desktop/src/peer_http.rs", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50", + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b", "anchor": "fn gui_server_boot_conflict_is_not_replayed()" }, { @@ -16105,12 +16105,12 @@ }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()" }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "fn compact_usb_readback_validates_all_values_without_renewing_full_observations()" } ] @@ -16949,7 +16949,7 @@ "proof": [ { "path": "tests/protocol_test.cpp", - "sha256": "4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144", + "sha256": "b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04", "anchor": "Actual donor TestVersionedCoreAPIRoutesAreRejected cases" }, { @@ -18145,17 +18145,17 @@ "targets": [ { "path": ".github/workflows/build.yml", - "sha256": "2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e", + "sha256": "88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861", "anchor": "name: \"🚀 Build · Test · Release\"" }, { "path": "tools/build-desktop.ps1", - "sha256": "8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037", + "sha256": "720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410", "anchor": "--test-threads=1" }, { "path": "tools/ci-checks.mjs", - "sha256": "ccc3d394d143d99959677140fe0321c1a9826f6963de91433dd30e7a51c9ec8a", + "sha256": "c33954b785a09f8bf3b469fdf9a8b12133c75bf1198fa76ac050678c5ceaa64c", "anchor": "export function runChecks" }, { @@ -18167,7 +18167,8 @@ "preserved": [ "Actual donor branch/PR/tag/dispatch/merge-group triggers, concurrency policy, pinned actions without checkout credentials, health-before-build jobs, timeouts, Rust cache reuse, locked tests/builds, packaging, curated notes, manifest/checksums/provenance and aggregate results adapted to current Windows/ESP/AVR/Android targets.", "Release content is gated on all supported-target builds, created as an immutable draft prerelease, with the matched S3/AVR buffered pair and raw HTTPS update manifests. Explicit legacy packaging is preserved but the overflowing ESP8266 image is not promised as a release output. Untrusted PRs do not execute publishing code with a write token.", - "Actual donor serial native test execution, isolated test configuration and RUST_BACKTRACE=1 restored. Runtime harness flags are separated from compile jobs; immediate panic output remains available even if a later test aborts before its summary." + "Actual donor serial native test execution, isolated test configuration and RUST_BACKTRACE=1 restored. Runtime harness flags are separated from compile jobs; immediate panic output remains available even if a later test aborts before its summary.", + "Reread the full workflow at 10fc6604 and its exact diff from the previous inventory: the only added step verifies pinned canonical opcode bindings against the owner before builds. Pakar includes the equivalent mandatory upstream check; newly inventoried donor files remain pending unless separately compared." ], "omissions": [ { @@ -18196,7 +18197,7 @@ ], "improvement": "", "origin": "Pealayer", - "sha256": "bba9a295ee7b59e318f76e0b6f6a80f0aec631e249f7d8c798f6c92c0bb7fd8c", + "sha256": "2e5c933b7c1646d5cb26ddd8a10f88529de15bd205b525295858755d5044988b", "source_read": "complete", "proof": [ { @@ -18543,7 +18544,7 @@ }, { "path": "desktop/src/main.rs", - "sha256": "a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a", + "sha256": "919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32", "anchor": "fn status_bar_startup_message_respects_disconnected_and_selected_route()" }, { @@ -18811,7 +18812,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "pub struct Transaction", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "desktop/src/ui/preferences.rs", @@ -18900,7 +18901,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "fn board_silent_preserves_other_settings", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "mobile/test/board_sound_test.dart", @@ -19426,7 +19427,7 @@ "targets": [ { "path": "tools/build-desktop.ps1", - "sha256": "8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037", + "sha256": "720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410", "anchor": "Get-PakarCargoTargetDirectory" } ], @@ -19842,7 +19843,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "pub struct Transaction", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "desktop/src/ui/preferences.rs", @@ -19910,7 +19911,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "fn board_silent_preserves_other_settings", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "mobile/test/board_sound_test.dart", @@ -20012,7 +20013,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "pub struct Transaction", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "desktop/src/ui/preferences.rs", @@ -20090,7 +20091,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "fn board_silent_preserves_other_settings", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "mobile/test/board_sound_test.dart", @@ -22106,7 +22107,7 @@ }, { "path": "tools/build-mobile.ps1", - "sha256": "43982d06947af7703e0374aa9092ddd62c032fc0643445c3a21cab87206ef072", + "sha256": "0c5eee09b25ad17fc062555da65024fc84a9d8cc7c4a057d6d2e8a53d2ed8fb4", "anchor": "$taskCache=Get-DirectorySummary" } ], @@ -22735,12 +22736,12 @@ }, { "path": "desktop/src/usb_demand.rs", - "sha256": "1901dd438e454e83718feb769745bd83175a28808d746b5385d523e3c0155dac", + "sha256": "961ca5901617970235dbfc6ee6e6e169a4158253135a5e2b7a2ab7018d8662c2", "anchor": "pub struct Lease" }, { "path": "mobile/lib/usb_transport.dart", - "sha256": "6b7600fb34460397f778d5d46239e2e90954c33ae1a2b28f0b37a492185dd13b", + "sha256": "6d316b3b7ab94ed00d67cc92735696e860638bd8a91f5d9376d63dfe6b915eff", "anchor": "class PakarUsbTransport" }, { @@ -22793,7 +22794,7 @@ }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "fn usb_demand_actual_worker_has_no_full_capture_without_reader_and_releases_lease" }, { @@ -23154,7 +23155,7 @@ }, { "path": "desktop/src/main.rs", - "sha256": "a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a", + "sha256": "919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32", "anchor": "event_log.failure(\"Windows tray tooltip\", &error)" } ], @@ -23278,12 +23279,12 @@ }, { "path": "desktop/src/main.rs", - "sha256": "a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a", + "sha256": "919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32", "anchor": "fn serial_worker(" }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "pub struct Operation" } ], @@ -23315,17 +23316,17 @@ }, { "path": "desktop/src/main.rs", - "sha256": "a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a", + "sha256": "919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32", "anchor": "fn usb_selected_http_worker_never_contacts_even_a_live_network_endpoint()" }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()" }, { "path": "desktop/src/usb_table.rs", - "sha256": "13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042", + "sha256": "7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1", "anchor": "fn compact_usb_readback_validates_all_values_without_renewing_full_observations()" } ], @@ -23478,7 +23479,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "pub struct Transaction", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "desktop/src/ui/preferences.rs", @@ -23604,7 +23605,7 @@ { "path": "desktop/src/board_silent.rs", "anchor": "fn board_silent_preserves_other_settings", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "mobile/test/board_sound_test.dart", @@ -23619,12 +23620,12 @@ { "path": "desktop/src/board_silent.rs", "anchor": "fn board_settings_full_apply_requires_fresh_baseline_ack_and_exact_persistent_readback()", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "desktop/src/board_silent.rs", "anchor": "fn board_settings_require_each_changed_hardware_capability_and_no_programming_latch()", - "sha256": "e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54" + "sha256": "2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307" }, { "path": "desktop/src/device_settings.rs", @@ -24185,12 +24186,12 @@ { "path": "desktop/src/peer_http.rs", "anchor": "pub fn device_client_builder", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50" + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b" }, { "path": "desktop/src/main.rs", "anchor": "peer_http::remember_address", - "sha256": "a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a" + "sha256": "919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32" }, { "path": "firmware/esp/src/PeerLanResolver.h", @@ -24227,7 +24228,7 @@ { "path": "desktop/src/peer_http.rs", "anchor": "fn local_verified_address_override_preserves_http_hostname_and_explicit_port", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50" + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b" }, { "path": "tests/peer_relay_test.cpp", @@ -24257,7 +24258,7 @@ { "path": "desktop/src/peer_http.rs", "anchor": "fn local_address_cache_accepts_only_verified_tcp_peer_not_advertised_ip", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50" + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b" } ], "omissions": [ @@ -24284,7 +24285,7 @@ { "path": "desktop/src/peer_http.rs", "anchor": "fn local_address_cache_bounds_replaces_and_invalidates_without_ttl_or_authority", - "sha256": "4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50" + "sha256": "ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b" }, { "path": "mobile/test/network_route_recovery_test.dart", @@ -24371,7 +24372,7 @@ }, { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "CellChaseOnBoot" }, { @@ -24713,7 +24714,7 @@ }, { "path": "tools/build-firmware.ps1", - "sha256": "5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d", + "sha256": "10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067", "anchor": "CellChaseOnBoot" }, { @@ -26490,6 +26491,76 @@ "remaining": [ "Complete board firmware CI and separately authorized live device acceptance; no production deployment in this source integration." ] + }, + { + "origin": "PCController", + "path": "Tools/Build/generate-protocol-contract.mjs", + "sha256": "e065ecb653e72a0c7b7c71d315725c7d08eb42062629c5fcc7151199ab10b424", + "source_read": "complete", + "verdict": "parity-gap", + "preserved": [ + "Read the complete actual donor generator, validation, native C++/Go renderers and negative tests. Its portable validation/rendering core is extracted, enhanced with Pakar namespace allocations, pinned to canonical owner3b8fabe6 and reused byte-for-byte. Original native wire assignments/source API remain; Go names and consumer views are generated, not handwritten.", + "Both independent published fixtures and actual protected-base CI comparisons prevent old assignments being renumbered/removed even if regenerated snapshots change. Consumer pins verify exact source bytes; optional upstream verification never executes downloaded source. PowerShell provisioning and the native response matcher now consume canonical opcode references too." + ], + "targets": [ + { + "path": "interfaces/controller-wire/registry.mjs", + "sha256": "4c9b408145ce8db277fd312262b77106129c931398f50b66ff18cea14f9d7694", + "anchor": "export function validatePublishedBindings" + }, + { + "path": "interfaces/controller-wire/consumer.mjs", + "sha256": "51ca4aaa9cb8f1ba74cabc001be34c8ec82a90d14a27e6b4ed793d72c7660484", + "anchor": "Canonical opcode ownership" + }, + { + "path": "libraries/BoardCore/src/ProtocolOpcodes.h", + "sha256": "87f4c683f16a162a95e503998b351f9505bd35a6f6b5130337a1d65a150adcf9", + "anchor": "kAudioCue = 0x11" + }, + { + "path": "desktop/src/protocol_opcodes.rs", + "sha256": "d81b3e3f6208b10572ed7af3db41d2df53e8865a86401f3044554ecc6a95f803", + "anchor": "pub mod pakar" + }, + { + "path": "mobile/lib/protocol_opcodes.dart", + "sha256": "5a16fb520522d029ddf9fdc04653106b3f7f94cca6f8181bd32545e4a44ab8ff", + "anchor": "class PakarOpcode" + }, + { + "path": "tools/ProtocolOpcodes.ps1", + "sha256": "b7e58c80118cf4bc088509e36bc55031fde82c94a125a2817feabb41013d9d16", + "anchor": "enum PakarOpcode" + } + ], + "proof": [ + { + "path": "tests/opcode_registry_test.mjs", + "sha256": "14009108212aa23e2c43eb96b6103affdfe4a4c23aa073eb626cdf31706fd8da", + "anchor": "one generated owner" + }, + { + "path": "tests/protocol_test.cpp", + "sha256": "b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04", + "anchor": "Every other namespace" + }, + { + "path": "mobile/test/usb_transport_test.dart", + "sha256": "5be41161b7d31bd348b31c7d0f3c0cc836f632cf0ba5a1c3f5ecebdfcf0a3410", + "anchor": "opcode namespaces never fall back" + } + ], + "omissions": [ + { + "code": "Existing native payload semantics and complete transport/service parity", + "disposition": "pending", + "reason": "Shared allocations and namespace admission do not merge incompatible HELLO/settings/event payloads or certify hardware; retain the explicit tunnel and issues41/702." + } + ], + "remaining": [ + "Complete carrier/service parity and real deployed interoperability, timing, stack/RAM and physical acceptance separately." + ] } ] } diff --git a/docs/file-comparison.csv b/docs/file-comparison.csv index 141a8d3..ef4d89c 100644 --- a/docs/file-comparison.csv +++ b/docs/file-comparison.csv @@ -1,6 +1,6 @@ "origin","path","revision","source_sha256","concerns","tracking_issues","comparison","source_read","target_mapping","preserved","omitted_code","omission_reason","proof_mapping","improvement","remaining","runtime_acceptance" -"ControllerBoardMini","Timer/.vscode/arduino.json","filesystem-snapshot","15e208f1026c9c6bcc144d842cf4d2df0bd32b9aea5b169f486dc03fe45eafd5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete","tools/build-firmware.ps1:188 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=MiniCore:avr:328:bootloader=uart0]","Read the complete Timer donor profile. Its MiniCore ATmega328P board, UART0 Urboot, EEPROM keep, 115200 bootloader baud, modelP, 2.7 V BOD, size-LTO and external 16 MHz selections match the Puzzles profile and are retained by the canonical AVR build owner.","fixed Puzzle_WithTimer.ino, COM12 port and USBasp programmer [replaced] | editor-owned build output [replaced]","fixed Puzzle_WithTimer.ino, COM12 port and USBasp programmer: The combined build selects its role/target and the currently inventoried device explicitly; retaining a retired Timer sketch name or stale host COM/programmer assumption could build or write the wrong target. | editor-owned build output: The guarded wrapper owns one canonical low-write output/cache layout instead of allowing an editor extension to create an untracked duplicate build tree.","tests/build_storage_test.ps1:62 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=Four-box profile must keep its unique hostname]","The portable build owner retains the donor hardware profile without binding this combined project to the retired Timer sketch, one COM assignment or duplicate output.","Physical programmer/serial discovery, backup, flash and board verification remain required; a build plan is not deployment proof.","Not established by source/hash/test-code comparison; see issue #2" -"ControllerBoardMini","Timer/.vscode/c_cpp_properties.json","filesystem-snapshot","f94454e8edf978f7eb7d5ac1ed93c06186b35a03ac5e81b314855ba6a0551e9d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete",".vscode/settings.json:5 [UTF8-LF sha256=2373a0d9d9a7af54872b0ae854ccf1ff95116ef8f80aebfad513fe3031914d5f; anchor=""*.ino"": ""cpp""] | tools/build-firmware.ps1:235 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor='compile', '--jobs', ""$Jobs"", '--fqbn']","Read all 539 Timer donor lines through EOF and confirmed byte identity with the reviewed Puzzles snapshot. AVR/Arduino language ownership and compile-profile intent are retained by portable editor associations and the actual MiniCore compile command.","absolute Arduino15 compiler/core/library paths and copied avr-g++ predefined macros [replaced] | gcc-x64 IntelliSense mode and USBCON define for ATmega328P [replaced]","absolute Arduino15 compiler/core/library paths and copied avr-g++ predefined macros: Generated host/version paths and compiler-owned macros go stale and can misdescribe the selected MCU. The canonical build resolves the installed pinned toolchain and supplies the real FQBN/options. | gcc-x64 IntelliSense mode and USBCON define for ATmega328P: Those generated values do not describe the AVR target ABI and can falsely advertise USB capability; real compiler invocation remains authoritative.","","Preserves real target semantics while removing a duplicate, host-bound compiler snapshot.","A generated compile database remains a possible editor improvement only if derived from the canonical build without committed machine paths or a second cache.","Not established by source/hash/test-code comparison; see issue #2" +"ControllerBoardMini","Timer/.vscode/arduino.json","filesystem-snapshot","15e208f1026c9c6bcc144d842cf4d2df0bd32b9aea5b169f486dc03fe45eafd5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete","tools/build-firmware.ps1:190 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=MiniCore:avr:328:bootloader=uart0]","Read the complete Timer donor profile. Its MiniCore ATmega328P board, UART0 Urboot, EEPROM keep, 115200 bootloader baud, modelP, 2.7 V BOD, size-LTO and external 16 MHz selections match the Puzzles profile and are retained by the canonical AVR build owner.","fixed Puzzle_WithTimer.ino, COM12 port and USBasp programmer [replaced] | editor-owned build output [replaced]","fixed Puzzle_WithTimer.ino, COM12 port and USBasp programmer: The combined build selects its role/target and the currently inventoried device explicitly; retaining a retired Timer sketch name or stale host COM/programmer assumption could build or write the wrong target. | editor-owned build output: The guarded wrapper owns one canonical low-write output/cache layout instead of allowing an editor extension to create an untracked duplicate build tree.","tests/build_storage_test.ps1:62 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=Four-box profile must keep its unique hostname]","The portable build owner retains the donor hardware profile without binding this combined project to the retired Timer sketch, one COM assignment or duplicate output.","Physical programmer/serial discovery, backup, flash and board verification remain required; a build plan is not deployment proof.","Not established by source/hash/test-code comparison; see issue #2" +"ControllerBoardMini","Timer/.vscode/c_cpp_properties.json","filesystem-snapshot","f94454e8edf978f7eb7d5ac1ed93c06186b35a03ac5e81b314855ba6a0551e9d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete",".vscode/settings.json:5 [UTF8-LF sha256=2373a0d9d9a7af54872b0ae854ccf1ff95116ef8f80aebfad513fe3031914d5f; anchor=""*.ino"": ""cpp""] | tools/build-firmware.ps1:237 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor='compile', '--jobs', ""$Jobs"", '--fqbn']","Read all 539 Timer donor lines through EOF and confirmed byte identity with the reviewed Puzzles snapshot. AVR/Arduino language ownership and compile-profile intent are retained by portable editor associations and the actual MiniCore compile command.","absolute Arduino15 compiler/core/library paths and copied avr-g++ predefined macros [replaced] | gcc-x64 IntelliSense mode and USBCON define for ATmega328P [replaced]","absolute Arduino15 compiler/core/library paths and copied avr-g++ predefined macros: Generated host/version paths and compiler-owned macros go stale and can misdescribe the selected MCU. The canonical build resolves the installed pinned toolchain and supplies the real FQBN/options. | gcc-x64 IntelliSense mode and USBCON define for ATmega328P: Those generated values do not describe the AVR target ABI and can falsely advertise USB capability; real compiler invocation remains authoritative.","","Preserves real target semantics while removing a duplicate, host-bound compiler snapshot.","A generated compile database remains a possible editor improvement only if derived from the canonical build without committed machine paths or a second cache.","Not established by source/hash/test-code comparison; see issue #2" "ControllerBoardMini","Timer/.vscode/settings.json","filesystem-snapshot","2b2adecd7ed75d5910bdd37904e124b1af57f85d8f344b7bf448ba779be14f6b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete",".vscode/settings.json:10 [UTF8-LF sha256=2373a0d9d9a7af54872b0ae854ccf1ff95116ef8f80aebfad513fe3031914d5f; anchor=""files.exclude""] | .vscode/tasks.json:5 [UTF8-LF sha256=2681847c279d80dc8b8f0683feb126746498f73e1cd2eed4b9e9071c0ebf846d; anchor=Pakar: firmware plan (ESP32-S3)]","Read all 15 Timer donor lines and confirmed byte identity with the reviewed Puzzles settings. Tab-oriented editing and generated-build exclusion are retained and extended across the combined firmware/native/mobile workspace.","donor-only shift-register spelling exemptions and single **/[Bb]uild filter [replaced]","donor-only shift-register spelling exemptions and single **/[Bb]uild filter: The combined workspace uses its active protocol/discovery vocabulary and explicit canonical output exclusions; source identifiers remain visible to the language service without broad spelling exemptions or hiding arbitrary source folders.","","Extends the donor's workspace hygiene across all current project surfaces while keeping execution behind guarded plan entrypoints.","Workspace settings and plan tasks are developer convenience, not firmware build, deployment or physical acceptance.","Not established by source/hash/test-code comparison; see issue #2" "ControllerBoardMini","Timer/LocalLib/Keys.cpp","filesystem-snapshot","9ceb7e764ef9d4d5feb62b2c7a22eed59d614b7b56432fae87ce87b4aa434578","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","firmware/avr/avr.ino:586 [UTF8-LF sha256=537e5eab12a33a3e4834326257d9210ec16eb7fc9123c1a9d0d45e530211c370; anchor=void serviceInputs(] | firmware/avr/avr.ino:564 [UTF8-LF sha256=537e5eab12a33a3e4834326257d9210ec16eb7fc9123c1a9d0d45e530211c370; anchor=void boardKeyGesture(]","Read the complete Timer implementation and confirmed byte identity with Puzzles. Its active-low virtual/physical merge, stable-change callback and pressed callback semantics are retained by the current mode-aware AVR input owner. | Handoff AVR role guard: the shared callback retains table input/menu handling without linking first-wins-only ownership state; keycontroller still forwards Down/Up exclusively while the ESP owns the game. Actual callback is compiled/executed for both role flags; no saved state or input timing changed.","fixed 50 ms debounce and callback-only press surface [pending] | global registerIn/virtualRegister dependency [replaced]","fixed 50 ms debounce and callback-only press surface: The configurable classifier publishes game-relevant Down/Up plus gestures, but its faster default remains subject to physical bounce and latency acceptance. | global registerIn/virtualRegister dependency: The typed ShiftRegisters owner supplies bounded samples and virtual inputs without mutable donor globals or macro double evaluation.","tests/key_minigame_integration_test.mjs:9 [UTF8-LF sha256=130cf0dde2c4f818133662c846bacb48ed4b4afc7149d877a040f120d55f41b3; anchor=test('actual AVR key callback]","","Perform the four-box physical key-order, bounce, release and UART latency test.","Not established by source/hash/test-code comparison; see issue #2" "ControllerBoardMini","Timer/LocalLib/Keys.h","filesystem-snapshot","caa21fe97e3df262f0821bd582b60f2895a14ec193d7d6fec13321afe4c5a46d","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","firmware/avr/avr.ino:586 [UTF8-LF sha256=537e5eab12a33a3e4834326257d9210ec16eb7fc9123c1a9d0d45e530211c370; anchor=void serviceInputs(] | firmware/avr/avr.ino:564 [UTF8-LF sha256=537e5eab12a33a3e4834326257d9210ec16eb7fc9123c1a9d0d45e530211c370; anchor=void boardKeyGesture(]","Read the complete Timer header and confirmed byte identity with the reviewed Puzzles key API. Active-low physical/virtual input state, stable transitions, callbacks and releases are retained through the mode-aware classifier and board sample adapter.","fixed DEBOUNCE_MS = 50 [pending] | Key virtual readCurrentState/onStateChanged and raw lower-four order [replaced]","fixed DEBOUNCE_MS = 50: The target uses configurable PAKAR_KEY_DEBOUNCE_MS (default 20 ms), but physical bounce and switch-to-UART latency still need measurement on the four-box board. | Key virtual readCurrentState/onStateChanged and raw lower-four order: One sample adapter feeds the imported classifier; first-wins uses direct donor input order while the table role retains its separate PCController order.","","","Verify all four physical input bits, releases, bounce and end-to-end UART event latency on the commissioned board.","Not established by source/hash/test-code comparison; see issue #2" @@ -16,10 +16,10 @@ "ControllerBoardMini","Timer/LocalLib/WS2811.cpp","filesystem-snapshot","0f7fec7879abd26dbf2d56df28441727ea76fcb9e093f009d39f20cae77832bb","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","firmware/esp/src/LedGrid.cpp:34 [UTF8-LF sha256=9e08798277b72ee4420add3d3dc530dce83bf507e824a088439c7dc123211793; anchor=FastLED.addLeds deadline, null callbacks and post-callback itemCount decrement; PCController eight slots, implicit millis-only addTask and same-pass additions [replaced] | Puzzles Callback(void), both global taskManager and PCController serviceTasks wrapper; unused Puzzles index/full/empty helpers [replaced]","Puzzles startsAt==0 sentinel, strict now > deadline, null callbacks and post-callback itemCount decrement; PCController eight slots, implicit millis-only addTask and same-pass additions: Use newer explicit occupancy/pre-callback retirement, ten-slot capacity, optional shared command clock, half-range bound and eligibility mask. Zero/wrap/reentrant/canceled/replaced/new callback regressions execute actual production code; no heap or callback batch copy. | Puzzles Callback(void), both global taskManager and PCController serviceTasks wrapper; unused Puzzles index/full/empty helpers: Keep typed context callbacks, count/clear API inside BoardCore and one AVR-owned instance, explicitly serviced in loop. No unsafe function-pointer cast or cross-board global allocation. This is an adapted capability, not drop-in ABI aliases. Slots remain reusable indices; owners discard canceled handles.","tests/tasks_test.cpp:61 [UTF8-LF sha256=1fc35f2e57d21d42048e392a28bdb09c123d7cf84a3a4c9a45c03534dc19977e; anchor=Reset-owner use] | tests/tasks_wiring_test.mjs:11 [UTF8-LF sha256=d2d8887cf8df5bfdb6e305955b5ee993785c141801b421b7b55d277423e0bc34; anchor=No parallel uncancellable reset timer]","Restore tested actual scheduler consumption and ten-slot capacity; no zero deadline ambiguity or recursive same-pass scheduling. Loop-only service must run within half the clock and callbacks must not block.","Physical watchdog/Prog/reset-versus-ISP and cooperative service latency acceptance; clock doubles/source/compile do not prove board timing. Other donor features remain independently pending.","Not established by source/hash/test-code comparison; see issue #2" "PCController","LocalLib/Tasks.h","b0111ae0c80dc34149ea1044de7dd5488920301b","eeafda75fd9b4e0830c77d31546b047a326da63448b9bb73800b65c2394569de","cooperative-tasks | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","scoped-improvement","complete","libraries/BoardCore/src/Tasks.h:11 [UTF8-LF sha256=1726bd6aed88da9964bfce4bbc27becb58e10f85acc4b5b04d1b20741b6e7e74; anchor=class Tasks] | libraries/BoardCore/src/Tasks.cpp:7 [UTF8-LF sha256=55aac682e670f2aa62832818c60d45d508c85729aca242ff306439e9f4a1fb8b; anchor=void Tasks::update(] | firmware/avr/avr.ino:193 [UTF8-LF sha256=537e5eab12a33a3e4834326257d9210ec16eb7fc9123c1a9d0d45e530211c370; anchor=cancelDeferredReset(); // A previously ACKed reset]","Fully read original donor. Actual PCController context/occupancy/count/cancel/clear/deadline code adapted in existing BoardCore implementation; Puzzles/Timer ten-slot capacity restored. Actual AVR loop services the scheduler and uses it for the100ms Reset delay, canceled on Prog entry. | Cancellation/clear suppress later due work, callback-added/replaced slots wait for next outer pass, recursive update is blocked, zero/exact/wrapped deadlines work and half-range delays reject.","Puzzles startsAt==0 sentinel, strict now > deadline, null callbacks and post-callback itemCount decrement; PCController eight slots, implicit millis-only addTask and same-pass additions [replaced] | Puzzles Callback(void), both global taskManager and PCController serviceTasks wrapper; unused Puzzles index/full/empty helpers [replaced]","Puzzles startsAt==0 sentinel, strict now > deadline, null callbacks and post-callback itemCount decrement; PCController eight slots, implicit millis-only addTask and same-pass additions: Use newer explicit occupancy/pre-callback retirement, ten-slot capacity, optional shared command clock, half-range bound and eligibility mask. Zero/wrap/reentrant/canceled/replaced/new callback regressions execute actual production code; no heap or callback batch copy. | Puzzles Callback(void), both global taskManager and PCController serviceTasks wrapper; unused Puzzles index/full/empty helpers: Keep typed context callbacks, count/clear API inside BoardCore and one AVR-owned instance, explicitly serviced in loop. No unsafe function-pointer cast or cross-board global allocation. This is an adapted capability, not drop-in ABI aliases. Slots remain reusable indices; owners discard canceled handles.","tests/tasks_test.cpp:61 [UTF8-LF sha256=1fc35f2e57d21d42048e392a28bdb09c123d7cf84a3a4c9a45c03534dc19977e; anchor=Reset-owner use] | tests/tasks_wiring_test.mjs:11 [UTF8-LF sha256=d2d8887cf8df5bfdb6e305955b5ee993785c141801b421b7b55d277423e0bc34; anchor=No parallel uncancellable reset timer]","Restore tested actual scheduler consumption and ten-slot capacity; no zero deadline ambiguity or recursive same-pass scheduling. Loop-only service must run within half the clock and callbacks must not block.","Physical watchdog/Prog/reset-versus-ISP and cooperative service latency acceptance; clock doubles/source/compile do not prove board timing. Other donor features remain independently pending.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","LocalLib/TonePlayer.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","08b41c4240ec899a3184525a864740b2762e7e675d75302c0adbdb27b4a6e511","audio-attention | board-silent | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","scoped-improvement","complete","firmware/avr/TonePlayer.h:19 [UTF8-LF sha256=c102c4d0a789f9d19e8c94db92001caf489beca04e65dead01186d91998c2cde; anchor=bool enqueue] | firmware/avr/TonePlayer.cpp:87 [UTF8-LF sha256=6c578fb07b1c5059d1d03690beed73806a77b9d28cd05359d9f225b945275ed1; anchor=startsAt = stepEndsAt_] | desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(] | firmware/avr/BootMelody.cpp:37 [UTF8-LF sha256=fad1505f9cedc196236fc782ae2ec71a3c9fb8784659a1955affdf9e44137247; anchor=case kCueAttention:] | libraries/BoardCore/src/AttentionCues.h:13 [UTF8-LF sha256=02693199ab57f58a0531f46d8afa05ccd46dbd4c28b8db50b55bf5e4d1cff7b6; anchor=class Upload] | tools/test-audio.ps1:18 [UTF8-LF sha256=41500a0595fe030dd36f70175b56ee6f16ff62fe3bd1b2d9bf9bb29e94f90b30; anchor=Audio ·]","Timer1 OC1A PB1/D9 hardware output without audio ISR; ten-step nonblocking ring queue; silent pauses; begin/stop/mute and active telemetry. | PCController already uses Timer1 hardware toggling; that is reuse, not a Pakar invention. | Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes. | Silent changes increment tone revision immediately (including no active note); unmute follows donor behavior and does not restart an interrupted note. Timeline metadata remains available for independently configured host mirroring; all fourteen cues stay electrically silent while muted. | The existing Timer1/nonblocking player now also owns a finite 240ms attention cue, additive ID14; cue count is ACK-gated across all clients. Silent/Prog behavior and original melodies remain unchanged.","now + step.durationMs; nondelegating default constructor; stale idle active-frequency metadata [replaced] | Permissive enqueue of unsupported frequency/zero-duration requests [replaced]","now + step.durationMs; nondelegating default constructor; stale idle active-frequency metadata: Pakar delegates construction, anchors the next step to the previous deadline, skips fully expired steps, and zeros idle metadata. Register-double tests exercise late calls, wraparound and idle state. | Permissive enqueue of unsupported frequency/zero-duration requests: Rejecting zero durations and nonzero frequencies outside 20..20000 Hz matches the bounded wire contract and avoids silently scheduling an unplayable request.","tests/tone_player_test.cpp:40 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=player.update(start+270)] | tests/tone_player_test.cpp:51 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=player.setMuted(false)] | tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of [] | tests/tone_player_test.cpp:208 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=fifteen finite cues] | tests/attention_cues_test.cpp:10 [UTF8-LF sha256=2b6bd229d5c9b9c5bdc233b97b88ca4d3422e34fad2dcb20dbb11db46732b3b0; anchor=Late disconnect cannot replace completion]","Tested late-loop and wraparound timing without cumulative melody-length drift; initialized default construction; validation at enqueue; mute changes publish immediately; unmute no longer restarts an interrupted note.","Physical timing, mute/unmute acoustics and supply/clock validity remain issue #2 gates. | Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","LocalLib/TonePlayer.h","b0111ae0c80dc34149ea1044de7dd5488920301b","edb2f40cfdfb37d1c08867c121c617beb8f9f53ad2583855ae2218a07eb9fd89","audio-attention | board-silent | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","scoped-improvement","complete","firmware/avr/TonePlayer.h:19 [UTF8-LF sha256=c102c4d0a789f9d19e8c94db92001caf489beca04e65dead01186d91998c2cde; anchor=bool enqueue] | firmware/avr/TonePlayer.cpp:87 [UTF8-LF sha256=6c578fb07b1c5059d1d03690beed73806a77b9d28cd05359d9f225b945275ed1; anchor=startsAt = stepEndsAt_] | desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(] | firmware/avr/BootMelody.cpp:37 [UTF8-LF sha256=fad1505f9cedc196236fc782ae2ec71a3c9fb8784659a1955affdf9e44137247; anchor=case kCueAttention:]","Timer1 OC1A PB1/D9 hardware output without audio ISR; ten-step nonblocking ring queue; silent pauses; begin/stop/mute and active telemetry. | PCController already uses Timer1 hardware toggling; that is reuse, not a Pakar invention. | Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes. | Silent changes increment tone revision immediately (including no active note); unmute follows donor behavior and does not restart an interrupted note. Timeline metadata remains available for independently configured host mirroring; all fourteen cues stay electrically silent while muted. | The existing Timer1/nonblocking player now also owns a finite 240ms attention cue, additive ID14; cue count is ACK-gated across all clients. Silent/Prog behavior and original melodies remain unchanged.","now + step.durationMs; nondelegating default constructor; stale idle active-frequency metadata [replaced] | Permissive enqueue of unsupported frequency/zero-duration requests [replaced]","now + step.durationMs; nondelegating default constructor; stale idle active-frequency metadata: Pakar delegates construction, anchors the next step to the previous deadline, skips fully expired steps, and zeros idle metadata. Register-double tests exercise late calls, wraparound and idle state. | Permissive enqueue of unsupported frequency/zero-duration requests: Rejecting zero durations and nonzero frequencies outside 20..20000 Hz matches the bounded wire contract and avoids silently scheduling an unplayable request.","tests/tone_player_test.cpp:40 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=player.update(start+270)] | tests/tone_player_test.cpp:51 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=player.setMuted(false)] | tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of [] | tests/tone_player_test.cpp:208 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=fifteen finite cues]","Tested late-loop and wraparound timing without cumulative melody-length drift; initialized default construction; validation at enqueue; mute changes publish immediately; unmute no longer restarts an interrupted note.","Physical timing, mute/unmute acoustics and supply/clock validity remain issue #2 gates. | Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","LocalLib/TonePlayer.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","08b41c4240ec899a3184525a864740b2762e7e675d75302c0adbdb27b4a6e511","audio-attention | board-silent | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","scoped-improvement","complete","firmware/avr/TonePlayer.h:19 [UTF8-LF sha256=c102c4d0a789f9d19e8c94db92001caf489beca04e65dead01186d91998c2cde; anchor=bool enqueue] | firmware/avr/TonePlayer.cpp:87 [UTF8-LF sha256=6c578fb07b1c5059d1d03690beed73806a77b9d28cd05359d9f225b945275ed1; anchor=startsAt = stepEndsAt_] | desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(] | firmware/avr/BootMelody.cpp:37 [UTF8-LF sha256=fad1505f9cedc196236fc782ae2ec71a3c9fb8784659a1955affdf9e44137247; anchor=case kCueAttention:] | libraries/BoardCore/src/AttentionCues.h:13 [UTF8-LF sha256=02693199ab57f58a0531f46d8afa05ccd46dbd4c28b8db50b55bf5e4d1cff7b6; anchor=class Upload] | tools/test-audio.ps1:18 [UTF8-LF sha256=41500a0595fe030dd36f70175b56ee6f16ff62fe3bd1b2d9bf9bb29e94f90b30; anchor=Audio ·]","Timer1 OC1A PB1/D9 hardware output without audio ISR; ten-step nonblocking ring queue; silent pauses; begin/stop/mute and active telemetry. | PCController already uses Timer1 hardware toggling; that is reuse, not a Pakar invention. | Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes. | Silent changes increment tone revision immediately (including no active note); unmute follows donor behavior and does not restart an interrupted note. Timeline metadata remains available for independently configured host mirroring; all fourteen cues stay electrically silent while muted. | The existing Timer1/nonblocking player now also owns a finite 240ms attention cue, additive ID14; cue count is ACK-gated across all clients. Silent/Prog behavior and original melodies remain unchanged.","now + step.durationMs; nondelegating default constructor; stale idle active-frequency metadata [replaced] | Permissive enqueue of unsupported frequency/zero-duration requests [replaced]","now + step.durationMs; nondelegating default constructor; stale idle active-frequency metadata: Pakar delegates construction, anchors the next step to the previous deadline, skips fully expired steps, and zeros idle metadata. Register-double tests exercise late calls, wraparound and idle state. | Permissive enqueue of unsupported frequency/zero-duration requests: Rejecting zero durations and nonzero frequencies outside 20..20000 Hz matches the bounded wire contract and avoids silently scheduling an unplayable request.","tests/tone_player_test.cpp:40 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=player.update(start+270)] | tests/tone_player_test.cpp:51 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=player.setMuted(false)] | tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of [] | tests/tone_player_test.cpp:208 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=fifteen finite cues] | tests/attention_cues_test.cpp:10 [UTF8-LF sha256=2b6bd229d5c9b9c5bdc233b97b88ca4d3422e34fad2dcb20dbb11db46732b3b0; anchor=Late disconnect cannot replace completion]","Tested late-loop and wraparound timing without cumulative melody-length drift; initialized default construction; validation at enqueue; mute changes publish immediately; unmute no longer restarts an interrupted note.","Physical timing, mute/unmute acoustics and supply/clock validity remain issue #2 gates. | Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","LocalLib/TonePlayer.h","b0111ae0c80dc34149ea1044de7dd5488920301b","edb2f40cfdfb37d1c08867c121c617beb8f9f53ad2583855ae2218a07eb9fd89","audio-attention | board-silent | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","scoped-improvement","complete","firmware/avr/TonePlayer.h:19 [UTF8-LF sha256=c102c4d0a789f9d19e8c94db92001caf489beca04e65dead01186d91998c2cde; anchor=bool enqueue] | firmware/avr/TonePlayer.cpp:87 [UTF8-LF sha256=6c578fb07b1c5059d1d03690beed73806a77b9d28cd05359d9f225b945275ed1; anchor=startsAt = stepEndsAt_] | desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(] | firmware/avr/BootMelody.cpp:37 [UTF8-LF sha256=fad1505f9cedc196236fc782ae2ec71a3c9fb8784659a1955affdf9e44137247; anchor=case kCueAttention:]","Timer1 OC1A PB1/D9 hardware output without audio ISR; ten-step nonblocking ring queue; silent pauses; begin/stop/mute and active telemetry. | PCController already uses Timer1 hardware toggling; that is reuse, not a Pakar invention. | Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes. | Silent changes increment tone revision immediately (including no active note); unmute follows donor behavior and does not restart an interrupted note. Timeline metadata remains available for independently configured host mirroring; all fourteen cues stay electrically silent while muted. | The existing Timer1/nonblocking player now also owns a finite 240ms attention cue, additive ID14; cue count is ACK-gated across all clients. Silent/Prog behavior and original melodies remain unchanged.","now + step.durationMs; nondelegating default constructor; stale idle active-frequency metadata [replaced] | Permissive enqueue of unsupported frequency/zero-duration requests [replaced]","now + step.durationMs; nondelegating default constructor; stale idle active-frequency metadata: Pakar delegates construction, anchors the next step to the previous deadline, skips fully expired steps, and zeros idle metadata. Register-double tests exercise late calls, wraparound and idle state. | Permissive enqueue of unsupported frequency/zero-duration requests: Rejecting zero durations and nonzero frequencies outside 20..20000 Hz matches the bounded wire contract and avoids silently scheduling an unplayable request.","tests/tone_player_test.cpp:40 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=player.update(start+270)] | tests/tone_player_test.cpp:51 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=player.setMuted(false)] | tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of [] | tests/tone_player_test.cpp:208 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=fifteen finite cues]","Tested late-loop and wraparound timing without cumulative melody-length drift; initialized default construction; validation at enqueue; mute changes publish immediately; unmute no longer restarts an interrupted note.","Physical timing, mute/unmute acoustics and supply/clock validity remain issue #2 gates. | Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Makefile","b0111ae0c80dc34149ea1044de7dd5488920301b","7c368e4997a4fb24e7ef1c01b8971dfecf700dbba4ce65c7286b4bd629491f49","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","mobile/.gitignore","b0111ae0c80dc34149ea1044de7dd5488920301b","441eaa1de5b3db9fae056e7503567e9f8dd94173e1389c60f76956abf729015a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","mobile/.metadata","b0111ae0c80dc34149ea1044de7dd5488920301b","8518e1a41648d418b00f13f1d1e963c7903b6a2b6d9e9102110598a67be0357b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" @@ -230,7 +230,7 @@ "PCController","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/AutomationReceiver.kt","b0111ae0c80dc34149ea1044de7dd5488920301b","62b35a9e21256156419bcd4a75cb2b0bb3f4ac0a635e2fab9348c735e74ffd7c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/BuzzerPcm.kt","b0111ae0c80dc34149ea1044de7dd5488920301b","50f86743a860cfafafde97113347c2cd6c93d046b5ac2a5a75b547e655770e3e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/DiscoveryChannel.kt","b0111ae0c80dc34149ea1044de7dd5488920301b","b4b829b34dfd99d1cadcd05b4d15b23e1277d6d8ffa82090f2abfd4843d48c5c","host-wifi | mobile-app-updates | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/31","parity-gap","complete","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/AppUpdateDiscoveryChannel.kt:16 [UTF8-LF sha256=671c6d58afc2c594f4bd7df89cbd7d98b233b43c7be14fc5697109924bdd4678; anchor=class AppUpdateDiscoveryChannel] | mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/HostWifiChannel.kt:25 [UTF8-LF sha256=f13356e25411713c0075585d3e3618452773d0f19d909e7360173302371b735e; anchor=class HostWifiChannel] | mobile/lib/host_wifi.dart:11 [UTF8-LF sha256=0d2d6572a327b800e5ae5f34f670e427ed2ef5c216ba8b28e4d0471dcbe3268a; anchor=class HostWifi] | desktop/src/platform/host_wifi.rs:102 [UTF8-LF sha256=acbb40d2fa47e1c098c656dfe118e2aaf907036debeb9c00c016953139e446b4; anchor=pub fn join] | desktop/src/ui/host_wifi.rs:21 [UTF8-LF sha256=b6d400eb8e1ddbfb59138452f61081eddd8d561629dc61a1ccc2c1af4613de08; anchor=pub fn draw] | mobile/lib/app_update_discovery.dart:58 [UTF8-LF sha256=ac6157940d99d94c21a32e7baebe1e7d05d868fb432016f63cd2efad74fd2fc8; anchor=verifyAppUpdatePeer]","Actual Android NSD browse/resolve/registration and multicast lock lifecycle adapted to app-package-only service. Dart uses bounded SSDP/MNDP messages plus exact package manifests; raw advertisements never grant install or board control. Issue #31 reread the complete actual DiscoveryChannel and reused main-loop callback ownership, stale-callback rejection and close-time retirement in HostWifiChannel. Donor has no host Wi-Fi join implementation: Android NetworkSpecifier/save-network consent and Windows Native Wi-Fi profile calls are new platform integration, not a claimed donor import. Windows UI reuses existing fixed-geometry dialog/dropdown controls; no implicit join on render/discovery, no passwords in app preferences and no claim that OS acceptance verifies a board.","Remaining generic donor/platform acceptance outside this bounded update slice [pending]","Remaining generic donor/platform acceptance outside this bounded update slice: Android foreground services/background uptime, split APKs and signing-key rotation, direct Android USB-host firmware programming, generic host RPC parity and actual Android/LAN/TLS/ESP/AVR physical acceptance remain separate. Exact self-package signer sets and newer version codes fail closed; no silent installer or uncertain programming replay.","mobile/test/app_update_discovery_test.dart:37 [UTF8-LF sha256=202d5265b03db20e13768806bf617a944ddd3a70f7241d17e559c3c319bdede9; anchor=Actual manifest GET] | mobile/test/host_wifi_test.dart:9 [UTF8-LF sha256=89de0319a0a89f2f8fcf72eecdf642a93db117de9021c9198f0e619f87e9eb88; anchor=network hints use reported SSIDs] | desktop/src/ui/host_wifi.rs:108 [UTF8-LF sha256=b6d400eb8e1ddbfb59138452f61081eddd8d561629dc61a1ccc2c1af4613de08; anchor=fn rendering_does_not_join_or_scan]","","Issue #7/#2/#3: actual installed Android peer transfer/OS consent/remote endpoint/board flash and human acceptance; source tests and staged APK are not deployment.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/MainActivity.kt","b0111ae0c80dc34149ea1044de7dd5488920301b","5bf90a090b5975f5dc3b7e09ed47ba09e9dad8bf812515902b24cacc35e9a618","usb-otg | mobile-firmware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/MainActivity.kt:32 [UTF8-LF sha256=262271e184d4287fa3e2a6dc8cac9cae7f5cb0cdf7e2b143ecfaa4288bdfd0cf; anchor=private val firmwareMaximum = 0x330000 - 1] | mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/UsbControllerChannel.kt:22 [UTF8-LF sha256=9261161c45322fdd1b277b4deb13dbefd10a31d112e610e04490314f83e0af57; anchor=class UsbControllerChannel] | mobile/lib/documents.dart:19 [UTF8-LF sha256=9b447b248f21e855c2481e28c6c31e66969af5ab837fd32e4d57eb76164b9ff5; anchor=class AndroidDocuments] | mobile/lib/firmware_image.dart:8 [UTF8-LF sha256=274b96b95c959594b8720f40d4998dc6e307ed8fe31e82093c19b581ea4a0654; anchor=abstract final class FirmwareImagePolicy]","Actual canonical 8269-byte MainActivity read completely through EOF by the mobile owner and evidence owner. Retains real ACTION_OPEN_DOCUMENT/ACTION_CREATE_DOCUMENT, single selection, bounded executor-based input reads, cancellation, one outstanding document operation, one-use random destination token consumed before write, explicit abandon without deletion, finite byte export and close-time token/pending cleanup. Pakar package/channel names replace PCController identity, not its document ownership contract. | USB-OTG review reread the complete canonical MainActivity through EOF at the recorded donor hash. Reuse its owned platform-channel/executor/close-time retirement pattern for UsbControllerChannel. No Android USB driver exists in the inventoried donor: Android UsbManager is a new bounded CDC ACM adapter, not a claimed wholesale donor import. Native USB enumeration, permission and external-power safety remain physical acceptance gates. | The obsolete generic2097152-byte intake/export ceiling is replaced by the same exclusive0x330000 S3 application-slot ceiling used by Dart firmware admission. Native SAF remains only a bounded byte/document provider: selected-board chip/hash-header/capacity/SHA checks happen in the firmware owner before upload. A selected or exported document never automatically programs ESP or AVR. | 2026-10-27 minigame mobile gate reread the complete canonical donor and Pakar MainActivity through EOF. The donor remains clean at b0111ae0c80dc34149ea1044de7dd5488920301b with original-byte SHA256 5bf90a090b5975f5dc3b7e09ed47ba09e9dad8bf812515902b24cacc35e9a618; restored that source identity after it had been replaced by the identically named target hash. Existing bounded SAF/token/lifecycle adaptation and pending automation/preferences/upgrade omissions remain unchanged; this narrow rereview makes no new Android runtime or broad parity claim.","AutomationBridge.channel, automation MethodChannel and cleanup [pending] | PreferencesChannel and preferences.launch from onNewIntent [pending] | UpgradeChannel construction/lifecycle and whole-activity discovery/tone/app-update parity [pending]","AutomationBridge.channel, automation MethodChannel and cleanup: The donor's generic Android automation bridge is not part of this SAF/image-limit change. App-to-app remote commands and intent authorization require their actual implementation/dependency review; no document channel or BLE integration is claimed to substitute for it. | PreferencesChannel and preferences.launch from onNewIntent: Pakar has its own preferences UI but does not yet import this donor's OS preference-launch/new-intent lifecycle. Opening SAF or retaining Flutter state does not implement that useful Android contract. | UpgradeChannel construction/lifecycle and whole-activity discovery/tone/app-update parity: Pakar separately owns AppUpdateChannel, peer-discovery, BLE and tone channels; this row certifies only the inspected SAF adaptation, not full donor upgrade/automation/discovery/mirroring equivalence or provider/OS behavior. Keep their owning rows and remaining acceptance rather than infer parity from class names.","mobile/test/documents_test.dart:64 [UTF8-LF sha256=641aee7d7a005c5c309683cf98154f571c1e3c398dd5674fc68b020807807df0; anchor=S3 document intake above 2MiB uses one bounded slot policy] | mobile/test/documents_test.dart:38 [UTF8-LF sha256=641aee7d7a005c5c309683cf98154f571c1e3c398dd5674fc68b020807807df0; anchor=Changed owner while choosing export abandons token; never writes or deletes] | mobile/test/usb_transport_test.dart:324 [UTF8-LF sha256=c18934fdea3c2001264dcab582a4ebf1c1f5b7897c9ffc514821e4c6047c563f; anchor=Real channel session performs HELLO introduction snapshot and atomic batch without HTTP or DNS] | mobile/test/firmware_image_test.dart:215 [UTF8-LF sha256=81f47d2e4a07740c1dab37cf55849a8a5c91eddf47631e7b631da5dad7b6ca4b; anchor=Wrong chip or observed small slot cannot reach manual mutation]","","Verify actual Android document providers, cancellation, process/activity destruction, exact selected-byte upload/export and one-use-token failure behavior on the authorized phone. Dart MethodChannel fixtures are not native SAF/provider or physical OTA proof. Finish useful omitted automation/preferences/new-intent/upgrade lifecycle imports with exact source evidence.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/MainActivity.kt","b0111ae0c80dc34149ea1044de7dd5488920301b","5bf90a090b5975f5dc3b7e09ed47ba09e9dad8bf812515902b24cacc35e9a618","usb-otg | mobile-firmware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/MainActivity.kt:32 [UTF8-LF sha256=262271e184d4287fa3e2a6dc8cac9cae7f5cb0cdf7e2b143ecfaa4288bdfd0cf; anchor=private val firmwareMaximum = 0x330000 - 1] | mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/UsbControllerChannel.kt:22 [UTF8-LF sha256=9261161c45322fdd1b277b4deb13dbefd10a31d112e610e04490314f83e0af57; anchor=class UsbControllerChannel] | mobile/lib/documents.dart:19 [UTF8-LF sha256=9b447b248f21e855c2481e28c6c31e66969af5ab837fd32e4d57eb76164b9ff5; anchor=class AndroidDocuments] | mobile/lib/firmware_image.dart:8 [UTF8-LF sha256=274b96b95c959594b8720f40d4998dc6e307ed8fe31e82093c19b581ea4a0654; anchor=abstract final class FirmwareImagePolicy]","Actual canonical 8269-byte MainActivity read completely through EOF by the mobile owner and evidence owner. Retains real ACTION_OPEN_DOCUMENT/ACTION_CREATE_DOCUMENT, single selection, bounded executor-based input reads, cancellation, one outstanding document operation, one-use random destination token consumed before write, explicit abandon without deletion, finite byte export and close-time token/pending cleanup. Pakar package/channel names replace PCController identity, not its document ownership contract. | USB-OTG review reread the complete canonical MainActivity through EOF at the recorded donor hash. Reuse its owned platform-channel/executor/close-time retirement pattern for UsbControllerChannel. No Android USB driver exists in the inventoried donor: Android UsbManager is a new bounded CDC ACM adapter, not a claimed wholesale donor import. Native USB enumeration, permission and external-power safety remain physical acceptance gates. | The obsolete generic2097152-byte intake/export ceiling is replaced by the same exclusive0x330000 S3 application-slot ceiling used by Dart firmware admission. Native SAF remains only a bounded byte/document provider: selected-board chip/hash-header/capacity/SHA checks happen in the firmware owner before upload. A selected or exported document never automatically programs ESP or AVR. | 2026-10-27 minigame mobile gate reread the complete canonical donor and Pakar MainActivity through EOF. The donor remains clean at b0111ae0c80dc34149ea1044de7dd5488920301b with original-byte SHA256 5bf90a090b5975f5dc3b7e09ed47ba09e9dad8bf812515902b24cacc35e9a618; restored that source identity after it had been replaced by the identically named target hash. Existing bounded SAF/token/lifecycle adaptation and pending automation/preferences/upgrade omissions remain unchanged; this narrow rereview makes no new Android runtime or broad parity claim.","AutomationBridge.channel, automation MethodChannel and cleanup [pending] | PreferencesChannel and preferences.launch from onNewIntent [pending] | UpgradeChannel construction/lifecycle and whole-activity discovery/tone/app-update parity [pending]","AutomationBridge.channel, automation MethodChannel and cleanup: The donor's generic Android automation bridge is not part of this SAF/image-limit change. App-to-app remote commands and intent authorization require their actual implementation/dependency review; no document channel or BLE integration is claimed to substitute for it. | PreferencesChannel and preferences.launch from onNewIntent: Pakar has its own preferences UI but does not yet import this donor's OS preference-launch/new-intent lifecycle. Opening SAF or retaining Flutter state does not implement that useful Android contract. | UpgradeChannel construction/lifecycle and whole-activity discovery/tone/app-update parity: Pakar separately owns AppUpdateChannel, peer-discovery, BLE and tone channels; this row certifies only the inspected SAF adaptation, not full donor upgrade/automation/discovery/mirroring equivalence or provider/OS behavior. Keep their owning rows and remaining acceptance rather than infer parity from class names.","mobile/test/documents_test.dart:64 [UTF8-LF sha256=641aee7d7a005c5c309683cf98154f571c1e3c398dd5674fc68b020807807df0; anchor=S3 document intake above 2MiB uses one bounded slot policy] | mobile/test/documents_test.dart:38 [UTF8-LF sha256=641aee7d7a005c5c309683cf98154f571c1e3c398dd5674fc68b020807807df0; anchor=Changed owner while choosing export abandons token; never writes or deletes] | mobile/test/usb_transport_test.dart:348 [UTF8-LF sha256=5be41161b7d31bd348b31c7d0f3c0cc836f632cf0ba5a1c3f5ecebdfcf0a3410; anchor=Real channel session performs HELLO introduction snapshot and atomic batch without HTTP or DNS] | mobile/test/firmware_image_test.dart:215 [UTF8-LF sha256=81f47d2e4a07740c1dab37cf55849a8a5c91eddf47631e7b631da5dad7b6ca4b; anchor=Wrong chip or observed small slot cannot reach manual mutation]","","Verify actual Android document providers, cancellation, process/activity destruction, exact selected-byte upload/export and one-use-token failure behavior on the authorized phone. Dart MethodChannel fixtures are not native SAF/provider or physical OTA proof. Finish useful omitted automation/preferences/new-intent/upgrade lifecycle imports with exact source evidence.","Not established by source/hash/test-code comparison; see issue #2" "PCController","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/PreferencesChannel.kt","b0111ae0c80dc34149ea1044de7dd5488920301b","bcb2e5893fcb8a7d1036b23b322c0743ef65468975abbf42d9a783751dd718ec","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/ToneMirrorChannel.kt","b0111ae0c80dc34149ea1044de7dd5488920301b","e84a6eaffab4096a3eb29b51c83cb41da0548390d5bbad1fe28e8f895c67ec4a","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/UpgradeChannel.kt","b0111ae0c80dc34149ea1044de7dd5488920301b","c35459e58af7b325f450aa54e20a797efadde5006da1683f370500b2ffea3cc4","mobile-app-updates","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/AppUpdateChannel.kt:37 [UTF8-LF sha256=2a9844c3b879deac14ef05f3b2dbf808e2d9e8ede93a818d951a84c9d82804b8; anchor=class AppUpdateChannel]","Actual private staging/storage/size/hash/self-package/signer/newer-version/minSDK/ABI validation and Android PackageInstaller user-consent/receipt flow. Added SAF import/export, bounded native queue, same digest immediately before install and actual installed SHA/version verification after restart; pending-user-action is never success.","Remaining generic donor/platform acceptance outside this bounded update slice [pending]","Remaining generic donor/platform acceptance outside this bounded update slice: Android foreground services/background uptime, split APKs and signing-key rotation, direct Android USB-host firmware programming, generic host RPC parity and actual Android/LAN/TLS/ESP/AVR physical acceptance remain separate. Exact self-package signer sets and newer version codes fail closed; no silent installer or uncertain programming replay.","mobile/test/app_updates_test.dart:81 [UTF8-LF sha256=1aabfe844bf8cb7e159fc7adfe3a061aa8cee02e14391f21b4f858ff7612bdfe; anchor=verified]","","Issue #7/#2/#3: actual installed Android peer transfer/OS consent/remote endpoint/board flash and human acceptance; source tests and staged APK are not deployment.","Not established by source/hash/test-code comparison; see issue #2" @@ -370,8 +370,8 @@ "PCController","mobile/tools/build.ps1","b0111ae0c80dc34149ea1044de7dd5488920301b","3db5785a3613685b820136ec37f441cdeaddf1ad2fa90ae18f34a18afc5f3b19","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","mobile/UI-REQUIREMENT-LEDGER.md","b0111ae0c80dc34149ea1044de7dd5488920301b","dddf238c439c87130b469afb481423c6ca859be7744226c0bff5870f2ecb8700","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","PCController.ino","b0111ae0c80dc34149ea1044de7dd5488920301b","78c60cbf6ddb267373aeba7d4660d1306ff9caed91cfc12198ec300a6b77023f","avr-convergence","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","docs/PC-CONTROLLER-MERGE-READINESS.md:142 [UTF8-LF sha256=a023cd4573108622cbd76a62cb52115c7dd6735d1b15999b73df1e5a2a9b96d5; anchor=## Future shared-core shape]","Read all actual entrypoint/includes through EOF and compared its single-production translation-unit ownership with Pakar avr.ino/PcControllerRuntime. Recorded a shared-core convergence design only; no entrypoint was imported or firmware changed.","Donor lifecycle/domain inclusion and same-production-source native build [pending]","Donor lifecycle/domain inclusion and same-production-source native build: The entrypoint depends on sensor, motion, RF, settings and timing owners absent or different in Pakar. Replacing the sketch would break pin/EEPROM/protocol ownership. Extract agreed core modules with explicit profiles instead of a whole-sketch merge.","","","Issue #3/#6: shared source ownership, complete dependent-domain review, matched build budgets and approved physical migration. This comparison/design record is not implemented merger or test execution.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Project/AddressableLeds.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","43417181b23cab40b8a58ec26159ca025fb41d5bdbaf52d20a46bfc926fee1b0","pixel-group-layout | led-cell-test | led-benchmark | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","libraries/BoardCore/src/CellBatch.h:9 [UTF8-LF sha256=752eb7baf7d4974f60be098c70a17198ce21b6a973401a01a67b41915e648884; anchor=struct CellBatch] | firmware/esp/src/LedGrid.cpp:78 [UTF8-LF sha256=9e08798277b72ee4420add3d3dc530dce83bf507e824a088439c7dc123211793; anchor=bool LedGrid::setCells(] | firmware/esp/src/LedGrid.h:86 [UTF8-LF sha256=d9df351a2859d24b56bb58b63b9ef19c146c19992bdefc708fa5707672d297ee; anchor=bool setCells(] | libraries/BoardCore/src/TableCellMapping.h:8 [UTF8-LF sha256=8a4d0d13b7779d8a54c74bb95cafcd871814423ee42909bcd5ebbd6006213ba0; anchor=constexpr uint8_t logicalForPhysical] | firmware/esp32s3/src/LedOutput.cpp:210 [UTF8-LF sha256=45954b1ad02507a049a80c190849317fc75fb639d011ee7debb8a0d2cf013ed0; anchor=bool pending=false;] | firmware/esp32s3/src/LedWire.h:37 [UTF8-LF sha256=9d83e653d1d78a30142037519bc5bf9f5ab6487a354e245403b8ff25fdcf7dda; anchor=inline constexpr uint16_t zeroHigh=12] | firmware/esp/src/LedRenderAdmission.h:7 [UTF8-LF sha256=a6dc69b69cba74db1fff54fd75b8940bf88958404f6c3ac971b27797d5b13c50; anchor=inline bool uartWindowReady(] | firmware/esp/application.ino:1340 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=uint8_t defaultPhysicalCell] | tools/build-firmware.ps1:40 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=CellChaseOnBoot] | firmware/esp32s3/src/LedOutput.h:13 [UTF8-LF sha256=46f0e3cc947e5262451e6b3659bdfedb9cc3fa3d5de8bc4779ec6ddc97f81fec; anchor=#if !defined(PAKAR_S3_LED_GPIO_ENABLED)] | firmware/esp32s3/src/LedDmaGuard.h:16 [UTF8-LF sha256=6418b38a2773c592ccd48dd9c2cbfaaa1ff0a8f0aab99437e68c1a7c419a2a65; anchor=class LedDmaSetupScope] | firmware/esp32s3/src/LedDmaGuard.cpp:68 [UTF8-LF sha256=c2c2b90ee34d7919d22c0e4dc6c651c077b9acc0ed833090aab57e2c335e1d7e; anchor=newCacheSafeLedChannel] | mobile/lib/pixel_diagnostic.dart:301 [UTF8-LF sha256=f454f8dd79f7ac69a63f8dd16a63ef6e6d34fd51dbfcd16113aed3a278f9ec75; anchor=class PixelProbe] | mobile/lib/pixel_diagnostic_page.dart:14 [UTF8-LF sha256=804a63cddd3a7fa6d15cdf63d12eab70200fcd80bd527a1f93b715d2db6ae824; anchor=class PixelDiagnosticPage] | mobile/lib/api.dart:393 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future pixelDiagnostic(] | mobile/tool/pixel_probe.dart:65 [UTF8-LF sha256=b27e1a4ed0a664ef350400d452eff575463f12a975049e29ac70f3dd88d5d21a; anchor=Future main(] | firmware/esp/src/CloudAnimationProgress.h:8 [UTF8-LF sha256=97f560579ba0bb5f9172c29e92078471b6e8cbe64b5d961de2740a44cc5f714d; anchor=bool serviceDuringCloud(] | desktop/src/pixel_diagnostic.rs:8 [UTF8-LF sha256=5c2bb4db8bf95fc370c1b6fad2e11477cd76adad8f574304c7828e566a431108; anchor=pub struct Probe] | desktop/src/native_workspace.rs:66 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=pub pixel_probe:] | desktop/src/ui/shell.rs:2705 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn send_pixel_probe(] | libraries/BoardCore/src/PixelDiagnostic.h:8 [UTF8-LF sha256=ed279cedb68663d0bfe93aae097e26fa0978f6642eb3c23dddc793a61522f8a2; anchor=struct PixelDiagnostic] | firmware/esp/src/LedGrid.cpp:564 [UTF8-LF sha256=9e08798277b72ee4420add3d3dc530dce83bf507e824a088439c7dc123211793; anchor=bool LedGrid::diagnostic(] | firmware/esp/src/DiagnosticReceipt.h:9 [UTF8-LF sha256=160078ef95ee5212d37b57ab452128a20810c544a23d613f2d8a0d449024a8fc; anchor=inline bool diagnosticReceiptStatus] | firmware/esp/application.ino:2619 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=String buildUsbTableSnapshot(bool includePixels) {] | libraries/BoardCore/src/PixelGroupLayout.h:9 [UTF8-LF sha256=b7463394fb83f9e74b2f296ccca3ca49f1cacc09a3a905c370dc469eb042844d; anchor=class PixelGroupLayout] | libraries/BoardCore/src/MatrixFire.h:10 [UTF8-LF sha256=363613221446af62c42e845887b6485e2d84cb6f4cb6170a34d7d8b3ea81200f; anchor=template] | firmware/esp/src/StateAppearanceSettings.h:20 [UTF8-LF sha256=c5c190a2ea68e57f62522ec5334fe749ec734fcd13b263a14fef57318a58ddcb; anchor=key==""fire_rotation""]","2026-10-29 unchanged complete donor source/header reread: retain staged RGB/show and single brightness owner. Actual installed FastLED fill_rainbow requests saturation240; normal and diagnostic rainbow now explicitly request CHSV saturation/value255/255 with unchanged hue stepping. Producer-argument and game-to-wire regressions pass; HSV doubles are not physical or actual HSV conversion evidence. Saved brightness, channel calibration and corrections stay unchanged; visual acceptance pending. | 2026-10-29 unchanged complete donor source/header reread: retain staged RGB/show and single brightness owner. Actual installed FastLED fill_rainbow requests saturation240; normal and diagnostic rainbow now explicitly request CHSV saturation/value255/255 with unchanged hue stepping. Producer-argument and game-to-wire regressions pass; HSV doubles are not physical or actual HSV conversion evidence. Saved brightness, channel calibration and corrections stay unchanged; visual acceptance pending. | Actual canonical complete AddressableLeds source/header read through EOF, including staged RGB versus show ownership. The selection adapter validates all80 cells before one loop-owned state mutation; no per-cell network pacing, show calls, persistence or AVR fan-out. This is a scoped adaptation of stage/show discipline, not a copied AVR timing sender. | ESP owns synchronized300ms wall-clock interpolation and one shared published frame. Single-cell actions use the same renderer method; static fallback remains immediate. Partial/invalid selections never reach renderer state. | Stress regression reproduced/fixed unrelated committed raw pixels reverting to stale logical targets on an abandoned partial stream. Both renderer modes and10000 full80-cell host batches per mode pass; host CPU timing is not physical throughput. | Complete donor reread at matching raw hash. User cable pattern has a tested80-cell bijection. Board-owned logical80-to1 chase composes one six-pixel-red frame every750ms with no skip/repeat/fades. GPIO and DMA workers sleep between submitted complete frames, with startup black and renderer-owned repair refresh. Physical acceptance remains open. | Backend selector is now a low-write application-only generated header, not a global compiler define. Plan remains read-only and both backend plans share identical SDK/compiler arguments; same canonical cache and no forced clean. SDK recompilation/cache-hit timing and physical driver acceptance remain separately measured. | Mobile pixel diagnostics adapts clear/stage/show through the existing desktop PKAR frame format: single pixel or six aligned pixels, arbitrary RGB, bounded previous/next/direct position, full480 black on every move and All off. Same-board/boot acknowledged effects mode, one pending write, exact published RGB/revision readback and no reconnect replay; no AVR sender/timing code copied into Flutter. | Operational diagnostic repair moves clear/stage/show into one optional pixel-diagnostic board command, no AVR fan-out or persistence. Correlated full RGB readback uses deduplicated same-ID WS/HTTP recovery; older firmware keeps the explicitly labelled raw socket path. Compact controls retain confirmed cursor on failure, expose six physical indices and verified logical labels, and keep board-keyed draft cursor/colour. Loopback/page/renderer evidence does not certify phone or optical acceptance. | The donor stage/show ownership and startup clear are adapted to one immutable480-pixel worker mailbox. The explicit S3 RMT-DMA recovery scales/swaps logical RGB once into1440 internal bytes; IDF5.5.5's MSB-first bytes encoder fills its bounded DMA ring instead of allocating46084 expanded-symbol bytes. Wait completion and300us low latch precede buffer release; disabled startup still sends a complete black frame. Static GPIO remains separately selectable; no optical acceptance is inferred. | Audited all1440 output bytes and the actual pinned IDF ring. RMT priority3 covers completion only; a scoped GDMA adapter now derives its exact TX source and requires measured IRQ3/core1. Same-owner rendering advances between cloud writes, without a second effects engine or optical-success claim. | Shared diagnostic observations carry board/boot-scoped revision/index/count/RGB/off through normal status pushes. Native and mobile controls adopt newer other-client observations without writes, ignore duplicate/older observations and retain only draft cursor/colour/group. Native atomic controls now match mobile colour, single/six-pixel stepping, sectors and All off; exact readback excludes pending frames. Real two-client WS and widget fixtures are separate from installed-phone and optical acceptance. | Pixel-workbench checkpoint extends the same donor staged-RGB/show ownership with one transient post-render diagnostic layer: bounded solid/blink/breathe/rainbow on one pixel or the baked six/twelve-pixel group; default clear and optional masked overlay share the existing mapping, correction and immutable output path. Base mode, winner, cell states, scene and original output policy survive the overlay; stopping restores them and never writes an animation frame to flash. No donor AVR timing loop or second effects engine was copied. | USB diagnostics retain one-shot correlated command execution and truthful publication state. An explicitly partial, same-board/boot receipt projects existing authoritative capabilities/driver/diagnostic fields and frame revision/pending metadata within the existing 8 KiB generic API budget. The general USB snapshot now checks its exact complete serialized envelope rather than an artificial 10240-byte status sublimit; all existing status/mapping/name/pixel fields and the 13200/16384-byte caps remain. Captured-state and maximum escaped-name fixtures exercise the previous failure without treating their synthetic frame metadata as live LED evidence. | Custom group sizing retains the shared staged-frame renderer and physical cable ownership: cumulative spans replace fixed six/twelve arithmetic, logical IDs and scene states remain unchanged, and unused tail pixels are black. Captured RGB carries capture-time layout metadata and revision-fenced diagnostics. Host renderer tests exercise table and first-wins roles; hardware output remains unaccepted for this candidate. | 2026-10-28 complete AddressableLeds cpp/header reread at b0111ae0 preserves staged-frame/show ownership for Fire as well. The existing transport receives one fully composed frame; no donor AVR pin sender is copied. Separately attributed FastLED Fire2012 cooling/diffusion/ignition is adapted to a fixed160-byte staggered matrix field, cold explicit replay and bounded monotonic stepping. Saved direction uses the existing partial presentation patch/store and client readback, without renumbering cells, replacing corrections or changing the binary scene layout. Source/fixture evidence is not deployed optical acceptance; see REUSE-PREFLIGHT-RECEIPT.md.","Fixed AVR D6/PORTD assembly, 16MHz interrupt masking, MacroQueue workspace and100-pixel/8-bit strip configuration [replaced] | Donor native HAL showStrip and feature-profile brightness/renderedPixels buffers [replaced] | Physical channel order/timing, RMT-DMA refill latency and full-buffer optical correctness [pending]","Fixed AVR D6/PORTD assembly, 16MHz interrupt masking, MacroQueue workspace and100-pixel/8-bit strip configuration: The final480-pixel renderer belongs to the ESP32-S3 GPIO4 (or ESP8266D2), not a second AVR strip. Reusing AVR registers/timing or truncating to100 pixels would conflict with confirmed hardware and memory ownership. Existing bounded PC contract remains a separate compatibility window. | Donor native HAL showStrip and feature-profile brightness/renderedPixels buffers: The existing ESP output worker owns wire encoding/brightness and complete immutable frame copies. Host doubles test logical RGB and wire encoding separately; there is no second donor native HAL or duplicate brightness scale. | Physical channel order/timing, RMT-DMA refill latency and full-buffer optical correctness: The user confirmed pixels remained lit although the static backend reported complete transmissions and all1440 published RGB bytes were zero. That is a failed physical all-off acceptance, not a successful command. The explicit RMT recovery had350/700ns highs; the earlier candidate used250/600ns highs. After reading all eight WS2811V1.4 pages, the current RMT profile uses300/625ns highs and950/625ns LOW,1250ns bits and300us reset. New optional whole-frame GPIO4 RX-DMA digital capture remains undeployed/unverified and cannot measure strip DIN voltage. A witnessed task-scoped GDMA allocation requests cache-safe refill using the already-IRAM SDK graph; the ring still refills and partition flash guards remain. Incomplete SDK symbol accounting now fails closed; this is still not wire readback. Require visual all-black, whole-cell mapping, waveform/RF/refill stress and fault recovery; counters/error0 alone are not waveform or latch proof.","tests/led_grid_test.cpp:338 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=Entire selection validation] | tests/led_grid_stress_test.cpp:12 [UTF8-LF sha256=812517dc4c2973487d67d4cd294c149dcb66b527fc85716363f87c723fe5fa4a; anchor=constexpr unsigned iterations=10000;] | tests/led_worker_test.cpp:333 [UTF8-LF sha256=b049e7e09ed4d47bd22f614a4f6e322b82727c01ff1ad1f0ca65ef27f83e8d4d; anchor=void functional()] | tests/led_dma_guard_test.cpp:38 [UTF8-LF sha256=d69b5b0bd26348aabd176350120d11199748f2aceada1d39c113078719fa80c0; anchor=int main(] | tools/test-led-dma-guard.ps1:14 [UTF8-LF sha256=f35494c76825ab2deccfe40759e9a7853142dc30875ffaa813f648d67de1b2e5; anchor=--wrap=gdma_new_ahb_channel] | tests/cell_chase_wiring_test.mjs:9 [UTF8-LF sha256=e1659e2a3c12039a7c3f9bbd3c876ebdc467b85957ac6b5a5f51a367e4991507; anchor=const preset=] | tests/build_storage_test.ps1:52 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=$taskStaticS3] | mobile/test/pixel_diagnostic_test.dart:78 [UTF8-LF sha256=5864c45b07a12dc3e327228b35629fd58c9db99c5bf1a6ce3dbfb064d9cfe5e8; anchor=Every raw position clears] | mobile/test/pixel_diagnostic_page_test.dart:615 [UTF8-LF sha256=719e05d13cd64b01eb41e87344f27ae9b4862123f1a469e0b6e7e2af78798fbe; anchor=Pending writes cannot repeat] | mobile/test/pixel_diagnostic_transport_test.dart:97 [UTF8-LF sha256=253d183118520a978fbea6b6470cca2917fe6b45688bf6982601fbe86825f152; anchor=one complete frame, no replay] | mobile/test/pixel_diagnostic_command_test.dart:157 [UTF8-LF sha256=dc315906d40ff502aa39343f9a17bec4af8092527bb0e34c82c1059135445173; anchor=Atomic pixel command] | tests/mobile_pixel_probe_plan_test.ps1:8 [UTF8-LF sha256=823dd963abd25514c0557bfc351dd23d24111f6de85a17461b91a7abd7f8287d; anchor=canonical compile-only plan] | tests/idf_rmt_ring_test.cpp:147 [UTF8-LF sha256=67b7f1107160e49db96f06907edb16dc540095bf4aaf6555041d49f47362cf00; anchor=void complete(] | tests/idf_rmt_ring_sdk.inc:30 [UTF8-LF sha256=21407218c9fef3c223d298d4fc2084d9ab07b15a4de77a4cb43bd25c75c43d91; anchor=static size_t rmt_encode_bytes(] | tests/idf_rmt_ring_provenance.json:2 [UTF8-LF sha256=882d1ef64d39ff9d99e303b7f997c1b7e6f11db82ae52f11c0a8b56a1075736f; anchor=""sdk"":] | tests/led_grid_test.cpp:116 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=void cloudAnimationProgress(] | desktop/src/pixel_diagnostic.rs:643 [UTF8-LF sha256=5c2bb4db8bf95fc370c1b6fad2e11477cd76adad8f574304c7828e566a431108; anchor=fn pixel_diagnostic_remote_observation_is_ordered_and_never_actuates()] | desktop/src/realtime.rs:681 [UTF8-LF sha256=134977c4f18998b92ebb2e8d763147a1c0eeb2039c019a603cb7de712502fa01; anchor=fn realtime_pixel_diagnostic_requires_exact_complete_readback_and_typed_intent()] | mobile/test/pixel_diagnostic_command_test.dart:16 [UTF8-LF sha256=dc315906d40ff502aa39343f9a17bec4af8092527bb0e34c82c1059135445173; anchor=Two real WS clients observe the same diagnostic] | tests/led_grid_test.cpp:450 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=Advanced diagnostics are one transient post-render layer, not a scene.] | tests/game_role_renderer_test.cpp:146 [UTF8-LF sha256=bd21f414a36e808ff04b888864ff7d4a2417b5eed4f31db44f85d82949f19fc3; anchor=overlay.enabled=false] | tests/scene_store_test.cpp:48 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Diagnostics never write mode, pattern, output policy or transient RGB] | tests/diagnostic_receipt_test.cpp:56 [UTF8-LF sha256=85a66d548c203d2f3f95c69a7c008580f95cd1c0cf024f7dc5a2aca8dab7d282; anchor=Captured status projection:] | tests/usb_snapshot_budget_test.mjs:119 [UTF8-LF sha256=35d8fcb11a50bb33b553a7cf5993a21892c4d311c4225f12423274ea6f8bc03b; anchor=Captured regression must exceed the old sublimit] | tools/test-usb-api.ps1:1 [UTF8-LF sha256=6df4d45bc23e7c8624616053af6b5604d00e9297f8b6b72014eddb175219c605; anchor=param([string] $StatusCapture)] | tests/pixel_group_layout_test.cpp:25 [UTF8-LF sha256=e90ecd6aa4c125eca53d631f14e28b9ac1cfe74ce05ca4ac8d10525867a5aba3; anchor=int main()] | tests/pixel_group_renderer_test.cpp:6 [UTF8-LF sha256=fe614d76eca8e0afd62f3180bfe4f7621ae03c98e1b155dcf373807ca22fad45; anchor=int main()] | tests/matrix_fire_test.cpp:7 [UTF8-LF sha256=a33060673935f26ad6d6d1a56fa162c463a45140bb9010e9544644b7b97c3cf5; anchor=using Fire=] | tests/led_grid_test.cpp:82 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=void matrixFireRendering()] | tests/web_appearance_mount_test.mjs:46 [UTF8-LF sha256=6db5236e85ffc20b052684c16e625eaea04e05393d591abeb640b350e1b220a2; anchor=const sent=[]] | mobile/test/appearance_live_test.dart:26 [UTF8-LF sha256=77e70b48b5faf8f8ed73ccb5711b0c0ae12889e11d09870780d47a1d1c6a6b13; anchor=Fire direction follows saved readback] | desktop/src/state_appearance.rs:379 [UTF8-LF sha256=567e65fa7d3e0e7ad7ef508b7944c0f861b376fd348031dd105ad2df94ece5eb; anchor=fn validates_and_compares_only_requested_fields()]","One validated atomic board intent replaces client fan-out, without duplicating the effects engine or changing API generations.","Physical pixel/group placement and Android phone acceptance remain open. Mobile widgets and loopback transport are separate evidence from board buffer and optical correctness; no donor-wide completion is implied. | User reports first23 cells working and two-second pauses every5s; old cloud service measured2552ms. Actual-IDF encoder/EOF models compare all480pixels across12descriptor windows, but fault injection proves encoded_count11521 is not waveform proof. Require deployed IRQ receipt, live timing and optical confirmation after approved OTA. | Advanced diagnostic effects/overlay and bounded USB receipts pass focused host fixtures and the canonical S3 build. Installed client interaction, actual USB/HTTP/WebSocket readback, optical color/group placement and physical fault recovery remain separate deployment/acceptance checks; this checkpoint does not close the donor-wide parity gap.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Project/AddressableLeds.h","b0111ae0c80dc34149ea1044de7dd5488920301b","a28009e6211056f0cdb1071e7232d6d277a27cf9dc8e3e9951be9830745f18d4","pixel-group-layout | led-cell-test | led-benchmark | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","libraries/BoardCore/src/CellBatch.h:9 [UTF8-LF sha256=752eb7baf7d4974f60be098c70a17198ce21b6a973401a01a67b41915e648884; anchor=struct CellBatch] | firmware/esp/src/LedGrid.cpp:78 [UTF8-LF sha256=9e08798277b72ee4420add3d3dc530dce83bf507e824a088439c7dc123211793; anchor=bool LedGrid::setCells(] | firmware/esp/src/LedGrid.h:86 [UTF8-LF sha256=d9df351a2859d24b56bb58b63b9ef19c146c19992bdefc708fa5707672d297ee; anchor=bool setCells(] | libraries/BoardCore/src/TableCellMapping.h:8 [UTF8-LF sha256=8a4d0d13b7779d8a54c74bb95cafcd871814423ee42909bcd5ebbd6006213ba0; anchor=constexpr uint8_t logicalForPhysical] | firmware/esp32s3/src/LedOutput.cpp:210 [UTF8-LF sha256=45954b1ad02507a049a80c190849317fc75fb639d011ee7debb8a0d2cf013ed0; anchor=bool pending=false;] | firmware/esp32s3/src/LedWire.h:37 [UTF8-LF sha256=9d83e653d1d78a30142037519bc5bf9f5ab6487a354e245403b8ff25fdcf7dda; anchor=inline constexpr uint16_t zeroHigh=12] | firmware/esp/src/LedRenderAdmission.h:7 [UTF8-LF sha256=a6dc69b69cba74db1fff54fd75b8940bf88958404f6c3ac971b27797d5b13c50; anchor=inline bool uartWindowReady(] | firmware/esp/application.ino:1340 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=uint8_t defaultPhysicalCell] | tools/build-firmware.ps1:40 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=CellChaseOnBoot] | firmware/esp32s3/src/LedOutput.h:13 [UTF8-LF sha256=46f0e3cc947e5262451e6b3659bdfedb9cc3fa3d5de8bc4779ec6ddc97f81fec; anchor=#if !defined(PAKAR_S3_LED_GPIO_ENABLED)] | firmware/esp32s3/src/LedDmaGuard.h:16 [UTF8-LF sha256=6418b38a2773c592ccd48dd9c2cbfaaa1ff0a8f0aab99437e68c1a7c419a2a65; anchor=class LedDmaSetupScope] | firmware/esp32s3/src/LedDmaGuard.cpp:68 [UTF8-LF sha256=c2c2b90ee34d7919d22c0e4dc6c651c077b9acc0ed833090aab57e2c335e1d7e; anchor=newCacheSafeLedChannel] | mobile/lib/pixel_diagnostic.dart:301 [UTF8-LF sha256=f454f8dd79f7ac69a63f8dd16a63ef6e6d34fd51dbfcd16113aed3a278f9ec75; anchor=class PixelProbe] | mobile/lib/pixel_diagnostic_page.dart:14 [UTF8-LF sha256=804a63cddd3a7fa6d15cdf63d12eab70200fcd80bd527a1f93b715d2db6ae824; anchor=class PixelDiagnosticPage] | mobile/lib/api.dart:393 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future pixelDiagnostic(] | mobile/tool/pixel_probe.dart:65 [UTF8-LF sha256=b27e1a4ed0a664ef350400d452eff575463f12a975049e29ac70f3dd88d5d21a; anchor=Future main(] | desktop/src/pixel_diagnostic.rs:8 [UTF8-LF sha256=5c2bb4db8bf95fc370c1b6fad2e11477cd76adad8f574304c7828e566a431108; anchor=pub struct Probe] | desktop/src/native_workspace.rs:66 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=pub pixel_probe:] | desktop/src/ui/shell.rs:2705 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn send_pixel_probe(] | libraries/BoardCore/src/PixelDiagnostic.h:8 [UTF8-LF sha256=ed279cedb68663d0bfe93aae097e26fa0978f6642eb3c23dddc793a61522f8a2; anchor=struct PixelDiagnostic] | firmware/esp/src/LedGrid.cpp:564 [UTF8-LF sha256=9e08798277b72ee4420add3d3dc530dce83bf507e824a088439c7dc123211793; anchor=bool LedGrid::diagnostic(] | firmware/esp/src/DiagnosticReceipt.h:9 [UTF8-LF sha256=160078ef95ee5212d37b57ab452128a20810c544a23d613f2d8a0d449024a8fc; anchor=inline bool diagnosticReceiptStatus] | firmware/esp/application.ino:2619 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=String buildUsbTableSnapshot(bool includePixels) {]","Actual canonical complete AddressableLeds source/header read through EOF, including staged RGB versus show ownership. The selection adapter validates all80 cells before one loop-owned state mutation; no per-cell network pacing, show calls, persistence or AVR fan-out. This is a scoped adaptation of stage/show discipline, not a copied AVR timing sender. | ESP owns synchronized300ms wall-clock interpolation and one shared published frame. Single-cell actions use the same renderer method; static fallback remains immediate. Partial/invalid selections never reach renderer state. | Stress regression reproduced/fixed unrelated committed raw pixels reverting to stale logical targets on an abandoned partial stream. Both renderer modes and10000 full80-cell host batches per mode pass; host CPU timing is not physical throughput. | Complete donor reread at matching raw hash. User cable pattern has a tested80-cell bijection. Board-owned logical80-to1 chase composes one six-pixel-red frame every750ms with no skip/repeat/fades. GPIO and DMA workers sleep between submitted complete frames, with startup black and renderer-owned repair refresh. Physical acceptance remains open. | Backend selector is now a low-write application-only generated header, not a global compiler define. Plan remains read-only and both backend plans share identical SDK/compiler arguments; same canonical cache and no forced clean. SDK recompilation/cache-hit timing and physical driver acceptance remain separately measured. | Mobile pixel diagnostics adapts clear/stage/show through the existing desktop PKAR frame format: single pixel or six aligned pixels, arbitrary RGB, bounded previous/next/direct position, full480 black on every move and All off. Same-board/boot acknowledged effects mode, one pending write, exact published RGB/revision readback and no reconnect replay; no AVR sender/timing code copied into Flutter. | Operational diagnostic repair moves clear/stage/show into one optional pixel-diagnostic board command, no AVR fan-out or persistence. Correlated full RGB readback uses deduplicated same-ID WS/HTTP recovery; older firmware keeps the explicitly labelled raw socket path. Compact controls retain confirmed cursor on failure, expose six physical indices and verified logical labels, and keep board-keyed draft cursor/colour. Loopback/page/renderer evidence does not certify phone or optical acceptance. | The donor stage/show ownership and startup clear are adapted to one immutable480-pixel worker mailbox. The explicit S3 RMT-DMA recovery scales/swaps logical RGB once into1440 internal bytes; IDF5.5.5's MSB-first bytes encoder fills its bounded DMA ring instead of allocating46084 expanded-symbol bytes. Wait completion and300us low latch precede buffer release; disabled startup still sends a complete black frame. Static GPIO remains separately selectable; no optical acceptance is inferred. | Shared diagnostic observations carry board/boot-scoped revision/index/count/RGB/off through normal status pushes. Native and mobile controls adopt newer other-client observations without writes, ignore duplicate/older observations and retain only draft cursor/colour/group. Native atomic controls now match mobile colour, single/six-pixel stepping, sectors and All off; exact readback excludes pending frames. Real two-client WS and widget fixtures are separate from installed-phone and optical acceptance. | Pixel-workbench checkpoint extends the same donor staged-RGB/show ownership with one transient post-render diagnostic layer: bounded solid/blink/breathe/rainbow on one pixel or the baked six/twelve-pixel group; default clear and optional masked overlay share the existing mapping, correction and immutable output path. Base mode, winner, cell states, scene and original output policy survive the overlay; stopping restores them and never writes an animation frame to flash. No donor AVR timing loop or second effects engine was copied. | USB diagnostics retain one-shot correlated command execution and truthful publication state. An explicitly partial, same-board/boot receipt projects existing authoritative capabilities/driver/diagnostic fields and frame revision/pending metadata within the existing 8 KiB generic API budget. The general USB snapshot now checks its exact complete serialized envelope rather than an artificial 10240-byte status sublimit; all existing status/mapping/name/pixel fields and the 13200/16384-byte caps remain. Captured-state and maximum escaped-name fixtures exercise the previous failure without treating their synthetic frame metadata as live LED evidence.","Fixed AVR D6/PORTD assembly, 16MHz interrupt masking, MacroQueue workspace and100-pixel/8-bit strip configuration [replaced] | Donor native HAL showStrip and feature-profile brightness/renderedPixels buffers [replaced] | Physical channel order/timing, RMT-DMA refill latency and full-buffer optical correctness [pending]","Fixed AVR D6/PORTD assembly, 16MHz interrupt masking, MacroQueue workspace and100-pixel/8-bit strip configuration: The final480-pixel renderer belongs to the ESP32-S3 GPIO4 (or ESP8266D2), not a second AVR strip. Reusing AVR registers/timing or truncating to100 pixels would conflict with confirmed hardware and memory ownership. Existing bounded PC contract remains a separate compatibility window. | Donor native HAL showStrip and feature-profile brightness/renderedPixels buffers: The existing ESP output worker owns wire encoding/brightness and complete immutable frame copies. Host doubles test logical RGB and wire encoding separately; there is no second donor native HAL or duplicate brightness scale. | Physical channel order/timing, RMT-DMA refill latency and full-buffer optical correctness: The user confirmed pixels remained lit although the static backend reported complete transmissions and all1440 published RGB bytes were zero. That is a failed physical all-off acceptance, not a successful command. The explicit RMT recovery had350/700ns highs; the earlier candidate used250/600ns highs. After reading all eight WS2811V1.4 pages, the current RMT profile uses300/625ns highs and950/625ns LOW,1250ns bits and300us reset. New optional whole-frame GPIO4 RX-DMA digital capture remains undeployed/unverified and cannot measure strip DIN voltage. A witnessed task-scoped GDMA allocation requests cache-safe refill using the already-IRAM SDK graph; the ring still refills and partition flash guards remain. Incomplete SDK symbol accounting now fails closed; this is still not wire readback. Require visual all-black, whole-cell mapping, waveform/RF/refill stress and fault recovery; counters/error0 alone are not waveform or latch proof.","tests/led_grid_test.cpp:338 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=Entire selection validation] | tests/led_grid_stress_test.cpp:12 [UTF8-LF sha256=812517dc4c2973487d67d4cd294c149dcb66b527fc85716363f87c723fe5fa4a; anchor=constexpr unsigned iterations=10000;] | tests/led_worker_test.cpp:333 [UTF8-LF sha256=b049e7e09ed4d47bd22f614a4f6e322b82727c01ff1ad1f0ca65ef27f83e8d4d; anchor=void functional()] | tests/led_dma_guard_test.cpp:38 [UTF8-LF sha256=d69b5b0bd26348aabd176350120d11199748f2aceada1d39c113078719fa80c0; anchor=int main(] | tools/test-led-dma-guard.ps1:14 [UTF8-LF sha256=f35494c76825ab2deccfe40759e9a7853142dc30875ffaa813f648d67de1b2e5; anchor=--wrap=gdma_new_ahb_channel] | tests/cell_chase_wiring_test.mjs:9 [UTF8-LF sha256=e1659e2a3c12039a7c3f9bbd3c876ebdc467b85957ac6b5a5f51a367e4991507; anchor=const preset=] | tests/build_storage_test.ps1:52 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=$taskStaticS3] | mobile/test/pixel_diagnostic_test.dart:78 [UTF8-LF sha256=5864c45b07a12dc3e327228b35629fd58c9db99c5bf1a6ce3dbfb064d9cfe5e8; anchor=Every raw position clears] | mobile/test/pixel_diagnostic_page_test.dart:615 [UTF8-LF sha256=719e05d13cd64b01eb41e87344f27ae9b4862123f1a469e0b6e7e2af78798fbe; anchor=Pending writes cannot repeat] | mobile/test/pixel_diagnostic_transport_test.dart:97 [UTF8-LF sha256=253d183118520a978fbea6b6470cca2917fe6b45688bf6982601fbe86825f152; anchor=one complete frame, no replay] | mobile/test/pixel_diagnostic_command_test.dart:157 [UTF8-LF sha256=dc315906d40ff502aa39343f9a17bec4af8092527bb0e34c82c1059135445173; anchor=Atomic pixel command] | tests/mobile_pixel_probe_plan_test.ps1:8 [UTF8-LF sha256=823dd963abd25514c0557bfc351dd23d24111f6de85a17461b91a7abd7f8287d; anchor=canonical compile-only plan] | desktop/src/pixel_diagnostic.rs:643 [UTF8-LF sha256=5c2bb4db8bf95fc370c1b6fad2e11477cd76adad8f574304c7828e566a431108; anchor=fn pixel_diagnostic_remote_observation_is_ordered_and_never_actuates()] | desktop/src/realtime.rs:681 [UTF8-LF sha256=134977c4f18998b92ebb2e8d763147a1c0eeb2039c019a603cb7de712502fa01; anchor=fn realtime_pixel_diagnostic_requires_exact_complete_readback_and_typed_intent()] | mobile/test/pixel_diagnostic_command_test.dart:16 [UTF8-LF sha256=dc315906d40ff502aa39343f9a17bec4af8092527bb0e34c82c1059135445173; anchor=Two real WS clients observe the same diagnostic] | tests/led_grid_test.cpp:450 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=Advanced diagnostics are one transient post-render layer, not a scene.] | tests/game_role_renderer_test.cpp:146 [UTF8-LF sha256=bd21f414a36e808ff04b888864ff7d4a2417b5eed4f31db44f85d82949f19fc3; anchor=overlay.enabled=false] | tests/scene_store_test.cpp:48 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Diagnostics never write mode, pattern, output policy or transient RGB] | tests/diagnostic_receipt_test.cpp:56 [UTF8-LF sha256=85a66d548c203d2f3f95c69a7c008580f95cd1c0cf024f7dc5a2aca8dab7d282; anchor=Captured status projection:] | tests/usb_snapshot_budget_test.mjs:119 [UTF8-LF sha256=35d8fcb11a50bb33b553a7cf5993a21892c4d311c4225f12423274ea6f8bc03b; anchor=Captured regression must exceed the old sublimit] | tools/test-usb-api.ps1:1 [UTF8-LF sha256=6df4d45bc23e7c8624616053af6b5604d00e9297f8b6b72014eddb175219c605; anchor=param([string] $StatusCapture)]","One validated atomic board intent replaces client fan-out, without duplicating the effects engine or changing API generations.","Physical pixel/group placement and Android phone acceptance remain open. Mobile widgets and loopback transport are separate evidence from board buffer and optical correctness; no donor-wide completion is implied. | Advanced diagnostic effects/overlay and bounded USB receipts pass focused host fixtures and the canonical S3 build. Installed client interaction, actual USB/HTTP/WebSocket readback, optical color/group placement and physical fault recovery remain separate deployment/acceptance checks; this checkpoint does not close the donor-wide parity gap.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Project/AddressableLeds.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","43417181b23cab40b8a58ec26159ca025fb41d5bdbaf52d20a46bfc926fee1b0","pixel-group-layout | led-cell-test | led-benchmark | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","libraries/BoardCore/src/CellBatch.h:9 [UTF8-LF sha256=752eb7baf7d4974f60be098c70a17198ce21b6a973401a01a67b41915e648884; anchor=struct CellBatch] | firmware/esp/src/LedGrid.cpp:78 [UTF8-LF sha256=9e08798277b72ee4420add3d3dc530dce83bf507e824a088439c7dc123211793; anchor=bool LedGrid::setCells(] | firmware/esp/src/LedGrid.h:86 [UTF8-LF sha256=d9df351a2859d24b56bb58b63b9ef19c146c19992bdefc708fa5707672d297ee; anchor=bool setCells(] | libraries/BoardCore/src/TableCellMapping.h:8 [UTF8-LF sha256=8a4d0d13b7779d8a54c74bb95cafcd871814423ee42909bcd5ebbd6006213ba0; anchor=constexpr uint8_t logicalForPhysical] | firmware/esp32s3/src/LedOutput.cpp:210 [UTF8-LF sha256=45954b1ad02507a049a80c190849317fc75fb639d011ee7debb8a0d2cf013ed0; anchor=bool pending=false;] | firmware/esp32s3/src/LedWire.h:37 [UTF8-LF sha256=9d83e653d1d78a30142037519bc5bf9f5ab6487a354e245403b8ff25fdcf7dda; anchor=inline constexpr uint16_t zeroHigh=12] | firmware/esp/src/LedRenderAdmission.h:7 [UTF8-LF sha256=a6dc69b69cba74db1fff54fd75b8940bf88958404f6c3ac971b27797d5b13c50; anchor=inline bool uartWindowReady(] | firmware/esp/application.ino:1340 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=uint8_t defaultPhysicalCell] | tools/build-firmware.ps1:40 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=CellChaseOnBoot] | firmware/esp32s3/src/LedOutput.h:13 [UTF8-LF sha256=46f0e3cc947e5262451e6b3659bdfedb9cc3fa3d5de8bc4779ec6ddc97f81fec; anchor=#if !defined(PAKAR_S3_LED_GPIO_ENABLED)] | firmware/esp32s3/src/LedDmaGuard.h:16 [UTF8-LF sha256=6418b38a2773c592ccd48dd9c2cbfaaa1ff0a8f0aab99437e68c1a7c419a2a65; anchor=class LedDmaSetupScope] | firmware/esp32s3/src/LedDmaGuard.cpp:68 [UTF8-LF sha256=c2c2b90ee34d7919d22c0e4dc6c651c077b9acc0ed833090aab57e2c335e1d7e; anchor=newCacheSafeLedChannel] | mobile/lib/pixel_diagnostic.dart:301 [UTF8-LF sha256=f454f8dd79f7ac69a63f8dd16a63ef6e6d34fd51dbfcd16113aed3a278f9ec75; anchor=class PixelProbe] | mobile/lib/pixel_diagnostic_page.dart:14 [UTF8-LF sha256=804a63cddd3a7fa6d15cdf63d12eab70200fcd80bd527a1f93b715d2db6ae824; anchor=class PixelDiagnosticPage] | mobile/lib/api.dart:393 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future pixelDiagnostic(] | mobile/tool/pixel_probe.dart:65 [UTF8-LF sha256=b27e1a4ed0a664ef350400d452eff575463f12a975049e29ac70f3dd88d5d21a; anchor=Future main(] | firmware/esp/src/CloudAnimationProgress.h:8 [UTF8-LF sha256=97f560579ba0bb5f9172c29e92078471b6e8cbe64b5d961de2740a44cc5f714d; anchor=bool serviceDuringCloud(] | desktop/src/pixel_diagnostic.rs:8 [UTF8-LF sha256=5c2bb4db8bf95fc370c1b6fad2e11477cd76adad8f574304c7828e566a431108; anchor=pub struct Probe] | desktop/src/native_workspace.rs:66 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=pub pixel_probe:] | desktop/src/ui/shell.rs:2705 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn send_pixel_probe(] | libraries/BoardCore/src/PixelDiagnostic.h:8 [UTF8-LF sha256=ed279cedb68663d0bfe93aae097e26fa0978f6642eb3c23dddc793a61522f8a2; anchor=struct PixelDiagnostic] | firmware/esp/src/LedGrid.cpp:564 [UTF8-LF sha256=9e08798277b72ee4420add3d3dc530dce83bf507e824a088439c7dc123211793; anchor=bool LedGrid::diagnostic(] | firmware/esp/src/DiagnosticReceipt.h:9 [UTF8-LF sha256=160078ef95ee5212d37b57ab452128a20810c544a23d613f2d8a0d449024a8fc; anchor=inline bool diagnosticReceiptStatus] | firmware/esp/application.ino:2619 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=String buildUsbTableSnapshot(bool includePixels) {] | libraries/BoardCore/src/PixelGroupLayout.h:9 [UTF8-LF sha256=b7463394fb83f9e74b2f296ccca3ca49f1cacc09a3a905c370dc469eb042844d; anchor=class PixelGroupLayout] | libraries/BoardCore/src/MatrixFire.h:10 [UTF8-LF sha256=363613221446af62c42e845887b6485e2d84cb6f4cb6170a34d7d8b3ea81200f; anchor=template] | firmware/esp/src/StateAppearanceSettings.h:20 [UTF8-LF sha256=c5c190a2ea68e57f62522ec5334fe749ec734fcd13b263a14fef57318a58ddcb; anchor=key==""fire_rotation""]","2026-10-29 unchanged complete donor source/header reread: retain staged RGB/show and single brightness owner. Actual installed FastLED fill_rainbow requests saturation240; normal and diagnostic rainbow now explicitly request CHSV saturation/value255/255 with unchanged hue stepping. Producer-argument and game-to-wire regressions pass; HSV doubles are not physical or actual HSV conversion evidence. Saved brightness, channel calibration and corrections stay unchanged; visual acceptance pending. | 2026-10-29 unchanged complete donor source/header reread: retain staged RGB/show and single brightness owner. Actual installed FastLED fill_rainbow requests saturation240; normal and diagnostic rainbow now explicitly request CHSV saturation/value255/255 with unchanged hue stepping. Producer-argument and game-to-wire regressions pass; HSV doubles are not physical or actual HSV conversion evidence. Saved brightness, channel calibration and corrections stay unchanged; visual acceptance pending. | Actual canonical complete AddressableLeds source/header read through EOF, including staged RGB versus show ownership. The selection adapter validates all80 cells before one loop-owned state mutation; no per-cell network pacing, show calls, persistence or AVR fan-out. This is a scoped adaptation of stage/show discipline, not a copied AVR timing sender. | ESP owns synchronized300ms wall-clock interpolation and one shared published frame. Single-cell actions use the same renderer method; static fallback remains immediate. Partial/invalid selections never reach renderer state. | Stress regression reproduced/fixed unrelated committed raw pixels reverting to stale logical targets on an abandoned partial stream. Both renderer modes and10000 full80-cell host batches per mode pass; host CPU timing is not physical throughput. | Complete donor reread at matching raw hash. User cable pattern has a tested80-cell bijection. Board-owned logical80-to1 chase composes one six-pixel-red frame every750ms with no skip/repeat/fades. GPIO and DMA workers sleep between submitted complete frames, with startup black and renderer-owned repair refresh. Physical acceptance remains open. | Backend selector is now a low-write application-only generated header, not a global compiler define. Plan remains read-only and both backend plans share identical SDK/compiler arguments; same canonical cache and no forced clean. SDK recompilation/cache-hit timing and physical driver acceptance remain separately measured. | Mobile pixel diagnostics adapts clear/stage/show through the existing desktop PKAR frame format: single pixel or six aligned pixels, arbitrary RGB, bounded previous/next/direct position, full480 black on every move and All off. Same-board/boot acknowledged effects mode, one pending write, exact published RGB/revision readback and no reconnect replay; no AVR sender/timing code copied into Flutter. | Operational diagnostic repair moves clear/stage/show into one optional pixel-diagnostic board command, no AVR fan-out or persistence. Correlated full RGB readback uses deduplicated same-ID WS/HTTP recovery; older firmware keeps the explicitly labelled raw socket path. Compact controls retain confirmed cursor on failure, expose six physical indices and verified logical labels, and keep board-keyed draft cursor/colour. Loopback/page/renderer evidence does not certify phone or optical acceptance. | The donor stage/show ownership and startup clear are adapted to one immutable480-pixel worker mailbox. The explicit S3 RMT-DMA recovery scales/swaps logical RGB once into1440 internal bytes; IDF5.5.5's MSB-first bytes encoder fills its bounded DMA ring instead of allocating46084 expanded-symbol bytes. Wait completion and300us low latch precede buffer release; disabled startup still sends a complete black frame. Static GPIO remains separately selectable; no optical acceptance is inferred. | Audited all1440 output bytes and the actual pinned IDF ring. RMT priority3 covers completion only; a scoped GDMA adapter now derives its exact TX source and requires measured IRQ3/core1. Same-owner rendering advances between cloud writes, without a second effects engine or optical-success claim. | Shared diagnostic observations carry board/boot-scoped revision/index/count/RGB/off through normal status pushes. Native and mobile controls adopt newer other-client observations without writes, ignore duplicate/older observations and retain only draft cursor/colour/group. Native atomic controls now match mobile colour, single/six-pixel stepping, sectors and All off; exact readback excludes pending frames. Real two-client WS and widget fixtures are separate from installed-phone and optical acceptance. | Pixel-workbench checkpoint extends the same donor staged-RGB/show ownership with one transient post-render diagnostic layer: bounded solid/blink/breathe/rainbow on one pixel or the baked six/twelve-pixel group; default clear and optional masked overlay share the existing mapping, correction and immutable output path. Base mode, winner, cell states, scene and original output policy survive the overlay; stopping restores them and never writes an animation frame to flash. No donor AVR timing loop or second effects engine was copied. | USB diagnostics retain one-shot correlated command execution and truthful publication state. An explicitly partial, same-board/boot receipt projects existing authoritative capabilities/driver/diagnostic fields and frame revision/pending metadata within the existing 8 KiB generic API budget. The general USB snapshot now checks its exact complete serialized envelope rather than an artificial 10240-byte status sublimit; all existing status/mapping/name/pixel fields and the 13200/16384-byte caps remain. Captured-state and maximum escaped-name fixtures exercise the previous failure without treating their synthetic frame metadata as live LED evidence. | Custom group sizing retains the shared staged-frame renderer and physical cable ownership: cumulative spans replace fixed six/twelve arithmetic, logical IDs and scene states remain unchanged, and unused tail pixels are black. Captured RGB carries capture-time layout metadata and revision-fenced diagnostics. Host renderer tests exercise table and first-wins roles; hardware output remains unaccepted for this candidate. | 2026-10-28 complete AddressableLeds cpp/header reread at b0111ae0 preserves staged-frame/show ownership for Fire as well. The existing transport receives one fully composed frame; no donor AVR pin sender is copied. Separately attributed FastLED Fire2012 cooling/diffusion/ignition is adapted to a fixed160-byte staggered matrix field, cold explicit replay and bounded monotonic stepping. Saved direction uses the existing partial presentation patch/store and client readback, without renumbering cells, replacing corrections or changing the binary scene layout. Source/fixture evidence is not deployed optical acceptance; see REUSE-PREFLIGHT-RECEIPT.md.","Fixed AVR D6/PORTD assembly, 16MHz interrupt masking, MacroQueue workspace and100-pixel/8-bit strip configuration [replaced] | Donor native HAL showStrip and feature-profile brightness/renderedPixels buffers [replaced] | Physical channel order/timing, RMT-DMA refill latency and full-buffer optical correctness [pending]","Fixed AVR D6/PORTD assembly, 16MHz interrupt masking, MacroQueue workspace and100-pixel/8-bit strip configuration: The final480-pixel renderer belongs to the ESP32-S3 GPIO4 (or ESP8266D2), not a second AVR strip. Reusing AVR registers/timing or truncating to100 pixels would conflict with confirmed hardware and memory ownership. Existing bounded PC contract remains a separate compatibility window. | Donor native HAL showStrip and feature-profile brightness/renderedPixels buffers: The existing ESP output worker owns wire encoding/brightness and complete immutable frame copies. Host doubles test logical RGB and wire encoding separately; there is no second donor native HAL or duplicate brightness scale. | Physical channel order/timing, RMT-DMA refill latency and full-buffer optical correctness: The user confirmed pixels remained lit although the static backend reported complete transmissions and all1440 published RGB bytes were zero. That is a failed physical all-off acceptance, not a successful command. The explicit RMT recovery had350/700ns highs; the earlier candidate used250/600ns highs. After reading all eight WS2811V1.4 pages, the current RMT profile uses300/625ns highs and950/625ns LOW,1250ns bits and300us reset. New optional whole-frame GPIO4 RX-DMA digital capture remains undeployed/unverified and cannot measure strip DIN voltage. A witnessed task-scoped GDMA allocation requests cache-safe refill using the already-IRAM SDK graph; the ring still refills and partition flash guards remain. Incomplete SDK symbol accounting now fails closed; this is still not wire readback. Require visual all-black, whole-cell mapping, waveform/RF/refill stress and fault recovery; counters/error0 alone are not waveform or latch proof.","tests/led_grid_test.cpp:338 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=Entire selection validation] | tests/led_grid_stress_test.cpp:12 [UTF8-LF sha256=812517dc4c2973487d67d4cd294c149dcb66b527fc85716363f87c723fe5fa4a; anchor=constexpr unsigned iterations=10000;] | tests/led_worker_test.cpp:333 [UTF8-LF sha256=b049e7e09ed4d47bd22f614a4f6e322b82727c01ff1ad1f0ca65ef27f83e8d4d; anchor=void functional()] | tests/led_dma_guard_test.cpp:38 [UTF8-LF sha256=d69b5b0bd26348aabd176350120d11199748f2aceada1d39c113078719fa80c0; anchor=int main(] | tools/test-led-dma-guard.ps1:14 [UTF8-LF sha256=f35494c76825ab2deccfe40759e9a7853142dc30875ffaa813f648d67de1b2e5; anchor=--wrap=gdma_new_ahb_channel] | tests/cell_chase_wiring_test.mjs:9 [UTF8-LF sha256=e1659e2a3c12039a7c3f9bbd3c876ebdc467b85957ac6b5a5f51a367e4991507; anchor=const preset=] | tests/build_storage_test.ps1:52 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=$taskStaticS3] | mobile/test/pixel_diagnostic_test.dart:78 [UTF8-LF sha256=5864c45b07a12dc3e327228b35629fd58c9db99c5bf1a6ce3dbfb064d9cfe5e8; anchor=Every raw position clears] | mobile/test/pixel_diagnostic_page_test.dart:615 [UTF8-LF sha256=719e05d13cd64b01eb41e87344f27ae9b4862123f1a469e0b6e7e2af78798fbe; anchor=Pending writes cannot repeat] | mobile/test/pixel_diagnostic_transport_test.dart:97 [UTF8-LF sha256=253d183118520a978fbea6b6470cca2917fe6b45688bf6982601fbe86825f152; anchor=one complete frame, no replay] | mobile/test/pixel_diagnostic_command_test.dart:157 [UTF8-LF sha256=dc315906d40ff502aa39343f9a17bec4af8092527bb0e34c82c1059135445173; anchor=Atomic pixel command] | tests/mobile_pixel_probe_plan_test.ps1:8 [UTF8-LF sha256=823dd963abd25514c0557bfc351dd23d24111f6de85a17461b91a7abd7f8287d; anchor=canonical compile-only plan] | tests/idf_rmt_ring_test.cpp:147 [UTF8-LF sha256=67b7f1107160e49db96f06907edb16dc540095bf4aaf6555041d49f47362cf00; anchor=void complete(] | tests/idf_rmt_ring_sdk.inc:30 [UTF8-LF sha256=21407218c9fef3c223d298d4fc2084d9ab07b15a4de77a4cb43bd25c75c43d91; anchor=static size_t rmt_encode_bytes(] | tests/idf_rmt_ring_provenance.json:2 [UTF8-LF sha256=882d1ef64d39ff9d99e303b7f997c1b7e6f11db82ae52f11c0a8b56a1075736f; anchor=""sdk"":] | tests/led_grid_test.cpp:116 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=void cloudAnimationProgress(] | desktop/src/pixel_diagnostic.rs:643 [UTF8-LF sha256=5c2bb4db8bf95fc370c1b6fad2e11477cd76adad8f574304c7828e566a431108; anchor=fn pixel_diagnostic_remote_observation_is_ordered_and_never_actuates()] | desktop/src/realtime.rs:681 [UTF8-LF sha256=134977c4f18998b92ebb2e8d763147a1c0eeb2039c019a603cb7de712502fa01; anchor=fn realtime_pixel_diagnostic_requires_exact_complete_readback_and_typed_intent()] | mobile/test/pixel_diagnostic_command_test.dart:16 [UTF8-LF sha256=dc315906d40ff502aa39343f9a17bec4af8092527bb0e34c82c1059135445173; anchor=Two real WS clients observe the same diagnostic] | tests/led_grid_test.cpp:450 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=Advanced diagnostics are one transient post-render layer, not a scene.] | tests/game_role_renderer_test.cpp:146 [UTF8-LF sha256=bd21f414a36e808ff04b888864ff7d4a2417b5eed4f31db44f85d82949f19fc3; anchor=overlay.enabled=false] | tests/scene_store_test.cpp:48 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Diagnostics never write mode, pattern, output policy or transient RGB] | tests/diagnostic_receipt_test.cpp:56 [UTF8-LF sha256=85a66d548c203d2f3f95c69a7c008580f95cd1c0cf024f7dc5a2aca8dab7d282; anchor=Captured status projection:] | tests/usb_snapshot_budget_test.mjs:119 [UTF8-LF sha256=35d8fcb11a50bb33b553a7cf5993a21892c4d311c4225f12423274ea6f8bc03b; anchor=Captured regression must exceed the old sublimit] | tools/test-usb-api.ps1:1 [UTF8-LF sha256=6df4d45bc23e7c8624616053af6b5604d00e9297f8b6b72014eddb175219c605; anchor=param([string] $StatusCapture)] | tests/pixel_group_layout_test.cpp:25 [UTF8-LF sha256=e90ecd6aa4c125eca53d631f14e28b9ac1cfe74ce05ca4ac8d10525867a5aba3; anchor=int main()] | tests/pixel_group_renderer_test.cpp:6 [UTF8-LF sha256=fe614d76eca8e0afd62f3180bfe4f7621ae03c98e1b155dcf373807ca22fad45; anchor=int main()] | tests/matrix_fire_test.cpp:7 [UTF8-LF sha256=a33060673935f26ad6d6d1a56fa162c463a45140bb9010e9544644b7b97c3cf5; anchor=using Fire=] | tests/led_grid_test.cpp:82 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=void matrixFireRendering()] | tests/web_appearance_mount_test.mjs:46 [UTF8-LF sha256=6db5236e85ffc20b052684c16e625eaea04e05393d591abeb640b350e1b220a2; anchor=const sent=[]] | mobile/test/appearance_live_test.dart:26 [UTF8-LF sha256=77e70b48b5faf8f8ed73ccb5711b0c0ae12889e11d09870780d47a1d1c6a6b13; anchor=Fire direction follows saved readback] | desktop/src/state_appearance.rs:379 [UTF8-LF sha256=567e65fa7d3e0e7ad7ef508b7944c0f861b376fd348031dd105ad2df94ece5eb; anchor=fn validates_and_compares_only_requested_fields()]","One validated atomic board intent replaces client fan-out, without duplicating the effects engine or changing API generations.","Physical pixel/group placement and Android phone acceptance remain open. Mobile widgets and loopback transport are separate evidence from board buffer and optical correctness; no donor-wide completion is implied. | User reports first23 cells working and two-second pauses every5s; old cloud service measured2552ms. Actual-IDF encoder/EOF models compare all480pixels across12descriptor windows, but fault injection proves encoded_count11521 is not waveform proof. Require deployed IRQ receipt, live timing and optical confirmation after approved OTA. | Advanced diagnostic effects/overlay and bounded USB receipts pass focused host fixtures and the canonical S3 build. Installed client interaction, actual USB/HTTP/WebSocket readback, optical color/group placement and physical fault recovery remain separate deployment/acceptance checks; this checkpoint does not close the donor-wide parity gap.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Project/AddressableLeds.h","b0111ae0c80dc34149ea1044de7dd5488920301b","a28009e6211056f0cdb1071e7232d6d277a27cf9dc8e3e9951be9830745f18d4","pixel-group-layout | led-cell-test | led-benchmark | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","libraries/BoardCore/src/CellBatch.h:9 [UTF8-LF sha256=752eb7baf7d4974f60be098c70a17198ce21b6a973401a01a67b41915e648884; anchor=struct CellBatch] | firmware/esp/src/LedGrid.cpp:78 [UTF8-LF sha256=9e08798277b72ee4420add3d3dc530dce83bf507e824a088439c7dc123211793; anchor=bool LedGrid::setCells(] | firmware/esp/src/LedGrid.h:86 [UTF8-LF sha256=d9df351a2859d24b56bb58b63b9ef19c146c19992bdefc708fa5707672d297ee; anchor=bool setCells(] | libraries/BoardCore/src/TableCellMapping.h:8 [UTF8-LF sha256=8a4d0d13b7779d8a54c74bb95cafcd871814423ee42909bcd5ebbd6006213ba0; anchor=constexpr uint8_t logicalForPhysical] | firmware/esp32s3/src/LedOutput.cpp:210 [UTF8-LF sha256=45954b1ad02507a049a80c190849317fc75fb639d011ee7debb8a0d2cf013ed0; anchor=bool pending=false;] | firmware/esp32s3/src/LedWire.h:37 [UTF8-LF sha256=9d83e653d1d78a30142037519bc5bf9f5ab6487a354e245403b8ff25fdcf7dda; anchor=inline constexpr uint16_t zeroHigh=12] | firmware/esp/src/LedRenderAdmission.h:7 [UTF8-LF sha256=a6dc69b69cba74db1fff54fd75b8940bf88958404f6c3ac971b27797d5b13c50; anchor=inline bool uartWindowReady(] | firmware/esp/application.ino:1340 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=uint8_t defaultPhysicalCell] | tools/build-firmware.ps1:40 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=CellChaseOnBoot] | firmware/esp32s3/src/LedOutput.h:13 [UTF8-LF sha256=46f0e3cc947e5262451e6b3659bdfedb9cc3fa3d5de8bc4779ec6ddc97f81fec; anchor=#if !defined(PAKAR_S3_LED_GPIO_ENABLED)] | firmware/esp32s3/src/LedDmaGuard.h:16 [UTF8-LF sha256=6418b38a2773c592ccd48dd9c2cbfaaa1ff0a8f0aab99437e68c1a7c419a2a65; anchor=class LedDmaSetupScope] | firmware/esp32s3/src/LedDmaGuard.cpp:68 [UTF8-LF sha256=c2c2b90ee34d7919d22c0e4dc6c651c077b9acc0ed833090aab57e2c335e1d7e; anchor=newCacheSafeLedChannel] | mobile/lib/pixel_diagnostic.dart:301 [UTF8-LF sha256=f454f8dd79f7ac69a63f8dd16a63ef6e6d34fd51dbfcd16113aed3a278f9ec75; anchor=class PixelProbe] | mobile/lib/pixel_diagnostic_page.dart:14 [UTF8-LF sha256=804a63cddd3a7fa6d15cdf63d12eab70200fcd80bd527a1f93b715d2db6ae824; anchor=class PixelDiagnosticPage] | mobile/lib/api.dart:393 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future pixelDiagnostic(] | mobile/tool/pixel_probe.dart:65 [UTF8-LF sha256=b27e1a4ed0a664ef350400d452eff575463f12a975049e29ac70f3dd88d5d21a; anchor=Future main(] | desktop/src/pixel_diagnostic.rs:8 [UTF8-LF sha256=5c2bb4db8bf95fc370c1b6fad2e11477cd76adad8f574304c7828e566a431108; anchor=pub struct Probe] | desktop/src/native_workspace.rs:66 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=pub pixel_probe:] | desktop/src/ui/shell.rs:2705 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn send_pixel_probe(] | libraries/BoardCore/src/PixelDiagnostic.h:8 [UTF8-LF sha256=ed279cedb68663d0bfe93aae097e26fa0978f6642eb3c23dddc793a61522f8a2; anchor=struct PixelDiagnostic] | firmware/esp/src/LedGrid.cpp:564 [UTF8-LF sha256=9e08798277b72ee4420add3d3dc530dce83bf507e824a088439c7dc123211793; anchor=bool LedGrid::diagnostic(] | firmware/esp/src/DiagnosticReceipt.h:9 [UTF8-LF sha256=160078ef95ee5212d37b57ab452128a20810c544a23d613f2d8a0d449024a8fc; anchor=inline bool diagnosticReceiptStatus] | firmware/esp/application.ino:2619 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=String buildUsbTableSnapshot(bool includePixels) {]","Actual canonical complete AddressableLeds source/header read through EOF, including staged RGB versus show ownership. The selection adapter validates all80 cells before one loop-owned state mutation; no per-cell network pacing, show calls, persistence or AVR fan-out. This is a scoped adaptation of stage/show discipline, not a copied AVR timing sender. | ESP owns synchronized300ms wall-clock interpolation and one shared published frame. Single-cell actions use the same renderer method; static fallback remains immediate. Partial/invalid selections never reach renderer state. | Stress regression reproduced/fixed unrelated committed raw pixels reverting to stale logical targets on an abandoned partial stream. Both renderer modes and10000 full80-cell host batches per mode pass; host CPU timing is not physical throughput. | Complete donor reread at matching raw hash. User cable pattern has a tested80-cell bijection. Board-owned logical80-to1 chase composes one six-pixel-red frame every750ms with no skip/repeat/fades. GPIO and DMA workers sleep between submitted complete frames, with startup black and renderer-owned repair refresh. Physical acceptance remains open. | Backend selector is now a low-write application-only generated header, not a global compiler define. Plan remains read-only and both backend plans share identical SDK/compiler arguments; same canonical cache and no forced clean. SDK recompilation/cache-hit timing and physical driver acceptance remain separately measured. | Mobile pixel diagnostics adapts clear/stage/show through the existing desktop PKAR frame format: single pixel or six aligned pixels, arbitrary RGB, bounded previous/next/direct position, full480 black on every move and All off. Same-board/boot acknowledged effects mode, one pending write, exact published RGB/revision readback and no reconnect replay; no AVR sender/timing code copied into Flutter. | Operational diagnostic repair moves clear/stage/show into one optional pixel-diagnostic board command, no AVR fan-out or persistence. Correlated full RGB readback uses deduplicated same-ID WS/HTTP recovery; older firmware keeps the explicitly labelled raw socket path. Compact controls retain confirmed cursor on failure, expose six physical indices and verified logical labels, and keep board-keyed draft cursor/colour. Loopback/page/renderer evidence does not certify phone or optical acceptance. | The donor stage/show ownership and startup clear are adapted to one immutable480-pixel worker mailbox. The explicit S3 RMT-DMA recovery scales/swaps logical RGB once into1440 internal bytes; IDF5.5.5's MSB-first bytes encoder fills its bounded DMA ring instead of allocating46084 expanded-symbol bytes. Wait completion and300us low latch precede buffer release; disabled startup still sends a complete black frame. Static GPIO remains separately selectable; no optical acceptance is inferred. | Shared diagnostic observations carry board/boot-scoped revision/index/count/RGB/off through normal status pushes. Native and mobile controls adopt newer other-client observations without writes, ignore duplicate/older observations and retain only draft cursor/colour/group. Native atomic controls now match mobile colour, single/six-pixel stepping, sectors and All off; exact readback excludes pending frames. Real two-client WS and widget fixtures are separate from installed-phone and optical acceptance. | Pixel-workbench checkpoint extends the same donor staged-RGB/show ownership with one transient post-render diagnostic layer: bounded solid/blink/breathe/rainbow on one pixel or the baked six/twelve-pixel group; default clear and optional masked overlay share the existing mapping, correction and immutable output path. Base mode, winner, cell states, scene and original output policy survive the overlay; stopping restores them and never writes an animation frame to flash. No donor AVR timing loop or second effects engine was copied. | USB diagnostics retain one-shot correlated command execution and truthful publication state. An explicitly partial, same-board/boot receipt projects existing authoritative capabilities/driver/diagnostic fields and frame revision/pending metadata within the existing 8 KiB generic API budget. The general USB snapshot now checks its exact complete serialized envelope rather than an artificial 10240-byte status sublimit; all existing status/mapping/name/pixel fields and the 13200/16384-byte caps remain. Captured-state and maximum escaped-name fixtures exercise the previous failure without treating their synthetic frame metadata as live LED evidence.","Fixed AVR D6/PORTD assembly, 16MHz interrupt masking, MacroQueue workspace and100-pixel/8-bit strip configuration [replaced] | Donor native HAL showStrip and feature-profile brightness/renderedPixels buffers [replaced] | Physical channel order/timing, RMT-DMA refill latency and full-buffer optical correctness [pending]","Fixed AVR D6/PORTD assembly, 16MHz interrupt masking, MacroQueue workspace and100-pixel/8-bit strip configuration: The final480-pixel renderer belongs to the ESP32-S3 GPIO4 (or ESP8266D2), not a second AVR strip. Reusing AVR registers/timing or truncating to100 pixels would conflict with confirmed hardware and memory ownership. Existing bounded PC contract remains a separate compatibility window. | Donor native HAL showStrip and feature-profile brightness/renderedPixels buffers: The existing ESP output worker owns wire encoding/brightness and complete immutable frame copies. Host doubles test logical RGB and wire encoding separately; there is no second donor native HAL or duplicate brightness scale. | Physical channel order/timing, RMT-DMA refill latency and full-buffer optical correctness: The user confirmed pixels remained lit although the static backend reported complete transmissions and all1440 published RGB bytes were zero. That is a failed physical all-off acceptance, not a successful command. The explicit RMT recovery had350/700ns highs; the earlier candidate used250/600ns highs. After reading all eight WS2811V1.4 pages, the current RMT profile uses300/625ns highs and950/625ns LOW,1250ns bits and300us reset. New optional whole-frame GPIO4 RX-DMA digital capture remains undeployed/unverified and cannot measure strip DIN voltage. A witnessed task-scoped GDMA allocation requests cache-safe refill using the already-IRAM SDK graph; the ring still refills and partition flash guards remain. Incomplete SDK symbol accounting now fails closed; this is still not wire readback. Require visual all-black, whole-cell mapping, waveform/RF/refill stress and fault recovery; counters/error0 alone are not waveform or latch proof.","tests/led_grid_test.cpp:338 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=Entire selection validation] | tests/led_grid_stress_test.cpp:12 [UTF8-LF sha256=812517dc4c2973487d67d4cd294c149dcb66b527fc85716363f87c723fe5fa4a; anchor=constexpr unsigned iterations=10000;] | tests/led_worker_test.cpp:333 [UTF8-LF sha256=b049e7e09ed4d47bd22f614a4f6e322b82727c01ff1ad1f0ca65ef27f83e8d4d; anchor=void functional()] | tests/led_dma_guard_test.cpp:38 [UTF8-LF sha256=d69b5b0bd26348aabd176350120d11199748f2aceada1d39c113078719fa80c0; anchor=int main(] | tools/test-led-dma-guard.ps1:14 [UTF8-LF sha256=f35494c76825ab2deccfe40759e9a7853142dc30875ffaa813f648d67de1b2e5; anchor=--wrap=gdma_new_ahb_channel] | tests/cell_chase_wiring_test.mjs:9 [UTF8-LF sha256=e1659e2a3c12039a7c3f9bbd3c876ebdc467b85957ac6b5a5f51a367e4991507; anchor=const preset=] | tests/build_storage_test.ps1:52 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=$taskStaticS3] | mobile/test/pixel_diagnostic_test.dart:78 [UTF8-LF sha256=5864c45b07a12dc3e327228b35629fd58c9db99c5bf1a6ce3dbfb064d9cfe5e8; anchor=Every raw position clears] | mobile/test/pixel_diagnostic_page_test.dart:615 [UTF8-LF sha256=719e05d13cd64b01eb41e87344f27ae9b4862123f1a469e0b6e7e2af78798fbe; anchor=Pending writes cannot repeat] | mobile/test/pixel_diagnostic_transport_test.dart:97 [UTF8-LF sha256=253d183118520a978fbea6b6470cca2917fe6b45688bf6982601fbe86825f152; anchor=one complete frame, no replay] | mobile/test/pixel_diagnostic_command_test.dart:157 [UTF8-LF sha256=dc315906d40ff502aa39343f9a17bec4af8092527bb0e34c82c1059135445173; anchor=Atomic pixel command] | tests/mobile_pixel_probe_plan_test.ps1:8 [UTF8-LF sha256=823dd963abd25514c0557bfc351dd23d24111f6de85a17461b91a7abd7f8287d; anchor=canonical compile-only plan] | desktop/src/pixel_diagnostic.rs:643 [UTF8-LF sha256=5c2bb4db8bf95fc370c1b6fad2e11477cd76adad8f574304c7828e566a431108; anchor=fn pixel_diagnostic_remote_observation_is_ordered_and_never_actuates()] | desktop/src/realtime.rs:681 [UTF8-LF sha256=134977c4f18998b92ebb2e8d763147a1c0eeb2039c019a603cb7de712502fa01; anchor=fn realtime_pixel_diagnostic_requires_exact_complete_readback_and_typed_intent()] | mobile/test/pixel_diagnostic_command_test.dart:16 [UTF8-LF sha256=dc315906d40ff502aa39343f9a17bec4af8092527bb0e34c82c1059135445173; anchor=Two real WS clients observe the same diagnostic] | tests/led_grid_test.cpp:450 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=Advanced diagnostics are one transient post-render layer, not a scene.] | tests/game_role_renderer_test.cpp:146 [UTF8-LF sha256=bd21f414a36e808ff04b888864ff7d4a2417b5eed4f31db44f85d82949f19fc3; anchor=overlay.enabled=false] | tests/scene_store_test.cpp:48 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Diagnostics never write mode, pattern, output policy or transient RGB] | tests/diagnostic_receipt_test.cpp:56 [UTF8-LF sha256=85a66d548c203d2f3f95c69a7c008580f95cd1c0cf024f7dc5a2aca8dab7d282; anchor=Captured status projection:] | tests/usb_snapshot_budget_test.mjs:119 [UTF8-LF sha256=35d8fcb11a50bb33b553a7cf5993a21892c4d311c4225f12423274ea6f8bc03b; anchor=Captured regression must exceed the old sublimit] | tools/test-usb-api.ps1:1 [UTF8-LF sha256=6df4d45bc23e7c8624616053af6b5604d00e9297f8b6b72014eddb175219c605; anchor=param([string] $StatusCapture)]","One validated atomic board intent replaces client fan-out, without duplicating the effects engine or changing API generations.","Physical pixel/group placement and Android phone acceptance remain open. Mobile widgets and loopback transport are separate evidence from board buffer and optical correctness; no donor-wide completion is implied. | Advanced diagnostic effects/overlay and bounded USB receipts pass focused host fixtures and the canonical S3 build. Installed client interaction, actual USB/HTTP/WebSocket readback, optical color/group placement and physical fault recovery remain separate deployment/acceptance checks; this checkpoint does not close the donor-wide parity gap.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/AudioCues.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","37f1dbf5bdcd26ff149f71fb03d3a789c9f7ed4545a81e44f02bdf0a3a8ba31b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/AudioCues.h","b0111ae0c80dc34149ea1044de7dd5488920301b","dea983f52c8ddf420b87dad255c7cfa123672f894de5129747a1df6fc8d333a7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/AutomationStore.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","09abbdbfe7fb317e7a690bb5783fe5eaca3809bb24fb0cbc8b6baf7bcc06dc5c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","libraries/BoardCore/src/pccontroller/AutomationStore.cpp:223 [UTF8-LF sha256=22e9cdf2018d0247ef1c6192b50c8fb6f991ccbaecfdcbf07a00a76fe1756223; anchor=bool AutomationStore::commit(] | libraries/BoardCore/src/pccontroller/AutomationStore.cpp:310 [UTF8-LF sha256=22e9cdf2018d0247ef1c6192b50c8fb6f991ccbaecfdcbf07a00a76fe1756223; anchor=uint8_t AutomationExecutor::dispatch(]","Complete actual donor implementation/header and dependency EEPROM ownership layout were read, together with complete current target and source adaptation diffs. Retains dual-bank committed-generation selection, per-record/header CRC, stable twelve-byte UART record encoding, mutation validation, ascending-slot executor, event/window budgets and recursion protection. | Adapted actual CRC calls to shared WireCodec, supports all nine physical keys, leaves blank EEPROM volatile until an explicit edit and verifies committed bank readback before replacing active state. Architecture guard preserves this AVR EEPROM owner and native fixtures while excluding ESP8266/ESP32 transport proxies; no ESP EEPROM emulation or duplicated persistent owner.","Immediate clear/write when both EEPROM banks are invalid; publishing active generation before verifying committed bank [replaced] | Four-key eventValue bound and donor UART CRC namespace [replaced] | Compiling AVR EEPROM owner into ESP transport targets [replaced]","Immediate clear/write when both EEPROM banks are invalid; publishing active generation before verifying committed bank: Pakar retains a volatile empty state until an explicit user mutation and verifies the actual inactive-bank commit before promoting it. This preserves existing EEPROM and allows failure reporting instead of falsely accepting a torn write. | Four-key eventValue bound and donor UART CRC namespace: This board has nine confirmed inputs; valid key IDs0..8 replace donor0..3. Shared WireCodec provides the same CRC algorithm without importing a second UART protocol engine. | Compiling AVR EEPROM owner into ESP transport targets: Both ESP architectures proxy PCController operations to the AVR. The observed S3 SDK EEPROM.update error exposed an overly narrow ESP8266-only guard; the guard now excludes both families and their architecture macros. AVR/host fixture code remains intact.","tests/pc_contract_test.cpp:147 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=void macroAndAutomations() {] | tests/s3_platform_wiring_test.mjs:92 [UTF8-LF sha256=8b362da60381843154a12cc07b0c0401ec3885eb4cba2f0a2ed7815496dff6c3; anchor=assert.match(automationStore,]","","Run exact-source AVR firmware and integrated ESP32-S3/ESP8266 builds, physical automation/EEPROM readback and interruption tests on the actual board. Existing host fixtures/source syntax checks are not physical EEPROM, power-loss, actuator or integrated SDK acceptance.","Not established by source/hash/test-code comparison; see issue #2" @@ -400,9 +400,9 @@ "PCController","Project/MacroQueue.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","43a627c50e9908c20ea4b1d33c2eb4ef914672362ec5b9f5129604a7e5678b96","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/MacroQueue.h","b0111ae0c80dc34149ea1044de7dd5488920301b","ffbf6b0a39383b632dfdf0412e9a4e57b3c847c2746f72da117f5e98937e7606","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/MotionDoorPolicy.h","b0111ae0c80dc34149ea1044de7dd5488920301b","39ccef4732a2e67b1d86ce72f8d593b9f3cc27892c6009c23ba4d651783d703d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Project/ProtocolCodec.h","b0111ae0c80dc34149ea1044de7dd5488920301b","9a5fde33e199021bb6615bd7ff6d321a258f24ab9099e0a52bc9d857adebae8c","transport-convergence | avr-convergence | uart-flow-control | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6 | https://github.com/atomicdeploy/PakarController/issues/41","parity-gap","complete","docs/PC-CONTROLLER-MERGE-READINESS.md:68 [UTF8-LF sha256=a023cd4573108622cbd76a62cb52115c7dd6735d1b15999b73df1e5a2a9b96d5; anchor=### Framing and dispatch] | libraries/BoardCore/src/WireCodec.h:41 [UTF8-LF sha256=8f9bf8a72b39e03415b295ec8b326fb9ba4c20c719ea12263cbad1b61972347c; anchor=if (input[readIndex] == 0) return 0;] | docs/TRANSPORT-CONVERGENCE.md:9 [UTF8-LF sha256=91b59a9967f1eed8f8ac3381147b6a26c9b595e69cab105fe7648320b555e0ef; anchor=## Decision: shared semantics, appropriate carriers]","Read all bounded C++11 CRC/COBS algorithms and complete Pakar WireCodec.h. CRC/decoder structure is common; encoder bounds and ownership wrappers differ. Documented the path toward one dependency-free codec rather than silently replacing the live implementation. | 2026-10-30: reread both complete primitives against the preserved b0111ae0 donor snapshot. Apply the same zero-in-data-block COBS rejection to both current projects, retaining valid bytes, fixed buffers, in-place decode and owning/borrowed frame boundaries. PC Go host UDP uses its corrected shared Go decoder; the Pakar Rust/Dart adapters gain equivalent validation and targeted regressions. The cross-repository fixture and first-pass decision do not claim complete carrier/API or stock-board interoperability.","One-source codec and zero-copy UART integration [pending]","One-source codec and zero-copy UART integration: A raw algorithm import must preserve maximum framing/capacity behavior, partial RX, synchronous nested replies and 328P stack lifetime. Equal CRC conventions do not justify swapping owning Frame arrays for borrowed views without all consumers.","tests/protocol_test.cpp:15 [UTF8-LF sha256=4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144; anchor=Same malformed COBS vectors as PCController] | tests/fixtures/cobs.json:2 [UTF8-LF sha256=81683deafa749b231e483d2b75e4c45cae2a3262cab014ad0a20c74a82b31694; anchor=COBS delimiter-free]","","Issues #41 and PC#702 coordinate shared core ownership, typed service/opcode compatibility, optional capabilities and full transport/client parity. First-slice fixtures/strict malformed rejection are implemented; AVR lifetime, flash/stack deltas, full-boundary/resource, deployed/LAN/physical and complete shared-code acceptance remain open.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Project/ProtocolContract.h","b0111ae0c80dc34149ea1044de7dd5488920301b","7d69fa2430137e34dda659b3dd7fcc526814d3ed685f8efebe0923d052f3f77a","avr-convergence | uart-flow-control | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","docs/PC-CONTROLLER-MERGE-READINESS.md:66 [UTF8-LF sha256=a023cd4573108622cbd76a62cb52115c7dd6735d1b15999b73df1e5a2a9b96d5; anchor=## Wire blockers: same COBS does not mean same board contract]","Read all generated constants and compared current target text: newline-normalized file equals libraries/BoardCore/src/pccontroller/ProtocolContract.h. Stable numeric declarations are actually retained, but neither envelope nor every handler/response is interoperable.","Stock native board attachment and complete registered request support [pending]","Stock native board attachment and complete registered request support: Reserved-byte rule, native 0x11 PWM versus Pakar audio, HELLO/settings/status and timed ACK/event shapes differ. Existing tunnel does not make a stock donor board usable. One living capability contract is required, not release adapters or renumbered APIs.","","","Issue #3/#6/#10: choose shared codec/dispatch/timing boundaries and update every consumer with fixtures before allowing direct donor-board attachment.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Project/ProtocolContract.json","b0111ae0c80dc34149ea1044de7dd5488920301b","af30319345d28fbae9fb2fb2cee755252a224ce79c31ad3bd8039b27ab279a1f","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Project/ProtocolCodec.h","b0111ae0c80dc34149ea1044de7dd5488920301b","9a5fde33e199021bb6615bd7ff6d321a258f24ab9099e0a52bc9d857adebae8c","transport-convergence | avr-convergence | uart-flow-control | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6 | https://github.com/atomicdeploy/PakarController/issues/41","parity-gap","complete","docs/PC-CONTROLLER-MERGE-READINESS.md:68 [UTF8-LF sha256=a023cd4573108622cbd76a62cb52115c7dd6735d1b15999b73df1e5a2a9b96d5; anchor=### Framing and dispatch] | libraries/BoardCore/src/WireCodec.h:41 [UTF8-LF sha256=8f9bf8a72b39e03415b295ec8b326fb9ba4c20c719ea12263cbad1b61972347c; anchor=if (input[readIndex] == 0) return 0;] | docs/TRANSPORT-CONVERGENCE.md:9 [UTF8-LF sha256=7d4b449dec8b072d08139a66e45cc512051bcf9ccd53ad01fe8d250c9a146f1d; anchor=## Decision: shared semantics, appropriate carriers]","Read all bounded C++11 CRC/COBS algorithms and complete Pakar WireCodec.h. CRC/decoder structure is common; encoder bounds and ownership wrappers differ. Documented the path toward one dependency-free codec rather than silently replacing the live implementation. | 2026-10-30: reread both complete primitives against the preserved b0111ae0 donor snapshot. Apply the same zero-in-data-block COBS rejection to both current projects, retaining valid bytes, fixed buffers, in-place decode and owning/borrowed frame boundaries. PC Go host UDP uses its corrected shared Go decoder; the Pakar Rust/Dart adapters gain equivalent validation and targeted regressions. The cross-repository fixture and first-pass decision do not claim complete carrier/API or stock-board interoperability.","One-source codec and zero-copy UART integration [pending]","One-source codec and zero-copy UART integration: A raw algorithm import must preserve maximum framing/capacity behavior, partial RX, synchronous nested replies and 328P stack lifetime. Equal CRC conventions do not justify swapping owning Frame arrays for borrowed views without all consumers.","tests/protocol_test.cpp:23 [UTF8-LF sha256=b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04; anchor=Same malformed COBS vectors as PCController] | tests/fixtures/cobs.json:2 [UTF8-LF sha256=81683deafa749b231e483d2b75e4c45cae2a3262cab014ad0a20c74a82b31694; anchor=COBS delimiter-free]","","Issues #41 and PC#702 coordinate shared core ownership, typed service/opcode compatibility, optional capabilities and full transport/client parity. First-slice fixtures/strict malformed rejection are implemented; AVR lifetime, flash/stack deltas, full-boundary/resource, deployed/LAN/physical and complete shared-code acceptance remain open.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Project/ProtocolContract.h","b0111ae0c80dc34149ea1044de7dd5488920301b","7d69fa2430137e34dda659b3dd7fcc526814d3ed685f8efebe0923d052f3f77a","transport-convergence | avr-convergence | uart-flow-control | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6 | https://github.com/atomicdeploy/PakarController/issues/41","parity-gap","complete","docs/PC-CONTROLLER-MERGE-READINESS.md:66 [UTF8-LF sha256=a023cd4573108622cbd76a62cb52115c7dd6735d1b15999b73df1e5a2a9b96d5; anchor=## Wire blockers: same COBS does not mean same board contract]","Read all generated constants and compared current target text: newline-normalized file equals libraries/BoardCore/src/pccontroller/ProtocolContract.h. Stable numeric declarations are actually retained, but neither envelope nor every handler/response is interoperable.","Stock native board attachment and complete registered request support [pending]","Stock native board attachment and complete registered request support: Reserved-byte rule, native 0x11 PWM versus Pakar audio, HELLO/settings/status and timed ACK/event shapes differ. Existing tunnel does not make a stock donor board usable. One living capability contract is required, not release adapters or renumbered APIs.","","","Issue #3/#6/#10: choose shared codec/dispatch/timing boundaries and update every consumer with fixtures before allowing direct donor-board attachment.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Project/ProtocolContract.json","b0111ae0c80dc34149ea1044de7dd5488920301b","af30319345d28fbae9fb2fb2cee755252a224ce79c31ad3bd8039b27ab279a1f","transport-convergence | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6 | https://github.com/atomicdeploy/PakarController/issues/41","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/PwmController.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","396dd3cc4f8bc92bb2d0f29368c2c02b5d5b4847ab650c3e609256aa7cbf65ab","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/PwmController.h","b0111ae0c80dc34149ea1044de7dd5488920301b","79464a9329ec8a879beb72792f4e805e3be81d5597cc8206712460108c53c93a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/PwmExpanderDriver.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","9af2c0e0e20d6a2a6891a22e248fcd43d1b0b32b4e9c470b8f93a350cd9c6f8d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" @@ -423,8 +423,8 @@ "PCController","Project/Runtime/SensorRuntime.inc.h","b0111ae0c80dc34149ea1044de7dd5488920301b","62e9e0a33a7fe5f8685aea5bfc11ff3e9fe252e832d955e01b4acc15ca64f3c0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/SafeResetController.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","795bbad2f2cd322453929b56c8c506a19105add0b368f4af3f0a120a4c5a09e0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/SafeResetController.h","b0111ae0c80dc34149ea1044de7dd5488920301b","619e82aafa39e105e61b5d2b453ffd83167ba88765c092bdba1714c64e51e84d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Project/SettingsStore.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","7309fd36f0680722a4260e8f1251ae5a0fc67e99fc60f2426bb1294f789e87d4","pixel-group-layout | board-silent | preferences","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","firmware/esp/application.ino:1464 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=void serviceScenePersistence(bool flush)] | firmware/esp/src/LedPreferences.h:29 [UTF8-LF sha256=303c1469003fec6fc2777ce459c1fae872c73d67241871463b7a32135bd51aac; anchor=inline bool applyLedBootPreferences(] | desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(] | desktop/src/ui/device_settings.rs:54 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=fn avr_page(] | desktop/src/device_settings.rs:648 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=pub fn finish_avr(] | firmware/esp/src/SceneStore.h:17 [UTF8-LF sha256=4877f4a54061ba25e69104055303781c84eb66f7f5eb49e3ec258370665a7bd2; anchor=template class SceneStore] | firmware/esp/src/PixelCorrectionStore.h:9 [UTF8-LF sha256=2df74bce57295b7e2127aebd3f77ee52e35953162a8240c51510a6e11c1a708d; anchor=template class PixelCorrectionStore] | firmware/esp/src/LedScene.h:5 [UTF8-LF sha256=33e89e209eecc59de508241e51334285b767b53fb7ee0b9293ccf961e866ddd4; anchor=inline SceneState captureLedScene] | firmware/esp/src/AvrSceneSync.h:5 [UTF8-LF sha256=4863dd897abd06a207994d15f94ede88c0135650c415042922e2cd0193ffdfab; anchor=class AvrSceneSync] | firmware/esp/src/LedBackendSettings.h:9 [UTF8-LF sha256=dc55f78ab04e2fa5794dde958af77208cad588a16d257c98f855dcad491d81fb; anchor=template class LedBackendSettings] | libraries/BoardCore/src/PixelCorrections.h:12 [UTF8-LF sha256=2cffe251bb4f569b99cee3f3a6798f854c502cc983c57355e7947e40ce9f3c4d; anchor=bool enabled = true] | firmware/esp/src/PixelCorrectionStore.h:64 [UTF8-LF sha256=2df74bce57295b7e2127aebd3f77ee52e35953162a8240c51510a6e11c1a708d; anchor=const char *preview(JsonObjectConst doc,uint32_t now)] | firmware/esp/src/PixelGroupStore.h:8 [UTF8-LF sha256=9153156602bcbb9d725506c9ea3d87d0a6c5e4cdce56fa42c78b8418ded09d52; anchor=class PixelGroupStore] | firmware/esp/src/HostPresentationStore.h:180 [UTF8-LF sha256=b4db20cf50260b0498205c5ead521704f4dd6dbc36013f7a9f6e40481ada4aac; anchor=static const char *stagingPath()]","Reread the complete matching SettingsStore.cpp/header. Adapt actual markDirty/service1500ms/unchanged-byte wear reduction to ESP-owned SceneStore, with a bounded10s maximum edit delay and10s failed-write retry cooldown. The new private96-byte record stores all80 logical white/red/off states, mode/effect, brightness, output/static selection and front-panel cursor/winner. No animation, stream or chase frame becomes a per-frame flash write. | Replace the previous white-every-boot policy with stage/close/exact-readback/atomic-rename scene persistence. Read the old6-byte brightness record only for migration; it remains untouched. Restore the validated scene and mapping before first LED publication, keep safe white initial defaults if no valid scene, and expose pending/saved/error/write counters. AVR reacquisition and its SetMode-induced reset revision are baselines, not new Reset/key actions. App caches never restore hardware authority or replay queued writes. | Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes. | Desktop Device Settings now edits every supported Pakar AVR record field in one explicit draft: Silent/welcome/remember-page flags, display brightness, ADC6 threshold, telemetry period, short AVR name, visible/default pages and packed page order. Preserve the donor MCU ownership, validation and EEPROM wear/no-op rules, not its incompatible relay/motion/temperature record. USB and fenced HTTP share one GET/SET/GET transaction; compare the fresh complete baseline before SET, require exact ACK and persisted byte-for-byte readback, and reject stale peer/capability/programming owners without replay. | Actual production scene owner now uses the donor dirty/deferred settings mechanism, separate from AVR EEPROM. Host filesystem faults, first-frame mapped restore and baseline-only AVR resynchronization are explicitly exercised. | Pixel corrections reuse the existing SceneStore staged close/readback/atomic-rename transaction and donor MCU-owned validated record/unchanged-write discipline. The correction store adds explicit revision comparison, a private checksum and bounded ordered rules. New remapping math is project-specific, not represented as imported donor code. Native mapping tests and S3 compilation passed. This pixel-workbench checkpoint additionally exercises correction lease expiry/ownership, failed commit restoration and integrity migration with host filesystem fixtures; final installed clients, physical interrupted-flash durability and optical acceptance remain open. | Runtime-backend checkpoint reread the complete ledger-bound b0111ae0 Project/SettingsStore.cpp via immutable git show; the newer local checkout has different bytes and is not relabelled as matching this source. Adapt validated MCU-owned settings and EEPROM.update unchanged-write discipline to LedBackendSettings' separate private12-byte LittleFS record, reusing stage/close/exact-readback/rename. Requested backend is durable before asynchronous driver admission and independent of scene/render mode/current activation success. Before driver startup initializeDefault explicitly writes a valid absent-record build default once; damaged, unmounted and no-driver records never trigger automatic repair, formatting or replacement. | Pixel-workbench checkpoint preserves validated MCU-owned records and unchanged-write avoidance while extending PixelCorrectionStore with optional per-rule enabled flags (missing means enabled), integrity-protected durable serialization and ordered skip/re-enable behavior. A revision-fenced, owner-token RAM preview lease is a Pakar-specific extension, not a claimed donor feature: expiry/clear restores the saved map, preview frames never write flash, a different editor cannot commit over the lease, and a failed same-owner save preserves the live preview until explicit retry/expiry. Diagnostics capture the original output policy so temporary clear/overlay frames cannot replace the semantic scene. | Per-physical-group pixel counts use a separate checksum-validated board-owned PixelGroupStore with stage/close/readback/rename and no-op write avoidance. Loading a missing or corrupt record never formats the filesystem or overwrites it. Host fault-injection tests cover failed persistence without applying a draft; this is not physical interrupted-flash proof. | Reread the complete matching SettingsStore header/implementation and both actual Pakar presentation stores during source handoff. Adapt the donor independent-region/no-overlap ownership to distinct host-presentation.json/host-presentation.pending files; retain the existing validated staged transaction without migrating or overwriting the established presentation.json palette. The combined production-store regression reproduces the collision before the fix and verifies independent palette/host saves, failed rename and reboot, with correction/scene/staging bytes unchanged.","Donor AVR EEPROM address/layout,14-page motion-alias normalization, relay/PWM/motion/sensor restore and temperature/name records [replaced] | Donor EEPROM record ownership and complete unrelated settings normalization [replaced] | Physical interrupted flash/power-loss durability and optical restore acceptance [pending]","Donor AVR EEPROM address/layout,14-page motion-alias normalization, relay/PWM/motion/sensor restore and temperature/name records: LED preferences live in ESP LittleFS, not the donor AVR record. Copying the address/layout or actuator settings would collide with the separate Pakar AVR owner and imply absent hardware. Applicable board settings have an independent historical manifest; this narrow mapping neither replaces it nor certifies those full current-source contracts. | Donor EEPROM record ownership and complete unrelated settings normalization: The ESP scene now has its own validated bounded record,1500ms dirty coalescing,10s maximum delay, changed-record skipping and failure backoff. AVR peripheral/menu settings retain their separate EEPROM owner; copying relay/PWM/sensor layout would corrupt unrelated hardware contracts. | Physical interrupted flash/power-loss durability and optical restore acceptance: Actual production SceneStore fixtures now cover stage/open/short-write/close-corruption/read/rename failures, exact unchanged/frame write counts, all record-byte corruption, rollover and reboot roundtrip. These filesystem doubles and atomic LittleFS rename do not prove physical abrupt-power flash durability or emitted colors.","tests/led_grid_test.cpp:264 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=Boot policy accepts existing files without restoring a saved animation] | tests/s3_platform_wiring_test.mjs:149 [UTF8-LF sha256=8b362da60381843154a12cc07b0c0401ec3885eb4cba2f0a2ed7815496dff6c3; anchor=sceneStore.begin] | tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of [] | desktop/src/board_silent.rs:401 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_settings_full_apply_requires_fresh_baseline_ack_and_exact_persistent_readback()] | desktop/src/board_silent.rs:299 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_settings_require_each_changed_hardware_capability_and_no_programming_latch()] | desktop/src/device_settings.rs:950 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=fn avr_editor_owns_dirty_draft_pending_receipt_and_same_peer_readback()] | tests/scene_store_test.cpp:156 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Continuous edits have bounded save delay] | tests/boot_audio_test.mjs:10 [UTF8-LF sha256=882dc32b024997c0411e04754bc549d0dbedf20371c4704bafc0167c657729fc; anchor=Restating the active role must ACK without resetting the winner] | tests/scene_store_test.cpp:63 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=MemoryFiles files;LedBackendSettings settings;] | tests/led_backend_integration_test.mjs:7 [UTF8-LF sha256=011bfd16a540618bea7a79a4d0977f99832738075bf896688d00df3717639689; anchor=const select=app.slice(] | tests/pixel_corrections_test.cpp:15 [UTF8-LF sha256=1b86a9f70dd3d79bda4e94c0eb04fcbfb38aab17aa2618a1f08ce10996501723; anchor=rules[0].enabled=false] | tests/pixel_correction_store_test.cpp:31 [UTF8-LF sha256=73443a0e323ea7ab0b971d1c5605e2ef61b6c4488f3ffa9e22815997c917e008; anchor=Existing enabled-only records remain readable] | tests/pixel_correction_store_test.cpp:27 [UTF8-LF sha256=73443a0e323ea7ab0b971d1c5605e2ef61b6c4488f3ffa9e22815997c917e008; anchor=files.failRename=true] | tests/scene_store_test.cpp:48 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Diagnostics never write mode, pattern, output policy or transient RGB] | tools/test-pixel-corrections.ps1:11 [UTF8-LF sha256=16ccb9491ea7c3a1abe202eccfe707c6e174635469328ea357de7acd137724e6; anchor=$taskStoreOutput] | tests/pixel_group_store_test.cpp:6 [UTF8-LF sha256=45efe22ef09d0ccb1f156026a7e499bb9f593e5be5bad94b1efed199b5d8ea8b; anchor=int main()] | tests/host_presentation_test.cpp:14 [UTF8-LF sha256=f0069540e8e4861d6215156018ad8f76c0f7fa2eb172d53b8ac74766e7aa1cb3; anchor=Two production stores share LittleFS]","Verified semantic scene restore replaces unconditional white boot; safe initial white and read-only legacy brightness migration remain. Animation/stream bytes never become per-frame persistence writes.","Verify guarded SDK builds and installed scene/mode/output restore across actual reboot. Physical abrupt-power interruption and optical success remain separate from host filesystem failure fixtures. | Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established. | Native full-record editor is source-only pending installed UI/physical AVR USB and Wi-Fi readback/reboot acceptance. Flutter and embedded Web still expose only the earlier Silent setting plus live-control links, not this full AVR field editor. The pre-write baseline comparison is optimistic, not an atomic multi-client CAS contract. | Verify installed backend selection after actual reboot and both runtime switch directions over USB/Wi-Fi. Host storage fault injection and source guards do not prove interrupted-flash durability, deployment, or visible LEDs; unrelated SettingsStore parity gaps remain unchanged. | The new RAM preview lease, disabled-rule migration and durable correction commit pass host fault/expiry/order tests and S3 compilation. Real abrupt-power durability, simultaneous installed editors, board output and user acceptance still require device evidence; unrelated AVR/menu/host SettingsStore omissions remain open.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Project/SettingsStore.h","b0111ae0c80dc34149ea1044de7dd5488920301b","ccdcfb6e1ab186abd6a4f0b5a302bb14bab295c9a0bd9b4a306036fa32f1eaf3","pixel-group-layout | avr-convergence | board-silent | preferences","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(] | desktop/src/ui/device_settings.rs:54 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=fn avr_page(] | desktop/src/device_settings.rs:648 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=pub fn finish_avr(] | libraries/BoardCore/src/PixelCorrections.h:12 [UTF8-LF sha256=2cffe251bb4f569b99cee3f3a6798f854c502cc983c57355e7947e40ce9f3c4d; anchor=bool enabled = true] | firmware/esp/src/PixelCorrectionStore.h:64 [UTF8-LF sha256=2df74bce57295b7e2127aebd3f77ee52e35953162a8240c51510a6e11c1a708d; anchor=const char *preview(JsonObjectConst doc,uint32_t now)] | firmware/esp/src/LedScene.h:5 [UTF8-LF sha256=33e89e209eecc59de508241e51334285b767b53fb7ee0b9293ccf961e866ddd4; anchor=inline SceneState captureLedScene]","Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes. | Desktop Device Settings now edits every supported Pakar AVR record field in one explicit draft: Silent/welcome/remember-page flags, display brightness, ADC6 threshold, telemetry period, short AVR name, visible/default pages and packed page order. Preserve the donor MCU ownership, validation and EEPROM wear/no-op rules, not its incompatible relay/motion/temperature record. USB and fenced HTTP share one GET/SET/GET transaction; compare the fresh complete baseline before SET, require exact ACK and persisted byte-for-byte readback, and reject stale peer/capability/programming owners without replay. | Pixel-workbench checkpoint preserves validated MCU-owned records and unchanged-write avoidance while extending PixelCorrectionStore with optional per-rule enabled flags (missing means enabled), integrity-protected durable serialization and ordered skip/re-enable behavior. A revision-fenced, owner-token RAM preview lease is a Pakar-specific extension, not a claimed donor feature: expiry/clear restores the saved map, preview frames never write flash, a different editor cannot commit over the lease, and a failed same-owner save preserves the live preview until explicit retry/expiry. Diagnostics capture the original output policy so temporary clear/overlay frames cannot replace the semantic scene.","Donor relay, motion, PWM, temperature,14-page and boot restore field layouts [pending]","Donor relay, motion, PWM, temperature,14-page and boot restore field layouts: The current hardware has a separate validated21-byte Pakar profile. Preserve all its fields and settings ownership; do not copy unrelated peripheral storage or overwrite EEPROM regions. Generic donor editors remain pending where hardware/capabilities later match.","tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of [] | desktop/src/board_silent.rs:401 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_settings_full_apply_requires_fresh_baseline_ack_and_exact_persistent_readback()] | desktop/src/board_silent.rs:299 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_settings_require_each_changed_hardware_capability_and_no_programming_latch()] | desktop/src/device_settings.rs:950 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=fn avr_editor_owns_dirty_draft_pending_receipt_and_same_peer_readback()] | tests/pixel_corrections_test.cpp:15 [UTF8-LF sha256=1b86a9f70dd3d79bda4e94c0eb04fcbfb38aab17aa2618a1f08ce10996501723; anchor=rules[0].enabled=false] | tests/pixel_correction_store_test.cpp:31 [UTF8-LF sha256=73443a0e323ea7ab0b971d1c5605e2ef61b6c4488f3ffa9e22815997c917e008; anchor=Existing enabled-only records remain readable] | tests/pixel_correction_store_test.cpp:27 [UTF8-LF sha256=73443a0e323ea7ab0b971d1c5605e2ef61b6c4488f3ffa9e22815997c917e008; anchor=files.failRename=true] | tests/scene_store_test.cpp:48 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Diagnostics never write mode, pattern, output policy or transient RGB] | tools/test-pixel-corrections.ps1:11 [UTF8-LF sha256=16ccb9491ea7c3a1abe202eccfe707c6e174635469328ea357de7acd137724e6; anchor=$taskStoreOutput]","","Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established. | Native full-record editor is source-only pending installed UI/physical AVR USB and Wi-Fi readback/reboot acceptance. Flutter and embedded Web still expose only the earlier Silent setting plus live-control links, not this full AVR field editor. The pre-write baseline comparison is optimistic, not an atomic multi-client CAS contract. | The new RAM preview lease, disabled-rule migration and durable correction commit pass host fault/expiry/order tests and S3 compilation. Real abrupt-power durability, simultaneous installed editors, board output and user acceptance still require device evidence; unrelated AVR/menu/host SettingsStore omissions remain open.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Project/SettingsStore.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","7309fd36f0680722a4260e8f1251ae5a0fc67e99fc60f2426bb1294f789e87d4","pixel-group-layout | board-silent | preferences","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","firmware/esp/application.ino:1464 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=void serviceScenePersistence(bool flush)] | firmware/esp/src/LedPreferences.h:29 [UTF8-LF sha256=303c1469003fec6fc2777ce459c1fae872c73d67241871463b7a32135bd51aac; anchor=inline bool applyLedBootPreferences(] | desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(] | desktop/src/ui/device_settings.rs:54 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=fn avr_page(] | desktop/src/device_settings.rs:648 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=pub fn finish_avr(] | firmware/esp/src/SceneStore.h:17 [UTF8-LF sha256=4877f4a54061ba25e69104055303781c84eb66f7f5eb49e3ec258370665a7bd2; anchor=template class SceneStore] | firmware/esp/src/PixelCorrectionStore.h:9 [UTF8-LF sha256=2df74bce57295b7e2127aebd3f77ee52e35953162a8240c51510a6e11c1a708d; anchor=template class PixelCorrectionStore] | firmware/esp/src/LedScene.h:5 [UTF8-LF sha256=33e89e209eecc59de508241e51334285b767b53fb7ee0b9293ccf961e866ddd4; anchor=inline SceneState captureLedScene] | firmware/esp/src/AvrSceneSync.h:5 [UTF8-LF sha256=4863dd897abd06a207994d15f94ede88c0135650c415042922e2cd0193ffdfab; anchor=class AvrSceneSync] | firmware/esp/src/LedBackendSettings.h:9 [UTF8-LF sha256=dc55f78ab04e2fa5794dde958af77208cad588a16d257c98f855dcad491d81fb; anchor=template class LedBackendSettings] | libraries/BoardCore/src/PixelCorrections.h:12 [UTF8-LF sha256=2cffe251bb4f569b99cee3f3a6798f854c502cc983c57355e7947e40ce9f3c4d; anchor=bool enabled = true] | firmware/esp/src/PixelCorrectionStore.h:64 [UTF8-LF sha256=2df74bce57295b7e2127aebd3f77ee52e35953162a8240c51510a6e11c1a708d; anchor=const char *preview(JsonObjectConst doc,uint32_t now)] | firmware/esp/src/PixelGroupStore.h:8 [UTF8-LF sha256=9153156602bcbb9d725506c9ea3d87d0a6c5e4cdce56fa42c78b8418ded09d52; anchor=class PixelGroupStore] | firmware/esp/src/HostPresentationStore.h:180 [UTF8-LF sha256=b4db20cf50260b0498205c5ead521704f4dd6dbc36013f7a9f6e40481ada4aac; anchor=static const char *stagingPath()]","Reread the complete matching SettingsStore.cpp/header. Adapt actual markDirty/service1500ms/unchanged-byte wear reduction to ESP-owned SceneStore, with a bounded10s maximum edit delay and10s failed-write retry cooldown. The new private96-byte record stores all80 logical white/red/off states, mode/effect, brightness, output/static selection and front-panel cursor/winner. No animation, stream or chase frame becomes a per-frame flash write. | Replace the previous white-every-boot policy with stage/close/exact-readback/atomic-rename scene persistence. Read the old6-byte brightness record only for migration; it remains untouched. Restore the validated scene and mapping before first LED publication, keep safe white initial defaults if no valid scene, and expose pending/saved/error/write counters. AVR reacquisition and its SetMode-induced reset revision are baselines, not new Reset/key actions. App caches never restore hardware authority or replay queued writes. | Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes. | Desktop Device Settings now edits every supported Pakar AVR record field in one explicit draft: Silent/welcome/remember-page flags, display brightness, ADC6 threshold, telemetry period, short AVR name, visible/default pages and packed page order. Preserve the donor MCU ownership, validation and EEPROM wear/no-op rules, not its incompatible relay/motion/temperature record. USB and fenced HTTP share one GET/SET/GET transaction; compare the fresh complete baseline before SET, require exact ACK and persisted byte-for-byte readback, and reject stale peer/capability/programming owners without replay. | Actual production scene owner now uses the donor dirty/deferred settings mechanism, separate from AVR EEPROM. Host filesystem faults, first-frame mapped restore and baseline-only AVR resynchronization are explicitly exercised. | Pixel corrections reuse the existing SceneStore staged close/readback/atomic-rename transaction and donor MCU-owned validated record/unchanged-write discipline. The correction store adds explicit revision comparison, a private checksum and bounded ordered rules. New remapping math is project-specific, not represented as imported donor code. Native mapping tests and S3 compilation passed. This pixel-workbench checkpoint additionally exercises correction lease expiry/ownership, failed commit restoration and integrity migration with host filesystem fixtures; final installed clients, physical interrupted-flash durability and optical acceptance remain open. | Runtime-backend checkpoint reread the complete ledger-bound b0111ae0 Project/SettingsStore.cpp via immutable git show; the newer local checkout has different bytes and is not relabelled as matching this source. Adapt validated MCU-owned settings and EEPROM.update unchanged-write discipline to LedBackendSettings' separate private12-byte LittleFS record, reusing stage/close/exact-readback/rename. Requested backend is durable before asynchronous driver admission and independent of scene/render mode/current activation success. Before driver startup initializeDefault explicitly writes a valid absent-record build default once; damaged, unmounted and no-driver records never trigger automatic repair, formatting or replacement. | Pixel-workbench checkpoint preserves validated MCU-owned records and unchanged-write avoidance while extending PixelCorrectionStore with optional per-rule enabled flags (missing means enabled), integrity-protected durable serialization and ordered skip/re-enable behavior. A revision-fenced, owner-token RAM preview lease is a Pakar-specific extension, not a claimed donor feature: expiry/clear restores the saved map, preview frames never write flash, a different editor cannot commit over the lease, and a failed same-owner save preserves the live preview until explicit retry/expiry. Diagnostics capture the original output policy so temporary clear/overlay frames cannot replace the semantic scene. | Per-physical-group pixel counts use a separate checksum-validated board-owned PixelGroupStore with stage/close/readback/rename and no-op write avoidance. Loading a missing or corrupt record never formats the filesystem or overwrites it. Host fault-injection tests cover failed persistence without applying a draft; this is not physical interrupted-flash proof. | Reread the complete matching SettingsStore header/implementation and both actual Pakar presentation stores during source handoff. Adapt the donor independent-region/no-overlap ownership to distinct host-presentation.json/host-presentation.pending files; retain the existing validated staged transaction without migrating or overwriting the established presentation.json palette. The combined production-store regression reproduces the collision before the fix and verifies independent palette/host saves, failed rename and reboot, with correction/scene/staging bytes unchanged.","Donor AVR EEPROM address/layout,14-page motion-alias normalization, relay/PWM/motion/sensor restore and temperature/name records [replaced] | Donor EEPROM record ownership and complete unrelated settings normalization [replaced] | Physical interrupted flash/power-loss durability and optical restore acceptance [pending]","Donor AVR EEPROM address/layout,14-page motion-alias normalization, relay/PWM/motion/sensor restore and temperature/name records: LED preferences live in ESP LittleFS, not the donor AVR record. Copying the address/layout or actuator settings would collide with the separate Pakar AVR owner and imply absent hardware. Applicable board settings have an independent historical manifest; this narrow mapping neither replaces it nor certifies those full current-source contracts. | Donor EEPROM record ownership and complete unrelated settings normalization: The ESP scene now has its own validated bounded record,1500ms dirty coalescing,10s maximum delay, changed-record skipping and failure backoff. AVR peripheral/menu settings retain their separate EEPROM owner; copying relay/PWM/sensor layout would corrupt unrelated hardware contracts. | Physical interrupted flash/power-loss durability and optical restore acceptance: Actual production SceneStore fixtures now cover stage/open/short-write/close-corruption/read/rename failures, exact unchanged/frame write counts, all record-byte corruption, rollover and reboot roundtrip. These filesystem doubles and atomic LittleFS rename do not prove physical abrupt-power flash durability or emitted colors.","tests/led_grid_test.cpp:264 [UTF8-LF sha256=5122ffecf1d5dfdf3cf765beea48c3be0eb40bd08a6ab2de0372f0ae017011bc; anchor=Boot policy accepts existing files without restoring a saved animation] | tests/s3_platform_wiring_test.mjs:149 [UTF8-LF sha256=8b362da60381843154a12cc07b0c0401ec3885eb4cba2f0a2ed7815496dff6c3; anchor=sceneStore.begin] | tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of [] | desktop/src/board_silent.rs:401 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_settings_full_apply_requires_fresh_baseline_ack_and_exact_persistent_readback()] | desktop/src/board_silent.rs:299 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_settings_require_each_changed_hardware_capability_and_no_programming_latch()] | desktop/src/device_settings.rs:950 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=fn avr_editor_owns_dirty_draft_pending_receipt_and_same_peer_readback()] | tests/scene_store_test.cpp:156 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Continuous edits have bounded save delay] | tests/boot_audio_test.mjs:10 [UTF8-LF sha256=882dc32b024997c0411e04754bc549d0dbedf20371c4704bafc0167c657729fc; anchor=Restating the active role must ACK without resetting the winner] | tests/scene_store_test.cpp:63 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=MemoryFiles files;LedBackendSettings settings;] | tests/led_backend_integration_test.mjs:7 [UTF8-LF sha256=011bfd16a540618bea7a79a4d0977f99832738075bf896688d00df3717639689; anchor=const select=app.slice(] | tests/pixel_corrections_test.cpp:15 [UTF8-LF sha256=1b86a9f70dd3d79bda4e94c0eb04fcbfb38aab17aa2618a1f08ce10996501723; anchor=rules[0].enabled=false] | tests/pixel_correction_store_test.cpp:31 [UTF8-LF sha256=73443a0e323ea7ab0b971d1c5605e2ef61b6c4488f3ffa9e22815997c917e008; anchor=Existing enabled-only records remain readable] | tests/pixel_correction_store_test.cpp:27 [UTF8-LF sha256=73443a0e323ea7ab0b971d1c5605e2ef61b6c4488f3ffa9e22815997c917e008; anchor=files.failRename=true] | tests/scene_store_test.cpp:48 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Diagnostics never write mode, pattern, output policy or transient RGB] | tools/test-pixel-corrections.ps1:11 [UTF8-LF sha256=16ccb9491ea7c3a1abe202eccfe707c6e174635469328ea357de7acd137724e6; anchor=$taskStoreOutput] | tests/pixel_group_store_test.cpp:6 [UTF8-LF sha256=45efe22ef09d0ccb1f156026a7e499bb9f593e5be5bad94b1efed199b5d8ea8b; anchor=int main()] | tests/host_presentation_test.cpp:14 [UTF8-LF sha256=f0069540e8e4861d6215156018ad8f76c0f7fa2eb172d53b8ac74766e7aa1cb3; anchor=Two production stores share LittleFS]","Verified semantic scene restore replaces unconditional white boot; safe initial white and read-only legacy brightness migration remain. Animation/stream bytes never become per-frame persistence writes.","Verify guarded SDK builds and installed scene/mode/output restore across actual reboot. Physical abrupt-power interruption and optical success remain separate from host filesystem failure fixtures. | Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established. | Native full-record editor is source-only pending installed UI/physical AVR USB and Wi-Fi readback/reboot acceptance. Flutter and embedded Web still expose only the earlier Silent setting plus live-control links, not this full AVR field editor. The pre-write baseline comparison is optimistic, not an atomic multi-client CAS contract. | Verify installed backend selection after actual reboot and both runtime switch directions over USB/Wi-Fi. Host storage fault injection and source guards do not prove interrupted-flash durability, deployment, or visible LEDs; unrelated SettingsStore parity gaps remain unchanged. | The new RAM preview lease, disabled-rule migration and durable correction commit pass host fault/expiry/order tests and S3 compilation. Real abrupt-power durability, simultaneous installed editors, board output and user acceptance still require device evidence; unrelated AVR/menu/host SettingsStore omissions remain open.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Project/SettingsStore.h","b0111ae0c80dc34149ea1044de7dd5488920301b","ccdcfb6e1ab186abd6a4f0b5a302bb14bab295c9a0bd9b4a306036fa32f1eaf3","pixel-group-layout | avr-convergence | board-silent | preferences","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(] | desktop/src/ui/device_settings.rs:54 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=fn avr_page(] | desktop/src/device_settings.rs:648 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=pub fn finish_avr(] | libraries/BoardCore/src/PixelCorrections.h:12 [UTF8-LF sha256=2cffe251bb4f569b99cee3f3a6798f854c502cc983c57355e7947e40ce9f3c4d; anchor=bool enabled = true] | firmware/esp/src/PixelCorrectionStore.h:64 [UTF8-LF sha256=2df74bce57295b7e2127aebd3f77ee52e35953162a8240c51510a6e11c1a708d; anchor=const char *preview(JsonObjectConst doc,uint32_t now)] | firmware/esp/src/LedScene.h:5 [UTF8-LF sha256=33e89e209eecc59de508241e51334285b767b53fb7ee0b9293ccf961e866ddd4; anchor=inline SceneState captureLedScene]","Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes. | Desktop Device Settings now edits every supported Pakar AVR record field in one explicit draft: Silent/welcome/remember-page flags, display brightness, ADC6 threshold, telemetry period, short AVR name, visible/default pages and packed page order. Preserve the donor MCU ownership, validation and EEPROM wear/no-op rules, not its incompatible relay/motion/temperature record. USB and fenced HTTP share one GET/SET/GET transaction; compare the fresh complete baseline before SET, require exact ACK and persisted byte-for-byte readback, and reject stale peer/capability/programming owners without replay. | Pixel-workbench checkpoint preserves validated MCU-owned records and unchanged-write avoidance while extending PixelCorrectionStore with optional per-rule enabled flags (missing means enabled), integrity-protected durable serialization and ordered skip/re-enable behavior. A revision-fenced, owner-token RAM preview lease is a Pakar-specific extension, not a claimed donor feature: expiry/clear restores the saved map, preview frames never write flash, a different editor cannot commit over the lease, and a failed same-owner save preserves the live preview until explicit retry/expiry. Diagnostics capture the original output policy so temporary clear/overlay frames cannot replace the semantic scene.","Donor relay, motion, PWM, temperature,14-page and boot restore field layouts [pending]","Donor relay, motion, PWM, temperature,14-page and boot restore field layouts: The current hardware has a separate validated21-byte Pakar profile. Preserve all its fields and settings ownership; do not copy unrelated peripheral storage or overwrite EEPROM regions. Generic donor editors remain pending where hardware/capabilities later match.","tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of [] | desktop/src/board_silent.rs:401 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_settings_full_apply_requires_fresh_baseline_ack_and_exact_persistent_readback()] | desktop/src/board_silent.rs:299 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_settings_require_each_changed_hardware_capability_and_no_programming_latch()] | desktop/src/device_settings.rs:950 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=fn avr_editor_owns_dirty_draft_pending_receipt_and_same_peer_readback()] | tests/pixel_corrections_test.cpp:15 [UTF8-LF sha256=1b86a9f70dd3d79bda4e94c0eb04fcbfb38aab17aa2618a1f08ce10996501723; anchor=rules[0].enabled=false] | tests/pixel_correction_store_test.cpp:31 [UTF8-LF sha256=73443a0e323ea7ab0b971d1c5605e2ef61b6c4488f3ffa9e22815997c917e008; anchor=Existing enabled-only records remain readable] | tests/pixel_correction_store_test.cpp:27 [UTF8-LF sha256=73443a0e323ea7ab0b971d1c5605e2ef61b6c4488f3ffa9e22815997c917e008; anchor=files.failRename=true] | tests/scene_store_test.cpp:48 [UTF8-LF sha256=bde2386fcfab1043f052bcd9cf8d8ff2de2d478adfbdffd15aaa7c4a464e8a9e; anchor=Diagnostics never write mode, pattern, output policy or transient RGB] | tools/test-pixel-corrections.ps1:11 [UTF8-LF sha256=16ccb9491ea7c3a1abe202eccfe707c6e174635469328ea357de7acd137724e6; anchor=$taskStoreOutput]","","Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established. | Native full-record editor is source-only pending installed UI/physical AVR USB and Wi-Fi readback/reboot acceptance. Flutter and embedded Web still expose only the earlier Silent setting plus live-control links, not this full AVR field editor. The pre-write baseline comparison is optimistic, not an atomic multi-client CAS contract. | The new RAM preview lease, disabled-rule migration and durable correction commit pass host fault/expiry/order tests and S3 compilation. Real abrupt-power durability, simultaneous installed editors, board output and user acceptance still require device evidence; unrelated AVR/menu/host SettingsStore omissions remain open.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/StatusLedController.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","b68da7e21af4396027c0f7ed7267d4c778292da47c19f1b9172bb4547ed1f53d","status-rgb","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","firmware/esp32s3/src/StatusRgb.h:162 [UTF8-LF sha256=a60111d37be51c4985e01d77821113fd0f97cd5df243e2e521b5ec3075b31b97; anchor=bool service(uint32_t now, Writer writer)] | desktop/src/status_rgb.rs:29 [UTF8-LF sha256=3dbe61cf121e44b14fe047427fbe9d0b8e60735baa445ad3116310560631965e; anchor=pub fn observe(] | mobile/lib/status_rgb.dart:52 [UTF8-LF sha256=458f867c97d38107b37fc399dfc55f1ad2f786ce5e236a9a9b2c048d0b4fbfd0; anchor=class StatusRgbPreview] | firmware/esp/src/WebUi.h:2567 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=function acceptStatusRgb(]","Full header/implementation read through EOF. Actual absolute elapsed/period evaluation, idempotent state ownership and already-scaled rendered RGB reporting adapted into the S3's board-owned semantic engine. Added bounded 300ms eased state transitions, explicit pin safety and driver-accepted output revision; no independent client-side animation reconstruction. | Native/Web/mobile now merge compact observed RGB revisions only for the selected exact board/boot. Duplicate/older/foreign revisions cannot overwrite newer RGB, renew command/hardware freshness or replace cells/layout. Complete status snapshots retain only newer same-peer RGB; peer changes discard it. Selected transport capabilities gate settings with no silent Wi-Fi fallback, and writes require saved ACK plus exact persisted readback rather than a local preview.","PwmController/EEPROM/StatusProfileAddress dependencies and sixteen-bit phase clock [replaced] | profile/setProfile/defaultProfile, applyRequested/cancelEffect and generic playCue descriptors [pending]","PwmController/EEPROM/StatusProfileAddress dependencies and sixteen-bit phase clock: Those target AVR RGB PWM wiring and EEPROM allocation, not the identified S3 addressable pixel. Existing S3 persisted configuration owns enable/brightness, writer acceptance owns reported output, and the 32-bit elapsed timer advances without per-loop phase drift. | profile/setProfile/defaultProfile, applyRequested/cancelEffect and generic playCue descriptors: Fixed semantic Flash/Cycle/Transition patterns and state priorities are now adapted, including real black blink intervals, held-black shutdown and bounded driver-failure retries. This does not implement every manually controllable donor RGB behavior. Preserve pending custom profiles/cues/descriptors and their exact owner tests rather than replacing them with optimistic UI controls.","tests/s3_status_rgb_test.cpp:73 [UTF8-LF sha256=f48af12963f643feca43b77ed5edd181e22981afb761305cf947d5ad053fa6f7; anchor=No duplicate state events] | desktop/src/status_rgb.rs:157 [UTF8-LF sha256=3dbe61cf121e44b14fe047427fbe9d0b8e60735baa445ad3116310560631965e; anchor=fn compact_rgb_updates_only_the_matching_peer_and_newer_rgb_not_hardware_clock] | mobile/test/status_rgb_test.dart:7 [UTF8-LF sha256=908b1d6f4f4832dea297e0e36b9ab87500754569b595938d3cecfb95870bb61f; anchor=compact RGB event changes only fresh matching RGB] | tests/interface_settings_test.mjs:91 [UTF8-LF sha256=102d6c411b732bad8106dd09358da3df3989d1140aa77c87a884c8072c66c6f3; anchor=Compact events merge only RGB]","","Implement useful generic omitted RGB profile/manual/cue contracts; measure physical GPIO/RGB order and latency under simultaneous matrix/network/AVR work. Native writer doubles are not optical acceptance.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/StatusLedController.h","b0111ae0c80dc34149ea1044de7dd5488920301b","afbc70e3e8674c80d779168c37dc7430ab058e35baf2705b4b45cc11dd4e22ca","status-rgb","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","firmware/esp32s3/src/StatusRgb.h:15 [UTF8-LF sha256=a60111d37be51c4985e01d77821113fd0f97cd5df243e2e521b5ec3075b31b97; anchor=class StatusRgb] | firmware/esp/application.ino:1930 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=void serviceStatusRgb(uint32_t now)] | firmware/esp32s3/src/StatusRgbConfig.h:14 [UTF8-LF sha256=a3f770c0448d8d4acefd31ca12c8f79a6f27218472776b4093bf5a361df97dcc; anchor=class StatusRgbConfig] | desktop/src/status_rgb.rs:68 [UTF8-LF sha256=3dbe61cf121e44b14fe047427fbe9d0b8e60735baa445ad3116310560631965e; anchor=pub struct Configuration] | mobile/lib/status_rgb.dart:116 [UTF8-LF sha256=458f867c97d38107b37fc399dfc55f1ad2f786ce5e236a9a9b2c048d0b4fbfd0; anchor=class StatusRgbSettings]","Full header/implementation read through EOF. Adapted nonblocking lifecycle state, absolute elapsed/period animation, repeat-state phase preservation, brightness-scaled rendered-byte reporting and explicit board-owned configuration into PakarS3::StatusRgb. Fixed descriptors now add donor flash/cycle/one-shot transition plus pulse/double-blink: fault and shutdown preempt routine states, verified success expires with the existing update lifecycle, offline USB is healthy and simultaneous AP/network availability is distinct.","AVR PwmController channels13..15/Power signal driver, EEPROM profile records and uint16 clock [replaced] | 19-condition editable profile catalog, temporary cue composition/priority and retained manual descriptors [pending]","AVR PwmController channels13..15/Power signal driver, EEPROM profile records and uint16 clock: The S3 owns a separate explicitly confirmed addressable pixel, not PCController PWM channels or the AVR EEPROM map. StatusRgbConfig now persists enable/pin/confirmation/brightness with pending readback/rename and identical-write suppression; uint32 elapsed arithmetic avoids the AVR clock restriction. Native/Web/mobile require complete board readback and explicit GPIO38/48 confirmation; no electrical pin probing or optimistic persisted success is performed. | 19-condition editable profile catalog, temporary cue composition/priority and retained manual descriptors: Static, breathe, flash, color-cycle and one-shot transition now exist in fixed semantic profiles, with additive pulse and double-blink. User-editable descriptors, cue composition, manual ownership, profile persistence and native/Web/mobile/front-panel editors remain useful work; fixed profiles do not certify full donor parity.","tests/s3_status_rgb_test.cpp:76 [UTF8-LF sha256=f48af12963f643feca43b77ed5edd181e22981afb761305cf947d5ad053fa6f7; anchor=New mode cross-fades from actual frame] | tests/s3_status_rgb_config_test.cpp:24 [UTF8-LF sha256=f7b011a64d197ff17f1184fd50ceb6ab1eb91c4bef590ad7fe6e0490cfc06517; anchor=No identical write] | desktop/src/status_rgb.rs:131 [UTF8-LF sha256=3dbe61cf121e44b14fe047427fbe9d0b8e60735baa445ad3116310560631965e; anchor=fn saved_ack_requires_exact_persisted_config_readback_not_optimistic_preview] | mobile/test/status_rgb_test.dart:40 [UTF8-LF sha256=908b1d6f4f4832dea297e0e36b9ab87500754569b595938d3cecfb95870bb61f; anchor=RGB settings require explicit complete observations and safe GPIO]","","Finish generic manual/profile/cue capabilities with persisted ACK/readback across all clients; verify physical onboard output and safety/error/update state priorities under real peer loss.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/StatusLedMath.h","b0111ae0c80dc34149ea1044de7dd5488920301b","997e15f12ca1d51689567f3a15b2f3b716261173878797cd5e68866289724740","status-rgb","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","firmware/esp32s3/src/StatusRgb.h:242 [UTF8-LF sha256=a60111d37be51c4985e01d77821113fd0f97cd5df243e2e521b5ec3075b31b97; anchor=static uint8_t scale(] | desktop/src/status_rgb.rs:2 [UTF8-LF sha256=3dbe61cf121e44b14fe047427fbe9d0b8e60735baa445ad3116310560631965e; anchor=clients never synthesize] | mobile/lib/status_rgb.dart:9 [UTF8-LF sha256=458f867c97d38107b37fc399dfc55f1ad2f786ce5e236a9a9b2c048d0b4fbfd0; anchor=Color? statusRgbColor(] | firmware/esp/src/WebUi.h:2566 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=function statusRgbOutput]","Full original source read through EOF. Actual unsigned byte-exact scale(value, level) and interpolate(from, to, phase) arithmetic copied into the S3 semantic onboard-pixel engine, independent of the GPIO4 matrix.","phaseDeadline distributing 64 phases in a modulo-16-bit AVR clock [replaced]","phaseDeadline distributing 64 phases in a modulo-16-bit AVR clock: S3 evaluates the present phase directly from uint32 elapsed milliseconds rather than scheduling 64 deadline steps. Late service does not slow the animation; native tests cover real production arithmetic and millis wrap, not optical output.","tests/s3_status_rgb_test.cpp:69 [UTF8-LF sha256=f48af12963f643feca43b77ed5edd181e22981afb761305cf947d5ad053fa6f7; anchor=Already-scaled output bytes] | mobile/test/status_rgb_test.dart:70 [UTF8-LF sha256=908b1d6f4f4832dea297e0e36b9ab87500754569b595938d3cecfb95870bb61f; anchor=physical RGB is observed not synthesized or double dimmed] | tests/interface_settings_test.mjs:46 [UTF8-LF sha256=102d6c411b732bad8106dd09358da3df3989d1140aa77c87a884c8072c66c6f3; anchor=Actual emitted RGB is not brightness-scaled again]","","Verify exact optical RGB order, configured onboard GPIO and animation timing on the identified S3 under simultaneous Wi-Fi/matrix load; source and writer acceptance are not physical light proof.","Not established by source/hash/test-code comparison; see issue #2" @@ -433,7 +433,7 @@ "PCController","Project/TemperatureRoles.h","b0111ae0c80dc34149ea1044de7dd5488920301b","13795f785758aa5634affcdd2ef6817291bb97227a4eb5eecf463d4379fc5a70","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/TransitionMath.h","b0111ae0c80dc34149ea1044de7dd5488920301b","64d107c8f02830b77028c1a579d4398e7bd5446953076944f8c64f60521403bd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Project/UartProtocol.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","bd2d1b8586622e7cc5a2712402b8832519745c7403b0326097dfd4dda07efb2f","transport-convergence | avr-convergence | usb-otg | uart-flow-control | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6 | https://github.com/atomicdeploy/PakarController/issues/41","parity-gap","complete","libraries/BoardCore/src/SerialLink.h:26 [UTF8-LF sha256=99373bc4c090e34324cfd2ae8c94d6666c227ad7e157a47fbd85125aac6c13a0; anchor=UartFlow::receiveBudget(serial_.available())] | libraries/BoardCore/src/UartFlow.h:25 [UTF8-LF sha256=44f8638f725c9cf83a6f53639144f107aace1556dd254d6dcebcaed4853c6469; anchor=constexpr uint16_t serviceBudget = 64]","Actual entry-occupancy receive snapshot, drop-until-delimiter recovery, bounded framing and synchronous response behavior adapted to shared SerialLink. Added64-byte cap for ESP32's larger RX ring and explicit negative-read handling; CRC/COBS code unchanged. | Hardware UART remains on AVR; buffered unsolicited sends require enough TX ring space for a complete maximum frame. Failed game-state sends keep stateDirty armed. Busy-wire/polling behavior and default retained.","Zero-copy Frame view, in-place RX decode and externally exposed macro TX scratch [pending] | framingErrors(), crcErrors(), responseErrors() separate counters [pending] | Event high-bit timestamp, BuzzerChanged and timed Ack/ErrorResponse suffixes [pending] | advisory unknown reserved envelope byte acceptance [replaced]","Zero-copy Frame view, in-place RX decode and externally exposed macro TX scratch: Actual donor member TX scratch and streaming writeCobs are now adapted, preserving byte-exact packets and partial-write boundary repair. Current AVR FrontPanel transmit path falls from about652 to502 stack bytes including TX interrupt, against588 bytes remaining after globals; this is a focused ELF estimate, not whole-program high-water proof. Owning RX Frame and in-place decode optimization remain pending; no mutable macro scratch API is exposed. | framingErrors(), crcErrors(), responseErrors() separate counters: Existing shared combined errors and S3 hardwareErrors are retained. Separate counter taxonomy and peer/client telemetry need full validated layout adaptation; this bounded flow change does not invent or renumber remote fields. | Event high-bit timestamp, BuzzerChanged and timed Ack/ErrorResponse suffixes: Donor raw operation/schema values differ from the established Pakar envelope and explicit PCController adapter. Blindly appending suffixes would change ACK matching and nested contract semantics. Read full ProtocolRuntime/ControllerEvents and clients, then integrate timestamped projection through the explicit adapter. | advisory unknown reserved envelope byte acceptance: Pakar deliberately requires its fixed zero reserved byte and valid CRC, per living API fail-closed integrity policy. No numbered generation negotiation or compatibility alias is introduced. Existing protocol_test preserves CRC-correct nonzero rejection; optional opcodes still reach semantic dispatch.","tests/serial_link_test.cpp:52 [UTF8-LF sha256=c103ffb2c7530bb4c85373433b123fe072bb6649f2d97b82f70fa08d404eeae8; anchor=Actual donor split-RX/synchronous-TX isolation]","Buffered AVR profile is distinct and explicitly rejects ESP8266 targeting; no blind write replay.","Paired S3 application integration, reconnect/readback ownership and physical stress; build flag is not hardware acceptance. | Complete zero-copy/counter/timestamp projection pending above; actual donor protocol registry is not imported wholesale.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Project/UartProtocol.h","b0111ae0c80dc34149ea1044de7dd5488920301b","287a95a65a9b9655e64a15ece051bc792a06564b648a1b53eed4f373c564e458","transport-convergence | avr-convergence | usb-otg | uart-flow-control | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6 | https://github.com/atomicdeploy/PakarController/issues/41","parity-gap","complete","firmware/esp/src/HostDemand.h:9 [UTF8-LF sha256=ed625496269aacbfc22ee281879893a58d9695cad2e2338c24934a6d1018e1b8; anchor=class HostDemand] | firmware/esp/src/HostSerial.h:26 [UTF8-LF sha256=d7dee1d9329e3959d2e362783295de00e6345dfd66cdde3f2ee1def0856fc1da; anchor=serial.enableReboot(false)] | desktop/src/usb_demand.rs:84 [UTF8-LF sha256=1901dd438e454e83718feb769745bd83175a28808d746b5385d523e3c0155dac; anchor=pub struct Lease] | mobile/lib/usb_transport.dart:89 [UTF8-LF sha256=6b7600fb34460397f778d5d46239e2e90954c33ae1a2b28f0b37a492185dd13b; anchor=class PakarUsbTransport] | libraries/BoardCore/src/SerialLink.h:26 [UTF8-LF sha256=99373bc4c090e34324cfd2ae8c94d6666c227ad7e157a47fbd85125aac6c13a0; anchor=UartFlow::receiveBudget(serial_.available())] | libraries/BoardCore/src/UartFlow.h:25 [UTF8-LF sha256=44f8638f725c9cf83a6f53639144f107aace1556dd254d6dcebcaed4853c6469; anchor=constexpr uint16_t serviceBudget = 64]","Fully read actual UART API and synchronous payload lifetime contract. Shared SerialLink keeps AVR HardwareSerial ownership, separate RX/TX frame storage and handler/opaque context; Stream constructor preserves the S3 explicit pins/buffers. | USB-OTG task reread this complete actual donor header and implementation. Retain the established Pakar COBS/CRC envelope and synchronous frame lifetime across UART0, hardware CDC and owned TinyUSB CDC, rather than add a second public protocol or copy incompatible donor operation identifiers. Finite observation demand is separate from command ownership and explicit replies.","Zero-copy Frame view, in-place RX decode and externally exposed macro TX scratch [pending] | framingErrors(), crcErrors(), responseErrors() separate counters [pending] | Event high-bit timestamp, BuzzerChanged and timed Ack/ErrorResponse suffixes [pending] | advisory unknown reserved envelope byte acceptance [replaced]","Zero-copy Frame view, in-place RX decode and externally exposed macro TX scratch: Actual donor member TX scratch and streaming writeCobs are now adapted, preserving byte-exact packets and partial-write boundary repair. Current AVR FrontPanel transmit path falls from about652 to502 stack bytes including TX interrupt, against588 bytes remaining after globals; this is a focused ELF estimate, not whole-program high-water proof. Owning RX Frame and in-place decode optimization remain pending; no mutable macro scratch API is exposed. | framingErrors(), crcErrors(), responseErrors() separate counters: Existing shared combined errors and S3 hardwareErrors are retained. Separate counter taxonomy and peer/client telemetry need full validated layout adaptation; this bounded flow change does not invent or renumber remote fields. | Event high-bit timestamp, BuzzerChanged and timed Ack/ErrorResponse suffixes: Donor raw operation/schema values differ from the established Pakar envelope and explicit PCController adapter. Blindly appending suffixes would change ACK matching and nested contract semantics. Read full ProtocolRuntime/ControllerEvents and clients, then integrate timestamped projection through the explicit adapter. | advisory unknown reserved envelope byte acceptance: Pakar deliberately requires its fixed zero reserved byte and valid CRC, per living API fail-closed integrity policy. No numbered generation negotiation or compatibility alias is introduced. Existing protocol_test preserves CRC-correct nonzero rejection; optional opcodes still reach semantic dispatch.","tests/host_demand_test.cpp:22 [UTF8-LF sha256=aaf8339b0acafc270aece95144b9310e84cc150193003567bc339a98d5731923; anchor=int main()] | tests/host_usb_test.cpp:4 [UTF8-LF sha256=777369c0955c5eced1b601e0c30c88d6df128bd59e507ef93d16a44976f9f071; anchor=int main()] | desktop/src/usb_table.rs:1062 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn usb_demand_actual_worker_has_no_full_capture_without_reader_and_releases_lease] | tests/serial_link_test.cpp:52 [UTF8-LF sha256=c103ffb2c7530bb4c85373433b123fe072bb6649f2d97b82f70fa08d404eeae8; anchor=Actual donor split-RX/synchronous-TX isolation]","Bounded large-ring RX, negative availability/read rejection and paired buffered build mode without busy GPIO.","Optimize zero-copy/storage only with full shared consumer and AVR stack/RAM proof; no claim of donor-wide protocol parity. | Finish separate counters and timestamped event contracts, and physical UART/LED/OTA contention acceptance.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Project/UartProtocol.h","b0111ae0c80dc34149ea1044de7dd5488920301b","287a95a65a9b9655e64a15ece051bc792a06564b648a1b53eed4f373c564e458","transport-convergence | avr-convergence | usb-otg | uart-flow-control | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6 | https://github.com/atomicdeploy/PakarController/issues/41","parity-gap","complete","firmware/esp/src/HostDemand.h:9 [UTF8-LF sha256=ed625496269aacbfc22ee281879893a58d9695cad2e2338c24934a6d1018e1b8; anchor=class HostDemand] | firmware/esp/src/HostSerial.h:26 [UTF8-LF sha256=d7dee1d9329e3959d2e362783295de00e6345dfd66cdde3f2ee1def0856fc1da; anchor=serial.enableReboot(false)] | desktop/src/usb_demand.rs:85 [UTF8-LF sha256=961ca5901617970235dbfc6ee6e6e169a4158253135a5e2b7a2ab7018d8662c2; anchor=pub struct Lease] | mobile/lib/usb_transport.dart:94 [UTF8-LF sha256=6d316b3b7ab94ed00d67cc92735696e860638bd8a91f5d9376d63dfe6b915eff; anchor=class PakarUsbTransport] | libraries/BoardCore/src/SerialLink.h:26 [UTF8-LF sha256=99373bc4c090e34324cfd2ae8c94d6666c227ad7e157a47fbd85125aac6c13a0; anchor=UartFlow::receiveBudget(serial_.available())] | libraries/BoardCore/src/UartFlow.h:25 [UTF8-LF sha256=44f8638f725c9cf83a6f53639144f107aace1556dd254d6dcebcaed4853c6469; anchor=constexpr uint16_t serviceBudget = 64]","Fully read actual UART API and synchronous payload lifetime contract. Shared SerialLink keeps AVR HardwareSerial ownership, separate RX/TX frame storage and handler/opaque context; Stream constructor preserves the S3 explicit pins/buffers. | USB-OTG task reread this complete actual donor header and implementation. Retain the established Pakar COBS/CRC envelope and synchronous frame lifetime across UART0, hardware CDC and owned TinyUSB CDC, rather than add a second public protocol or copy incompatible donor operation identifiers. Finite observation demand is separate from command ownership and explicit replies.","Zero-copy Frame view, in-place RX decode and externally exposed macro TX scratch [pending] | framingErrors(), crcErrors(), responseErrors() separate counters [pending] | Event high-bit timestamp, BuzzerChanged and timed Ack/ErrorResponse suffixes [pending] | advisory unknown reserved envelope byte acceptance [replaced]","Zero-copy Frame view, in-place RX decode and externally exposed macro TX scratch: Actual donor member TX scratch and streaming writeCobs are now adapted, preserving byte-exact packets and partial-write boundary repair. Current AVR FrontPanel transmit path falls from about652 to502 stack bytes including TX interrupt, against588 bytes remaining after globals; this is a focused ELF estimate, not whole-program high-water proof. Owning RX Frame and in-place decode optimization remain pending; no mutable macro scratch API is exposed. | framingErrors(), crcErrors(), responseErrors() separate counters: Existing shared combined errors and S3 hardwareErrors are retained. Separate counter taxonomy and peer/client telemetry need full validated layout adaptation; this bounded flow change does not invent or renumber remote fields. | Event high-bit timestamp, BuzzerChanged and timed Ack/ErrorResponse suffixes: Donor raw operation/schema values differ from the established Pakar envelope and explicit PCController adapter. Blindly appending suffixes would change ACK matching and nested contract semantics. Read full ProtocolRuntime/ControllerEvents and clients, then integrate timestamped projection through the explicit adapter. | advisory unknown reserved envelope byte acceptance: Pakar deliberately requires its fixed zero reserved byte and valid CRC, per living API fail-closed integrity policy. No numbered generation negotiation or compatibility alias is introduced. Existing protocol_test preserves CRC-correct nonzero rejection; optional opcodes still reach semantic dispatch.","tests/host_demand_test.cpp:22 [UTF8-LF sha256=aaf8339b0acafc270aece95144b9310e84cc150193003567bc339a98d5731923; anchor=int main()] | tests/host_usb_test.cpp:4 [UTF8-LF sha256=777369c0955c5eced1b601e0c30c88d6df128bd59e507ef93d16a44976f9f071; anchor=int main()] | desktop/src/usb_table.rs:1063 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn usb_demand_actual_worker_has_no_full_capture_without_reader_and_releases_lease] | tests/serial_link_test.cpp:52 [UTF8-LF sha256=c103ffb2c7530bb4c85373433b123fe072bb6649f2d97b82f70fa08d404eeae8; anchor=Actual donor split-RX/synchronous-TX isolation]","Bounded large-ring RX, negative availability/read rejection and paired buffered build mode without busy GPIO.","Optimize zero-copy/storage only with full shared consumer and AVR stack/RAM proof; no claim of donor-wide protocol parity. | Finish separate counters and timestamped event contracts, and physical UART/LED/OTA contention acceptance.","Not established by source/hash/test-code comparison; see issue #2" "PCController","ProjectConfig.h","b0111ae0c80dc34149ea1044de7dd5488920301b","ea03bcf7f2822166274ee5b51568e1250dd55af9a0282435e409c9adb08748a3","avr-convergence | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","docs/PC-CONTROLLER-MERGE-READINESS.md:44 [UTF8-LF sha256=a023cd4573108622cbd76a62cb52115c7dd6735d1b15999b73df1e5a2a9b96d5; anchor=## System-wide gap matrix]","Read every actual default, memory rationale and conflicting-feature guard. Compared donor 115200 application UART and constrained optional modules with Pakar 38400, active scheduler/macros/automations and separate ESP ownership. Documentation only, no flag changed.","Direct donor defaults, optional boot opcodes/menu-label/audio storage and broader hardware engines [pending]","Direct donor defaults, optional boot opcodes/menu-label/audio storage and broader hardware engines: Donor-constrained flash tradeoffs are not Pakar measurements. These useful feature families need explicit profile/EEPROM and memory decisions; a 328P must not blindly enable every feature or inherit donor absent-hardware behavior.","","","Issue #3/#6: source-level profile mapping followed by measured affected AVR flash/SRAM/stack and driver acceptance; no new compile or commissioning in this pass.","Not established by source/hash/test-code comparison; see issue #2" "PCController","README.md","b0111ae0c80dc34149ea1044de7dd5488920301b","862dd06b91efdfbc09f4d895e305ecec71d84637a7bf7d4d95d907bcd3b83566","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","README.md:43 [UTF8-LF sha256=6ef2bde812ca8aaf889f5ad1c8313ae6e4e5ac079b93424ef4be6e2cdd007da5; anchor=## Get started] | docs/README.md:7 [UTF8-LF sha256=006973cc50167b64df88e80d539604df763b3edffac561a9ada86fcc7b69683b; anchor=## Operate and recover]","Task-oriented quick start, distinct surfaces, engineering-download provenance, maintained guide hub and truthful source/physical verification boundary adapted to actual Pakar contracts.","PCController hardware map, media/seat operations, Go/C ABI examples [not-applicable] | Complete operator walkthrough and supported cross-platform native package matrix [pending]","PCController hardware map, media/seat operations, Go/C ABI examples: Different product hardware/runtime; copying would misdirect wiring or invent Pakar commands. | Complete operator walkthrough and supported cross-platform native package matrix: Pakar native packages and hardware acceptance do not match every donor target; preserve explicit platform limits rather than claim unsupported installers.","tests/doc_links_test.mjs:13 [UTF8-LF sha256=1f3a40d9c4fba2f5da02dc92a6637f8c073e07b10307cf5d8f405691902bba33; anchor=assert.deepEqual(checkGuides]","","Expand accepted operator walkthroughs as runtime and hardware gates are completed.","Not established by source/hash/test-code comparison; see issue #2" "PCController","REUSE.toml","b0111ae0c80dc34149ea1044de7dd5488920301b","5e8fb99c410dedb16ffbffdcb3b303ba8a4b5739f925abb5d47c93175d26f88c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" @@ -453,11 +453,11 @@ "PCController","Tools/AvrdudeAdapter/README.md","b0111ae0c80dc34149ea1044de7dd5488920301b","ffe4f860e4943e344e784b0e7fa93ec66bf428d9696c5f52377a2c53caa727bc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Bootloader/Urboot-Custom/backends/tm1637_progress.S","b0111ae0c80dc34149ea1044de7dd5488920301b","c8b64c7ba4650141aeacc9dd67f37b276ce6301f8c5c8115c60ba8f90495f7e9","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Bootloader/Urboot-Custom/build.cmd","b0111ae0c80dc34149ea1044de7dd5488920301b","ab1a23b41de9e52a9f650fe36c8575fba33445755c7a83a89f980d92aaa4cb55","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Bootloader/Urboot-Custom/build.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","5e5607d54af43ead28eddb747e48b6e2450dd45ef7c47202203c4f5cfc8991ab","avr-boot-chain | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","tools/prepare-avr-image.mjs:65 [UTF8-LF sha256=0d4e2a5a87967031393a6079e07938c7612e6fbfcb0d38c9a2a3ae419e86d525; anchor=export function mergeUrboot(] | tools/build-firmware.ps1:312 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor='prepare-avr-image.mjs']","Read the complete donor builder and README. Adapted actual Intel HEX/checksum parsing, AVR jump decoding/encoding, wrapped reset RJMP, ELF __bad_interrupt unused-vector proof, metadata-selected application trampoline, erased-gap fill, full-flash binary/HEX round trip and exact source hash validation into the canonical AVR build. No chip, fuse, EEPROM or UART operation is performed by packaging. | Found and corrected Pakar stock merged image reset vector bypassing its included vector Urboot. Preserve stock MiniCore UART0 autobaud, reset-register r2, EEPROM and chip-erase features with a pinned 384-byte image; never silently substitute the donor custom 512-byte backend.","u8.0.1 custom 512-byte backend, progress hook and TM1637 D13/PB5 CLK, D11/PB3 DIO implementation [pending] | Stock source bootstrap/download, destructive profile-local object recreation and optional feature-size matrix [replaced]","u8.0.1 custom 512-byte backend, progress hook and TM1637 D13/PB5 CLK, D11/PB3 DIO implementation: This board uses A5 CLK/A4 DIO and the stock 384-byte application ceiling. Do not deploy a wrong-pin backend or silently shrink available application space. Adapt the backend/pin profile and revalidate flash budget before any optional custom bootloader installation. | Stock source bootstrap/download, destructive profile-local object recreation and optional feature-size matrix: Use the installed MiniCore stock artifact with exact known HEX hash and the actual existing AVR compiler/ELF. Rebuilding unrelated bootloader variants, deleting object directories and downloading another core would add writes and does not fix the selected boot chain.","tests/avr_boot_image_test.mjs:14 [UTF8-LF sha256=6cae18f7420e6309045f6b25b741373698f4d306dfa6c3f8c8b126425f9e712d; anchor=assert.equal(decodeJump(result.merged,0),0x7e80)] | tests/avr_boot_image_test.mjs:20 [UTF8-LF sha256=6cae18f7420e6309045f6b25b741373698f4d306dfa6c3f8c8b126425f9e712d; anchor='Application input is never patched in place']","","Physical ISP signature/fuse/flash/EEPROM backup and byte verification; correct the measured clock/BOD profile before deployment; prove reset enters Urboot and returns to the application, then real hardware UART round-trip. | Optional custom progress backend adaptation for A4/A5 with explicit profile/size and physical display acceptance.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Bootloader/Urboot-Custom/build.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","5e5607d54af43ead28eddb747e48b6e2450dd45ef7c47202203c4f5cfc8991ab","avr-boot-chain | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","tools/prepare-avr-image.mjs:65 [UTF8-LF sha256=0d4e2a5a87967031393a6079e07938c7612e6fbfcb0d38c9a2a3ae419e86d525; anchor=export function mergeUrboot(] | tools/build-firmware.ps1:314 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor='prepare-avr-image.mjs']","Read the complete donor builder and README. Adapted actual Intel HEX/checksum parsing, AVR jump decoding/encoding, wrapped reset RJMP, ELF __bad_interrupt unused-vector proof, metadata-selected application trampoline, erased-gap fill, full-flash binary/HEX round trip and exact source hash validation into the canonical AVR build. No chip, fuse, EEPROM or UART operation is performed by packaging. | Found and corrected Pakar stock merged image reset vector bypassing its included vector Urboot. Preserve stock MiniCore UART0 autobaud, reset-register r2, EEPROM and chip-erase features with a pinned 384-byte image; never silently substitute the donor custom 512-byte backend.","u8.0.1 custom 512-byte backend, progress hook and TM1637 D13/PB5 CLK, D11/PB3 DIO implementation [pending] | Stock source bootstrap/download, destructive profile-local object recreation and optional feature-size matrix [replaced]","u8.0.1 custom 512-byte backend, progress hook and TM1637 D13/PB5 CLK, D11/PB3 DIO implementation: This board uses A5 CLK/A4 DIO and the stock 384-byte application ceiling. Do not deploy a wrong-pin backend or silently shrink available application space. Adapt the backend/pin profile and revalidate flash budget before any optional custom bootloader installation. | Stock source bootstrap/download, destructive profile-local object recreation and optional feature-size matrix: Use the installed MiniCore stock artifact with exact known HEX hash and the actual existing AVR compiler/ELF. Rebuilding unrelated bootloader variants, deleting object directories and downloading another core would add writes and does not fix the selected boot chain.","tests/avr_boot_image_test.mjs:14 [UTF8-LF sha256=6cae18f7420e6309045f6b25b741373698f4d306dfa6c3f8c8b126425f9e712d; anchor=assert.equal(decodeJump(result.merged,0),0x7e80)] | tests/avr_boot_image_test.mjs:20 [UTF8-LF sha256=6cae18f7420e6309045f6b25b741373698f4d306dfa6c3f8c8b126425f9e712d; anchor='Application input is never patched in place']","","Physical ISP signature/fuse/flash/EEPROM backup and byte verification; correct the measured clock/BOD profile before deployment; prove reset enters Urboot and returns to the application, then real hardware UART round-trip. | Optional custom progress backend adaptation for A4/A5 with explicit profile/size and physical display acceptance.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Bootloader/Urboot-Custom/build.sh","b0111ae0c80dc34149ea1044de7dd5488920301b","41d505c05b539064ee2933340a190098604a95c95b5a4a8eb8ba3d1cb138d964","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Bootloader/Urboot-Custom/LICENSE.upstream","b0111ae0c80dc34149ea1044de7dd5488920301b","3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986","firmware-hardware | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Bootloader/Urboot-Custom/patches/0001-optional-progress-backend-hook.patch","b0111ae0c80dc34149ea1044de7dd5488920301b","7d17596cbc5c34bfa3311d1f2979ac52ef2d270014a76d9c716010044e8cebc3","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Bootloader/Urboot-Custom/README.md","b0111ae0c80dc34149ea1044de7dd5488920301b","2ec873e7f23b56a6997a0c83de1e258ae2ce9b75cf1eb7cf08b40da5aaa68090","avr-boot-chain | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","tools/prepare-avr-image.mjs:65 [UTF8-LF sha256=0d4e2a5a87967031393a6079e07938c7612e6fbfcb0d38c9a2a3ae419e86d525; anchor=export function mergeUrboot(] | tools/build-firmware.ps1:312 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor='prepare-avr-image.mjs']","Read the complete donor builder and README. Adapted actual Intel HEX/checksum parsing, AVR jump decoding/encoding, wrapped reset RJMP, ELF __bad_interrupt unused-vector proof, metadata-selected application trampoline, erased-gap fill, full-flash binary/HEX round trip and exact source hash validation into the canonical AVR build. No chip, fuse, EEPROM or UART operation is performed by packaging. | Found and corrected Pakar stock merged image reset vector bypassing its included vector Urboot. Preserve stock MiniCore UART0 autobaud, reset-register r2, EEPROM and chip-erase features with a pinned 384-byte image; never silently substitute the donor custom 512-byte backend.","u8.0.1 custom 512-byte backend, progress hook and TM1637 D13/PB5 CLK, D11/PB3 DIO implementation [pending] | Stock source bootstrap/download, destructive profile-local object recreation and optional feature-size matrix [replaced]","u8.0.1 custom 512-byte backend, progress hook and TM1637 D13/PB5 CLK, D11/PB3 DIO implementation: This board uses A5 CLK/A4 DIO and the stock 384-byte application ceiling. Do not deploy a wrong-pin backend or silently shrink available application space. Adapt the backend/pin profile and revalidate flash budget before any optional custom bootloader installation. | Stock source bootstrap/download, destructive profile-local object recreation and optional feature-size matrix: Use the installed MiniCore stock artifact with exact known HEX hash and the actual existing AVR compiler/ELF. Rebuilding unrelated bootloader variants, deleting object directories and downloading another core would add writes and does not fix the selected boot chain.","tests/avr_boot_image_test.mjs:14 [UTF8-LF sha256=6cae18f7420e6309045f6b25b741373698f4d306dfa6c3f8c8b126425f9e712d; anchor=assert.equal(decodeJump(result.merged,0),0x7e80)] | tests/avr_boot_image_test.mjs:20 [UTF8-LF sha256=6cae18f7420e6309045f6b25b741373698f4d306dfa6c3f8c8b126425f9e712d; anchor='Application input is never patched in place']","","Physical ISP signature/fuse/flash/EEPROM backup and byte verification; correct the measured clock/BOD profile before deployment; prove reset enters Urboot and returns to the application, then real hardware UART round-trip. | Optional custom progress backend adaptation for A4/A5 with explicit profile/size and physical display acceptance.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Bootloader/Urboot-Custom/README.md","b0111ae0c80dc34149ea1044de7dd5488920301b","2ec873e7f23b56a6997a0c83de1e258ae2ce9b75cf1eb7cf08b40da5aaa68090","avr-boot-chain | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","tools/prepare-avr-image.mjs:65 [UTF8-LF sha256=0d4e2a5a87967031393a6079e07938c7612e6fbfcb0d38c9a2a3ae419e86d525; anchor=export function mergeUrboot(] | tools/build-firmware.ps1:314 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor='prepare-avr-image.mjs']","Read the complete donor builder and README. Adapted actual Intel HEX/checksum parsing, AVR jump decoding/encoding, wrapped reset RJMP, ELF __bad_interrupt unused-vector proof, metadata-selected application trampoline, erased-gap fill, full-flash binary/HEX round trip and exact source hash validation into the canonical AVR build. No chip, fuse, EEPROM or UART operation is performed by packaging. | Found and corrected Pakar stock merged image reset vector bypassing its included vector Urboot. Preserve stock MiniCore UART0 autobaud, reset-register r2, EEPROM and chip-erase features with a pinned 384-byte image; never silently substitute the donor custom 512-byte backend.","u8.0.1 custom 512-byte backend, progress hook and TM1637 D13/PB5 CLK, D11/PB3 DIO implementation [pending] | Stock source bootstrap/download, destructive profile-local object recreation and optional feature-size matrix [replaced]","u8.0.1 custom 512-byte backend, progress hook and TM1637 D13/PB5 CLK, D11/PB3 DIO implementation: This board uses A5 CLK/A4 DIO and the stock 384-byte application ceiling. Do not deploy a wrong-pin backend or silently shrink available application space. Adapt the backend/pin profile and revalidate flash budget before any optional custom bootloader installation. | Stock source bootstrap/download, destructive profile-local object recreation and optional feature-size matrix: Use the installed MiniCore stock artifact with exact known HEX hash and the actual existing AVR compiler/ELF. Rebuilding unrelated bootloader variants, deleting object directories and downloading another core would add writes and does not fix the selected boot chain.","tests/avr_boot_image_test.mjs:14 [UTF8-LF sha256=6cae18f7420e6309045f6b25b741373698f4d306dfa6c3f8c8b126425f9e712d; anchor=assert.equal(decodeJump(result.merged,0),0x7e80)] | tests/avr_boot_image_test.mjs:20 [UTF8-LF sha256=6cae18f7420e6309045f6b25b741373698f4d306dfa6c3f8c8b126425f9e712d; anchor='Application input is never patched in place']","","Physical ISP signature/fuse/flash/EEPROM backup and byte verification; correct the measured clock/BOD profile before deployment; prove reset enters Urboot and returns to the application, then real hardware UART round-trip. | Optional custom progress backend adaptation for A4/A5 with explicit profile/size and physical display acceptance.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Bootloader/Urboot-Custom/source-manifest.json","b0111ae0c80dc34149ea1044de7dd5488920301b","1d8b4b7f4fd812911d412a2d2cf8e065b818d58279c9f0e58eb6d1529dc95547","firmware-hardware | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Build/build.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","08976de831f314fd9e564aa17fde739d3c6654b13b08c8f2c5d057fe7fdf9cf5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Build/build.test.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","9a115ca72aac2d3c2ac27c5e0790fd6b50f38eaafeb09497e3da4622e6446282","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" @@ -466,7 +466,7 @@ "PCController","Tools/Build/env.d.mts","b0111ae0c80dc34149ea1044de7dd5488920301b","fa6ac33f87483801ee34cecba0a633f7ac3d8d32abdc202a5e436837f176de92","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Build/env.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","a774f8ec42c88b6194fce18bd95387e0f07f45ba50004821a24e92df6447e570","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Build/env.test.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","7819ca2ca0a223d0ccf4a9883a58b21eda8c7e7fa99462817e00302fa5c7ad8c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Build/generate-protocol-contract.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","e065ecb653e72a0c7b7c71d315725c7d08eb42062629c5fcc7151199ab10b424","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Build/generate-protocol-contract.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","e065ecb653e72a0c7b7c71d315725c7d08eb42062629c5fcc7151199ab10b424","transport-convergence | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6 | https://github.com/atomicdeploy/PakarController/issues/41","parity-gap","complete","interfaces/controller-wire/registry.mjs:280 [UTF8-LF sha256=4c9b408145ce8db277fd312262b77106129c931398f50b66ff18cea14f9d7694; anchor=export function validatePublishedBindings] | interfaces/controller-wire/consumer.mjs:50 [UTF8-LF sha256=51ca4aaa9cb8f1ba74cabc001be34c8ec82a90d14a27e6b4ed793d72c7660484; anchor=Canonical opcode ownership] | libraries/BoardCore/src/ProtocolOpcodes.h:18 [UTF8-LF sha256=87f4c683f16a162a95e503998b351f9505bd35a6f6b5130337a1d65a150adcf9; anchor=kAudioCue = 0x11] | desktop/src/protocol_opcodes.rs:3 [UTF8-LF sha256=d81b3e3f6208b10572ed7af3db41d2df53e8865a86401f3044554ecc6a95f803; anchor=pub mod pakar] | mobile/lib/protocol_opcodes.dart:2 [UTF8-LF sha256=5a16fb520522d029ddf9fdc04653106b3f7f94cca6f8181bd32545e4a44ab8ff; anchor=class PakarOpcode] | tools/ProtocolOpcodes.ps1:3 [UTF8-LF sha256=b7e58c80118cf4bc088509e36bc55031fde82c94a125a2817feabb41013d9d16; anchor=enum PakarOpcode]","Read the complete actual donor generator, validation, native C++/Go renderers and negative tests. Its portable validation/rendering core is extracted, enhanced with Pakar namespace allocations, pinned to canonical owner3b8fabe6 and reused byte-for-byte. Original native wire assignments/source API remain; Go names and consumer views are generated, not handwritten. | Both independent published fixtures and actual protected-base CI comparisons prevent old assignments being renumbered/removed even if regenerated snapshots change. Consumer pins verify exact source bytes; optional upstream verification never executes downloaded source. PowerShell provisioning and the native response matcher now consume canonical opcode references too.","Existing native payload semantics and complete transport/service parity [pending]","Existing native payload semantics and complete transport/service parity: Shared allocations and namespace admission do not merge incompatible HELLO/settings/event payloads or certify hardware; retain the explicit tunnel and issues41/702.","tests/opcode_registry_test.mjs:20 [UTF8-LF sha256=14009108212aa23e2c43eb96b6103affdfe4a4c23aa073eb626cdf31706fd8da; anchor=one generated owner] | tests/protocol_test.cpp:15 [UTF8-LF sha256=b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04; anchor=Every other namespace] | mobile/test/usb_transport_test.dart:201 [UTF8-LF sha256=5be41161b7d31bd348b31c7d0f3c0cc836f632cf0ba5a1c3f5ecebdfcf0a3410; anchor=opcode namespaces never fall back]","","Complete carrier/service parity and real deployed interoperability, timing, stack/RAM and physical acceptance separately.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Build/go-test-output.test.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","8ca624e22fbcfe3a94fc627be42258640faa3e57d437cf8d679fbb1d2d184cfd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Build/go-tests-selection.test.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","a85f384152b908ad8ef238d632beca15aadae2ce64fa1fc7b22c68c3fe73f2ba","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Build/go-tests.mjs","b0111ae0c80dc34149ea1044de7dd5488920301b","7005bc090b3833f0510570b024d0bf9bfc4d23bb9d6ba49bfecc9fde2ba6f1a1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" @@ -630,7 +630,7 @@ "PCController","Tools/Controller/internal/appconfig/board_profiles_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","634c5154e353fcd30638da63d8c05d269a5737550042383f50008a47d80f28d9","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/appconfig/board_profiles.go","b0111ae0c80dc34149ea1044de7dd5488920301b","dfd04fd53d92e90af01cd3d5d63a28bd3f80fd57fe7880ccc36e5c590d51f8b0","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/appconfig/buzzer_mirror_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","f6bce535c405abdc9b3fc2b2ddac994c2bb1ee5ecd792ec0672e97eeb01b01f7","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/appconfig/buzzer_runtime.go","b0111ae0c80dc34149ea1044de7dd5488920301b","cea9f315404028716f708a2a7ffe3fc71950a3ccb2996673708d977517af0e3f","board-silent | preferences","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(]","Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes.","Full board/host/both/none mirroring routes, runtime overrides, OS backend/executable resolution and watched app configuration [pending]","Full board/host/both/none mirroring routes, runtime overrides, OS backend/executable resolution and watched app configuration: Reuse the known/unknown/pending/verified board-setting ownership, not an unimplemented host audio backend. Actual host routing parity needs independent implementation and acoustic acceptance; this change must not mute Windows notifications by accident.","tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of []","","Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/appconfig/buzzer_runtime.go","b0111ae0c80dc34149ea1044de7dd5488920301b","cea9f315404028716f708a2a7ffe3fc71950a3ccb2996673708d977517af0e3f","board-silent | preferences","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(]","Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes.","Full board/host/both/none mirroring routes, runtime overrides, OS backend/executable resolution and watched app configuration [pending]","Full board/host/both/none mirroring routes, runtime overrides, OS backend/executable resolution and watched app configuration: Reuse the known/unknown/pending/verified board-setting ownership, not an unimplemented host audio backend. Actual host routing parity needs independent implementation and acoustic acceptance; this change must not mute Windows notifications by accident.","tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of []","","Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/appconfig/channel_folders_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","08bac3f35226c1f691908f3432131d916f6fb427a52628e2de714225a631d861","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/appconfig/channel_folders.go","b0111ae0c80dc34149ea1044de7dd5488920301b","95a0bbc6b2850108a1f54b609d0f01f98e8b34221c4fdc99820392951e435c06","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/appconfig/codec.go","b0111ae0c80dc34149ea1044de7dd5488920301b","4751e80929f2e2c657aead43c148d3c9d16463800f766ce7b7d946014c92b8b9","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" @@ -853,18 +853,18 @@ "PCController","Tools/Controller/internal/hostbridge/buzzer_route_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","db5ff212d12a4c3ea7aa9f2a096791b08ac612cfce265273232259b5ec0f90ae","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/buzzer_route.go","b0111ae0c80dc34149ea1044de7dd5488920301b","2623f3f2436c91a6683ed65a4edcaaece4f10890d8083e495b2846865f96cf5f","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/discovery_metadata_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","cb26b3fba521fe61d2b7bce2b1fa6a019dc6d04d72bb82df541e4ef63c1bbcd3","bridge-repeater | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/bridge.rs:110 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=pub struct Runtime]","Read complete tests. Port board-vs-host identity and available-route capability assertions, including suppression of unsupported OTA/ISP/streaming on the relay.","All donor rich host metadata, peer caps and discovery refresh scheduling assertions [pending]","All donor rich host metadata, peer caps and discovery refresh scheduling assertions: Those metadata producers and UpdateText lifecycle are not fully implemented; fixture identity and real socket tests do not close donor parity or real LAN acceptance.","desktop/src/bridge.rs:2037 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_status_keeps_board_identity_and_only_available_route_capabilities] | mobile/test/bridge_peer_test.dart:86 [UTF8-LF sha256=04688eaf3a76042bd60b380b7d631657828e922e9c740c55626563890800e498; anchor=MNDP application endpoints use vendor API port]","","Issue #2: All donor rich host metadata, peer caps and discovery refresh scheduling assertions. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/hostbridge/discovery_metadata.go","b0111ae0c80dc34149ea1044de7dd5488920301b","524f6e31069355fb8f7968e507775d4a567964aee41001722a325cc8c06e99a0","peer-identity | bridge-repeater | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/bridge.rs:110 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=pub struct Runtime] | desktop/src/platform/lan_discovery.rs:27 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=pub struct Advertiser] | libraries/BoardCore/src/PeerCompatibility.h:27 [UTF8-LF sha256=530d8de10f3715db8cb3404dc511634152bcea12c14d9e6ebb578645307fd26b; anchor=namespace BoardCore { namespace PeerCompatibility {] | firmware/esp/src/ClientTelemetry.h:18 [UTF8-LF sha256=71f78fe48b0208aabe6505d9cf5986484ee8d5e77c1fea8a7b2737afecfb112a; anchor=class ClientTelemetry {] | desktop/src/peer_identity.rs:394 [UTF8-LF sha256=18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979; anchor=pub fn sanitize_report(] | mobile/lib/peer_identity.dart:28 [UTF8-LF sha256=dd3b1cabc0af9ed7e706aaebcb898313cf0dc85a91bb20a61278149b33d43441; anchor=class PeerIdentity]","Read entire source. Preserve instance.id vs physical board identity and push-fed nonsecret current-owner metadata: bridge path/hostname are additive, board_id/boot_id/hostname remain downstream-owned; current status is fed without independent serial acquisition. | Adapt the donor's observed-vs-declared metadata separation and bounded nonsecret push reports across the board, native and mobile peer registries. Shared release-range admission is a new user requirement, not copied donor version negotiation; no exact-build adapter or numbered route is introduced.","Complete discoveryMetadata rich TXT, five-second coalesced refresh and all HostIdentity fields [pending]","Complete discoveryMetadata rich TXT, five-second coalesced refresh and all HostIdentity fields: Fixed nonsecret listener TXT suffices for compatible endpoint discovery, while full board state is served from the selected owner. Rich changing TXT and cross-product public enrichment remain useful pending imports; no board secret is advertised.","desktop/src/bridge.rs:2179 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_network_repeater_confirms_upstream_usb_readback_and_preserves_both_hops] | desktop/src/bridge.rs:2037 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_status_keeps_board_identity_and_only_available_route_capabilities] | tests/peer_compatibility_test.cpp:29 [UTF8-LF sha256=1a99a731b1c980523c52bbdfa21d0d4bdd034d9c80e7dcfd1a91d92765953df3; anchor=assert(numericAppAllowed(0,2,8));] | tests/client_telemetry_test.cpp:48 [UTF8-LF sha256=bae7479cdbedc4896b86299bd1cc7c046e29f3ff9dd1b1a2a7c33f5b50d523d1; anchor=assert(detail[0][""observed_ip""].isNull()] | desktop/src/peer_identity.rs:630 [UTF8-LF sha256=18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979; anchor=fn reports_drop_secrets_and_never_replace_observed_ip()]","","Issue #2: Complete discoveryMetadata rich TXT, five-second coalesced refresh and all HostIdentity fields. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open. | Issue #2: Actual default-on/disabled-build peer admission and multicast discovery between installed releases remain live acceptance. Direct clients are reported to the MCU; a bridge keeps downstream reports locally. Forwarding those indirect reports through the exclusive USB owner requires a bounded correlated report queue; do not relabel indirect reported IPs as MCU-observed.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/hostbridge/discovery_metadata.go","b0111ae0c80dc34149ea1044de7dd5488920301b","524f6e31069355fb8f7968e507775d4a567964aee41001722a325cc8c06e99a0","peer-identity | bridge-repeater | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/bridge.rs:110 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=pub struct Runtime] | desktop/src/platform/lan_discovery.rs:27 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=pub struct Advertiser] | libraries/BoardCore/src/PeerCompatibility.h:27 [UTF8-LF sha256=530d8de10f3715db8cb3404dc511634152bcea12c14d9e6ebb578645307fd26b; anchor=namespace BoardCore { namespace PeerCompatibility {] | firmware/esp/src/ClientTelemetry.h:18 [UTF8-LF sha256=71f78fe48b0208aabe6505d9cf5986484ee8d5e77c1fea8a7b2737afecfb112a; anchor=class ClientTelemetry {] | desktop/src/peer_identity.rs:395 [UTF8-LF sha256=bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2; anchor=pub fn sanitize_report(] | mobile/lib/peer_identity.dart:28 [UTF8-LF sha256=dd3b1cabc0af9ed7e706aaebcb898313cf0dc85a91bb20a61278149b33d43441; anchor=class PeerIdentity]","Read entire source. Preserve instance.id vs physical board identity and push-fed nonsecret current-owner metadata: bridge path/hostname are additive, board_id/boot_id/hostname remain downstream-owned; current status is fed without independent serial acquisition. | Adapt the donor's observed-vs-declared metadata separation and bounded nonsecret push reports across the board, native and mobile peer registries. Shared release-range admission is a new user requirement, not copied donor version negotiation; no exact-build adapter or numbered route is introduced.","Complete discoveryMetadata rich TXT, five-second coalesced refresh and all HostIdentity fields [pending]","Complete discoveryMetadata rich TXT, five-second coalesced refresh and all HostIdentity fields: Fixed nonsecret listener TXT suffices for compatible endpoint discovery, while full board state is served from the selected owner. Rich changing TXT and cross-product public enrichment remain useful pending imports; no board secret is advertised.","desktop/src/bridge.rs:2179 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_network_repeater_confirms_upstream_usb_readback_and_preserves_both_hops] | desktop/src/bridge.rs:2037 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_status_keeps_board_identity_and_only_available_route_capabilities] | tests/peer_compatibility_test.cpp:29 [UTF8-LF sha256=1a99a731b1c980523c52bbdfa21d0d4bdd034d9c80e7dcfd1a91d92765953df3; anchor=assert(numericAppAllowed(0,2,8));] | tests/client_telemetry_test.cpp:48 [UTF8-LF sha256=bae7479cdbedc4896b86299bd1cc7c046e29f3ff9dd1b1a2a7c33f5b50d523d1; anchor=assert(detail[0][""observed_ip""].isNull()] | desktop/src/peer_identity.rs:631 [UTF8-LF sha256=bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2; anchor=fn reports_drop_secrets_and_never_replace_observed_ip()]","","Issue #2: Complete discoveryMetadata rich TXT, five-second coalesced refresh and all HostIdentity fields. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open. | Issue #2: Actual default-on/disabled-build peer admission and multicast discovery between installed releases remain live acceptance. Direct clients are reported to the MCU; a bridge keeps downstream reports locally. Forwarding those indirect reports through the exclusive USB owner requires a bounded correlated report queue; do not relabel indirect reported IPs as MCU-observed.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/event_snapshot_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","a12eaacf154a3abb2d61309a1c0ef7e04492fa8bea08571c8f336cea77826f46","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/keyboard_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","a92a5f9f72fc77f4a08df6f161e967b35c36aba642c4200f4ee1f8d7f7fb6efd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/keyboard.go","b0111ae0c80dc34149ea1044de7dd5488920301b","b903b64d83fb8ef2118144175fc03662f8ac0d6ab5912a5d3ed4066e0276bd78","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/lifecycle_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","e017aa817a7f89cb872e1b7bb1ad9c6d56b174d852eb339b6cf8b5ebfab07910","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/hostbridge/lifecycle.go","b0111ae0c80dc34149ea1044de7dd5488920301b","30454374bc87aeed2d4a536f27a24aa8c382920e9047b40d68a42faef47990c4","bridge-repeater","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/bridge.rs:110 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=pub struct Runtime] | desktop/src/main.rs:2455 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=SerialCommand::Bridge(target]","Read through EOF. Preserve primary selected owner and explicit Disconnect/revocation; sharing never opens another serial handle or acquires a board from discovery. Bridge listener starts only on opt-in and closes through owned stop lifetime.","Complete host suspend/resume lifecycleInstruction service/Windows power-event integration [pending]","Complete host suspend/resume lifecycleInstruction service/Windows power-event integration: Current bridge is scoped to the existing app runtime/connection Gate, not a new always-running service. Listener suspend/resume behavior and platform power callbacks require additional integration and actual host acceptance.","desktop/src/bridge.rs:2179 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_network_repeater_confirms_upstream_usb_readback_and_preserves_both_hops]","","Issue #2: Complete host suspend/resume lifecycleInstruction service/Windows power-event integration. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/hostbridge/lifecycle.go","b0111ae0c80dc34149ea1044de7dd5488920301b","30454374bc87aeed2d4a536f27a24aa8c382920e9047b40d68a42faef47990c4","bridge-repeater","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/bridge.rs:110 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=pub struct Runtime] | desktop/src/main.rs:2459 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=SerialCommand::Bridge(target]","Read through EOF. Preserve primary selected owner and explicit Disconnect/revocation; sharing never opens another serial handle or acquires a board from discovery. Bridge listener starts only on opt-in and closes through owned stop lifetime.","Complete host suspend/resume lifecycleInstruction service/Windows power-event integration [pending]","Complete host suspend/resume lifecycleInstruction service/Windows power-event integration: Current bridge is scoped to the existing app runtime/connection Gate, not a new always-running service. Listener suspend/resume behavior and platform power callbacks require additional integration and actual host acceptance.","desktop/src/bridge.rs:2179 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_network_repeater_confirms_upstream_usb_readback_and_preserves_both_hops]","","Issue #2: Complete host suspend/resume lifecycleInstruction service/Windows power-event integration. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/manager_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","608aad1baf6cbc1e42977bb6264aa20fc854adbb5e32536c4c638caf4e485afa","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/manager.go","b0111ae0c80dc34149ea1044de7dd5488920301b","b34517a1c30084d2362e951638e0039d78abd45a5128b62342bb717b6c44b1b2","firmware-delivery | bridge-repeater","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","desktop/src/firmware_feed.rs:228 [UTF8-LF sha256=839700ab270d23de6e65beca90071e7c0fb3ad9f4da0cd4d06864e0fb96cde10; anchor=pub struct Wire] | mobile/lib/firmware_feed.dart:106 [UTF8-LF sha256=fb8f8c35c609def5a1da0997a16175baefcc0f568439df0aea1a6c00b801ab55; anchor=class FirmwareFeedWire]","Adapt the fully read actual outbound WebSocket and genuine Socket.IO client paths: explicit protocol, Bearer header, Engine.IO open, namespace connect, ping/pong, exact event tuple, bounded sessions and no command replay. Native and Android accept only fresh session/board/boot-bound SHA-pinned offers from the configured download origin, not generic remote RPC.","Remaining donor mechanisms outside this delivery slice [pending]","Remaining donor mechanisms outside this delivery slice: Generic reciprocal JSON-RPC/Socket.IO command routing, board mirroring, hotkeys/webhooks, durable generic command queues and the rest of this host integration manager remain pending. Foreground firmware automation now supports bounded read-only feed reconnect with fresh sessions and persisted consumed digests; that is not generic command replay or full host-manager parity.","desktop/src/firmware_feed.rs:735 [UTF8-LF sha256=839700ab270d23de6e65beca90071e7c0fb3ad9f4da0cd4d06864e0fb96cde10; anchor=fn firmware_feed_actual_websocket_and_socketio_sessions_deliver_once] | mobile/test/firmware_delivery_test.dart:272 [UTF8-LF sha256=2a5a1ff4950f3806d522d2afe76050884aff03a7f3f0556abc329f25a0042976; anchor=Actual WS/Socket.IO listener deduplicates offers]","","Issue #2/#7: verify the owner's actual authenticated WSS/Socket.IO endpoint and emitted firmware event. Loopback protocol fixtures are not Internet/TLS server interoperability or Android background uptime.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/notification_queue_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","a6e03107738760743d585323a172231aada59fde7e85079ec77a5f16aaceb586","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/notification_queue.go","b0111ae0c80dc34149ea1044de7dd5488920301b","9f0dffb3baa1d3191057e65065154d54f5d6d217296658cceaadac228d0a45fe","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/peer_response_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","b77fb20899b6e43e3ea8bebf0b49e0ab92849eb45f7ba6fe8803508c76c03c28","duplex-control | bridge-repeater","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/bridge.rs:110 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=pub struct Runtime]","Read through EOF. Adapt malformed/foreign identity rejection, same-ID receipt retrieval and command mismatch tests to the existing Pakar packet; actual HTTP and WS tests share the same observed board.","Full donor JSON-RPC error/result ambiguity and pending peer-session tests [pending]","Full donor JSON-RPC error/result ambiguity and pending peer-session tests: The donor IPC envelope is not exposed by this selected-owner bridge; full PCController manager interoperability and its tests are still useful pending work.","desktop/src/bridge.rs:2179 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_network_repeater_confirms_upstream_usb_readback_and_preserves_both_hops] | desktop/src/bridge.rs:2002 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_http_recovery_uses_existing_packet_form_contract]","","Issue #2: Full donor JSON-RPC error/result ambiguity and pending peer-session tests. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/hostbridge/peer_response.go","b0111ae0c80dc34149ea1044de7dd5488920301b","7e711f22ce5a8e0c01f7a935e0f0091ed1d305e04a7563aae57a772059f391ef","duplex-control | bridge-repeater","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/bridge.rs:110 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=pub struct Runtime] | desktop/src/usb_table.rs:590 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=pub struct Intent] | firmware/esp/src/PeerRelay.h:19 [UTF8-LF sha256=b59e020b680b3d726e8bed915ecf73ba8ae79d7fcaf6ce2ca435429c1582b0db; anchor=class PeerRelay] | firmware/esp/src/PeerRouteStore.h:9 [UTF8-LF sha256=93e58147fbf62072c7a6ce22abe39d0dd2cf3840cd41e70bcdea8c5693889756; anchor=class PeerRouteStore] | firmware/esp/src/PeerNetworkCommission.h:21 [UTF8-LF sha256=3d8ec120b978a6e5c2d523a2b7dd229c8cc3f0c5e8be2d7597405f2fc30f7115; anchor=class PeerNetworkCommission]","Read complete source. Adapt exact request-ID correlation, ambiguous/malformed result as uncertain, consume-before-dispatch and no replay. New SerialCommand::Bridge queues through the sole existing USB owner and returns actual same-sequence ACK plus readback, not queue acceptance. | Reread source and peer_response_test.go for ESP HTTP peer relay: validate destination board/boot, exact command-result request ID and boolean acceptance; malformed/lost responses remain outcome-uncertain. Explicit target, one hop, eight bounded receipt reservations, no redirects, no automatic command retry. Worker keeps outgoing I/O out of game loop. This is not a completed mesh or physical delivery claim. | 2026-10-28 reread complete peer_response.go and its tests. Retain strict receipt identity and uncertain/no-replay outcomes while replacing per-job task allocation and full raw history with one reusable worker and eight SHA256 fingerprints. Filter downstream JSON envelope to bound heap; read-only connection recovery never replays a POST. Explicit saved-route stage/readback/rename is loop-owned, independently of worker observations. Current and historical internal-memory metrics are distinct; no claimed cause for the historical 216-byte minimum.","Generic PCController peerRPCSession JSON-RPC/WebSocket/Socket.IO response envelope [pending]","Generic PCController peerRPCSession JSON-RPC/WebSocket/Socket.IO response envelope: Pakar uses its existing living /api/command and board/boot/deadline contract, not an unimplemented promise of generic PCController RPC compatibility. Full manager.go route/authority/transport adapters remain pending review.","desktop/src/bridge.rs:2179 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_network_repeater_confirms_upstream_usb_readback_and_preserves_both_hops] | desktop/src/usb_table.rs:842 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback] | tests/peer_relay_test.cpp:140 [UTF8-LF sha256=30aa409380278617eacba57eba16589bb4e7b4671479e9c44087817882494ba2; anchor=int main()] | tests/peer_network_commission_test.cpp:34 [UTF8-LF sha256=ec7bc2ebc0037b133588e44cd8fdd23afb7fb587243488272007cd2222740f0d; anchor=Acceptance alone never switches Wi-Fi.]","","Issue #2: Generic PCController peerRPCSession JSON-RPC/WebSocket/Socket.IO response envelope. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open. | ESP relay has explicit persistent verified route metadata and an observed directory in source; automatic discovery, continuous peer events and selectable relayed Flutter/Rust/Web transports remain open, as do BLE central, USB host, ESP-NOW and resumable hash-verified file/firmware delivery. One hop only; LAN identity pinning is not cryptographic authentication. Destination authentication is never bypassed or delegated implicitly. Hardware deployment and bidirectional latency/heap acceptance remain open.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/hostbridge/peer_response.go","b0111ae0c80dc34149ea1044de7dd5488920301b","7e711f22ce5a8e0c01f7a935e0f0091ed1d305e04a7563aae57a772059f391ef","duplex-control | bridge-repeater","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/bridge.rs:110 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=pub struct Runtime] | desktop/src/usb_table.rs:591 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=pub struct Intent] | firmware/esp/src/PeerRelay.h:19 [UTF8-LF sha256=b59e020b680b3d726e8bed915ecf73ba8ae79d7fcaf6ce2ca435429c1582b0db; anchor=class PeerRelay] | firmware/esp/src/PeerRouteStore.h:9 [UTF8-LF sha256=93e58147fbf62072c7a6ce22abe39d0dd2cf3840cd41e70bcdea8c5693889756; anchor=class PeerRouteStore] | firmware/esp/src/PeerNetworkCommission.h:21 [UTF8-LF sha256=3d8ec120b978a6e5c2d523a2b7dd229c8cc3f0c5e8be2d7597405f2fc30f7115; anchor=class PeerNetworkCommission]","Read complete source. Adapt exact request-ID correlation, ambiguous/malformed result as uncertain, consume-before-dispatch and no replay. New SerialCommand::Bridge queues through the sole existing USB owner and returns actual same-sequence ACK plus readback, not queue acceptance. | Reread source and peer_response_test.go for ESP HTTP peer relay: validate destination board/boot, exact command-result request ID and boolean acceptance; malformed/lost responses remain outcome-uncertain. Explicit target, one hop, eight bounded receipt reservations, no redirects, no automatic command retry. Worker keeps outgoing I/O out of game loop. This is not a completed mesh or physical delivery claim. | 2026-10-28 reread complete peer_response.go and its tests. Retain strict receipt identity and uncertain/no-replay outcomes while replacing per-job task allocation and full raw history with one reusable worker and eight SHA256 fingerprints. Filter downstream JSON envelope to bound heap; read-only connection recovery never replays a POST. Explicit saved-route stage/readback/rename is loop-owned, independently of worker observations. Current and historical internal-memory metrics are distinct; no claimed cause for the historical 216-byte minimum.","Generic PCController peerRPCSession JSON-RPC/WebSocket/Socket.IO response envelope [pending]","Generic PCController peerRPCSession JSON-RPC/WebSocket/Socket.IO response envelope: Pakar uses its existing living /api/command and board/boot/deadline contract, not an unimplemented promise of generic PCController RPC compatibility. Full manager.go route/authority/transport adapters remain pending review.","desktop/src/bridge.rs:2179 [UTF8-LF sha256=a05278f91cf4fe82a4043e4c746422f265b07d070c29c892677211db8af2b2d5; anchor=fn bridge_network_repeater_confirms_upstream_usb_readback_and_preserves_both_hops] | desktop/src/usb_table.rs:843 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback] | tests/peer_relay_test.cpp:140 [UTF8-LF sha256=30aa409380278617eacba57eba16589bb4e7b4671479e9c44087817882494ba2; anchor=int main()] | tests/peer_network_commission_test.cpp:34 [UTF8-LF sha256=ec7bc2ebc0037b133588e44cd8fdd23afb7fb587243488272007cd2222740f0d; anchor=Acceptance alone never switches Wi-Fi.]","","Issue #2: Generic PCController peerRPCSession JSON-RPC/WebSocket/Socket.IO response envelope. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open. | ESP relay has explicit persistent verified route metadata and an observed directory in source; automatic discovery, continuous peer events and selectable relayed Flutter/Rust/Web transports remain open, as do BLE central, USB host, ESP-NOW and resumable hash-verified file/firmware delivery. One hop only; LAN identity pinning is not cryptographic authentication. Destination authentication is never bypassed or delegated implicitly. Hardware deployment and bidirectional latency/heap acceptance remain open.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/peer_state_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","9c3b595fa2665834a76e75ef4fe4fc1d41fa92293563679906f8cd061799f780","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/segment_scroll_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","b32cf1c5faba081d2a72153eb640b7cfedf1cc896930fce5fa471432869bf4c5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/hostbridge/segment_scroll.go","b0111ae0c80dc34149ea1044de7dd5488920301b","7b9231b77fcc7a750d57b207c4d24dcbfca9bf4603f3dbc463847c3561d75810","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" @@ -1008,7 +1008,7 @@ "PCController","Tools/Controller/internal/ipcjson/raw_transport_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","2020cd0746f4385b8851802f1fdd7fe710ca2b4185b50d870917c0c2bfe39f3e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/ipcjson/release_http_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","2f02d1d715d230d66efb379a895730421008a621f2c0607f6a22eb5c4d27fd31","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/ipcjson/release_http.go","b0111ae0c80dc34149ea1044de7dd5488920301b","53290a3cfc4ef579b55005c1f081485a352a6595c665d92ff967c8e8cd42535b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/ipcjson/rest_routes_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","729b980122ce5e3b3024544c9229d52ce03647bf195d62958fa388304d44fbe8","api-contract | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","libraries/BoardCore/src/ApiPolicy.h:8 [UTF8-LF sha256=ee7dcf1c76d2d1703ae2d8d11ab0feff19650f08e8cfddfa03faac17ba6a163c; anchor=inline bool numberedRoute] | firmware/esp/src/WebAccess.h:36 [UTF8-LF sha256=774b524f4cd81c003e4139d0bb6cf3353d987674bbfb49d7a1b989ee2a232294; anchor=ApiPolicy::numberedRoute]","Actual TestVersionedCoreAPIRoutesAreRejected test cases adapted into the C++ helper exercised by ESP async middleware; generalized to all numbered API roots and pre-auth rejection.","TestCanonicalRESTRouteInventory, TestRESTAppActionCannotInjectCoordinatorNavigationMetadata, typed app launch/action outcome lifecycle [pending]","TestCanonicalRESTRouteInventory, TestRESTAppActionCannotInjectCoordinatorNavigationMetadata, typed app launch/action outcome lifecycle: These exercise the full PCController Go host coordinator, not the ESP handlers. Applicable generic typed action/outcome/auth ownership and full real multiplexer route inventory still need explicit Pakar contracts and tests. The narrower source/wire tests here do not claim end-to-end async server acceptance.","tests/protocol_test.cpp:85 [UTF8-LF sha256=4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144; anchor=Actual donor TestVersionedCoreAPIRoutesAreRejected cases] | tests/living_contract_test.mjs:26 [UTF8-LF sha256=67389b8a5ef0a051959d1938d52abb6b48edeb194e8a73f51235d376c8121d59; anchor=pre-auth 404 wiring]","","Port applicable real top-level route inventory, typed app outcomes and coordinator-owned metadata spoof tests after mapping the actual Pakar host coordinator.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/ipcjson/rest_routes_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","729b980122ce5e3b3024544c9229d52ce03647bf195d62958fa388304d44fbe8","api-contract | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","libraries/BoardCore/src/ApiPolicy.h:8 [UTF8-LF sha256=ee7dcf1c76d2d1703ae2d8d11ab0feff19650f08e8cfddfa03faac17ba6a163c; anchor=inline bool numberedRoute] | firmware/esp/src/WebAccess.h:36 [UTF8-LF sha256=774b524f4cd81c003e4139d0bb6cf3353d987674bbfb49d7a1b989ee2a232294; anchor=ApiPolicy::numberedRoute]","Actual TestVersionedCoreAPIRoutesAreRejected test cases adapted into the C++ helper exercised by ESP async middleware; generalized to all numbered API roots and pre-auth rejection.","TestCanonicalRESTRouteInventory, TestRESTAppActionCannotInjectCoordinatorNavigationMetadata, typed app launch/action outcome lifecycle [pending]","TestCanonicalRESTRouteInventory, TestRESTAppActionCannotInjectCoordinatorNavigationMetadata, typed app launch/action outcome lifecycle: These exercise the full PCController Go host coordinator, not the ESP handlers. Applicable generic typed action/outcome/auth ownership and full real multiplexer route inventory still need explicit Pakar contracts and tests. The narrower source/wire tests here do not claim end-to-end async server acceptance.","tests/protocol_test.cpp:93 [UTF8-LF sha256=b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04; anchor=Actual donor TestVersionedCoreAPIRoutesAreRejected cases] | tests/living_contract_test.mjs:26 [UTF8-LF sha256=67389b8a5ef0a051959d1938d52abb6b48edeb194e8a73f51235d376c8121d59; anchor=pre-auth 404 wiring]","","Port applicable real top-level route inventory, typed app outcomes and coordinator-owned metadata spoof tests after mapping the actual Pakar host coordinator.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/ipcjson/rf_binding_collision_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","2ddcbd80ac5303060438092ca3c03e140ea59b1c371b7307b525bfd0fdfd0944","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/ipcjson/rf_bindings_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","635cd578c44e5c0a037ccb535f88b39000ac79cf0996d245b4d3509b34b0e72d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/ipcjson/rf_bindings.go","b0111ae0c80dc34149ea1044de7dd5488920301b","9e5b39a54e4ec0996e104809d22d498c6043680dd8318a272f7dcff94f725ddc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" @@ -1031,17 +1031,17 @@ "PCController","Tools/Controller/internal/lanresolver/resolver_linux_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","53982ba5104d9cf78ef43ff8280373b4703c74b12e050f896f530227f8931068","mobile-network | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/lanresolver/resolver_linux.go","b0111ae0c80dc34149ea1044de7dd5488920301b","e2d070699041caa182cee760389d096ea619168fefb22319c163ccf29f903b57","mobile-network | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/lanresolver/resolver_other.go","b0111ae0c80dc34149ea1044de7dd5488920301b","92b65281787b65a4e38ff46de6a7b40c876ae10aeb20604f827ddfa51a4c77f0","mobile-network | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/lanresolver/resolver_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","b03498f9df5a9f8e5bc3c94eabec71ab4fb412b53c1fb1729fe63a45ec1ba3b9","automatic-connection | connection-resilience | mobile-network | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","mobile/test/selection_batch_network_test.dart:19 [UTF8-LF sha256=41eb7d501bf707974913ef8d1813b0e18d841b85266c032778acd15848f09dc3; anchor=test(] | desktop/src/peer_http.rs:959 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn local_address_cache_accepts_only_verified_tcp_peer_not_advertised_ip]","Adapted actual cached-address reuse and changed-DHCP-address scenarios with injected lookups/dials. Added actual loopback HTTP Host identity, authentication/timeout retention, selection/batch/readback and melody fixtures. | Native fixtures exercise actual reqwest loopback TCP, cached subsequent resolution, original HTTP Host and explicit port, provenance rejection, finite cache/replacement and invalidation. They are not Windows mDNS, Android DNS or DHCP physical acceptance. | Current native discovery fixtures cover persisted route roundtrip, endpoint/board/scheme/port fencing and credential-free failed-hostname recovery. Flutter trusted-CA HTTPS/WSS fixtures exercise actual numeric TCP fallback with original logical certificate identity, wrong-board rejection and shared-route reuse without repeated DNS. Separate ControlShell widget fixtures cover startup, manual Disconnect and editor handoff holds; none contacts production.","Go net.TCPConn placeholders, netip addresses and go test runtime [replaced]","Go net.TCPConn placeholders, netip addresses and go test runtime: Tests exercise the Dart resolver used by this application and a real local HTTP listener; Go donor tests are not executed as Flutter evidence. Physical phone/Wi-Fi and audible melody acceptance remain separate.","mobile/test/lan_resolver_transport_test.dart:12 [UTF8-LF sha256=bf4a46ca2ce7a9639b66bd7c03f9ecd57065b58a2d7fb2cc5e8f6a0edc3f637e; anchor=void main()] | mobile/test/selection_batch_network_test.dart:19 [UTF8-LF sha256=41eb7d501bf707974913ef8d1813b0e18d841b85266c032778acd15848f09dc3; anchor=test(] | desktop/src/peer_http.rs:1110 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn local_address_cache_bounds_replaces_and_invalidates_without_ttl_or_authority] | mobile/test/network_route_recovery_test.dart:11 [UTF8-LF sha256=e353a06b0fab6f9dd84cc7ce24aee1a5e8517c6e179b3975826f6adaa52f951f; anchor=void main()] | mobile/test/configuration_event_transport_test.dart:9 [UTF8-LF sha256=4c48e1641b05832a0c0fd5945a9a63e080b8563515f00970f03bb7fcdee9dd08; anchor=void main()] | tests/peer_relay_test.cpp:140 [UTF8-LF sha256=30aa409380278617eacba57eba16589bb4e7b4671479e9c44087817882494ba2; anchor=int main()]","Adds session routing and identity-fenced durable recovery, trusted-CA TLS fixtures and no mutation replay.","Focused Flutter fixtures pass; actual phone/LAN, physical color and audible melody acceptance remain open. ESP relay/cache/route-store fixtures cover cached reuse with failed mDNS, changed DHCP address, saved-route re-verification, wrong identity/boot, private-address validation, command no-replay, memory/receipt limits, safe late DNS callbacks and interrupted filesystem publication. Actual bidirectional board latency and heap/long-soak acceptance are still pending.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/lanresolver/resolver.go","b0111ae0c80dc34149ea1044de7dd5488920301b","8dec2b65850f9bfecf71c510f9f29392cc09def0e9590568d61ae982707cb4d7","automatic-connection | connection-resilience | mobile-network | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","mobile/lib/lan_resolver.dart:8 [UTF8-LF sha256=0dd6bae6e31632f2b526796cf4a67b5b31af978bac11d00bc932f3aef5576e92; anchor=class LanResolver] | mobile/lib/api.dart:181 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=final LanResolver resolver;] | mobile/lib/discovery.dart:116 [UTF8-LF sha256=8cb3956f80a50c5be2c134829bc7d323a3f4c58fbbcf1ea5d5e1aaa10ac7fbba; anchor=class DiscoveryCatalog] | mobile/lib/devices_page.dart:73 [UTF8-LF sha256=73b22cde59bac6f882fd989e6494a09d3d19b010b0fc8e5ae69e55591eca44c0; anchor=catalog] | desktop/src/peer_http.rs:339 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=pub fn device_client_builder] | desktop/src/main.rs:818 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=peer_http::remember_address] | firmware/esp/src/PeerLanResolver.h:13 [UTF8-LF sha256=2413d89e26403aae1a9a528c60da09acf4ea5079067b8c1183e7e6c4d8f41546; anchor=class PeerLanResolver]","Actual complete donor resolver and tests read from canonical PCController; adapted successful-address caching, retaining URL hostname/HTTP Host/TLS SNI rather than replacing the public identity with an IP. | 2026-10-28 reread resolver.go and resolver_test.go through EOF for ESP-to-ESP recovery. Adapt its reconnect-sticky successful address to a four-entry board+hostname+boot-verified cache. .local explicitly uses SDK mdns_query_a with a 900ms budget; unicast uses TCPIP-owned asynchronous IPv4 DNS and object-owned late callbacks instead of unbounded getaddrinfo. Explicit saved-route hints are reverified after reboot. HTTP Host remains the configured hostname; no cache/discovery record grants authorization or causes command replay. | Flutter HTTP and WebSocket share one resolver. TCP connect failures may trigger bounded read-only relookup but retain the last successful address; actual DNS SocketException/empty answer invalidates it. HTTP/auth/timeout failures do not evict or trigger discovery/replay. Cached route data never grants board/boot ownership. | Actual complete resolver reread at unchanged source hash for measured ASUS .local latency. A separate bounded32-host native cache accepts only actual response TCP remote_addr after valid board/boot and requested-hostname checks, retains URL Host/SNI, never trusts advertised IP and never grants command ownership. Fresh no-idle-pool clients reuse verified routing. Only typed dial/resolution failures mark a retained hint for later relookup; HTTP/auth/body timeouts do not discard it. Successful verified TCP replacement clears the bounded lookup mark; no mutation is replayed. | Actual pinned tungstenite0.30 TLS source was inspected for original-URI SNI and normal root verification. Native WS now dials numeric endpoints or the same actual-TCP cache (including verified configured DNS aliases; .local labels still match the board). A missing hint waits quietly for the existing selected HTTP worker: no duplicate WS HTTP/DNS runtime or resolver thread. TCP timeout and absolute TLS/HTTP-upgrade deadline precede handshake; selected-route revocation is checked on each IO. Both Plain and Rustls use bounded runtime reads. Actual loopback seeding/Host, empty-cache/no-socket, mismatch/revocation and deadline fixtures cover this adaptation; TLS validation and physical LAN remain separate proof. | Reread complete donor resolver/tests for automatic-connection. Current policy supersedes earlier failed-resolution-only wording: hold actual TCP routing for the connected session until reachability failure or retirement. Persist hostname and last verified numeric origin as an endpoint/scheme/port/board-bound read-only recovery hint; try hostname first on a new session. Cached hostname requests preserve logical HTTP Host/TLS SNI and normal certificate validation; both clients' HTTPS recovery retains original hostname certificate identity even when the TCP dial uses a saved IP. Flutter unencrypted HTTP recovery can retain a verified numeric transport alias while saving the logical hostname separately. Only fresh compatible same-board status promotes the hint; no credentials, WebSocket authority or mutation replay come from persisted routing. Verified active renames preserve drafts/layout, while loopback forwarded URLs and remote DNS aliases remain transport aliases rather than being rewritten into board.local with the wrong port.","Donor forget(key,cached) on TCP dial error [replaced] | Go mutex, process-global resolver, Linux platform NBNS fallback and unbounded address candidates [replaced]","Donor forget(key,cached) on TCP dial error: Current user policy retains successful routing for the connected session until reachability failure or retirement, then tries hostname-first read-only recovery and the board-bound saved IP. A successful verified replacement refreshes the route; failed lookup alone does not promote another address. No HTTP mutation is replayed. | Go mutex, process-global resolver, Linux platform NBNS fallback and unbounded address candidates: Dart isolate ownership and a shared per-API resolver replace Go synchronization/global state. DNS and each dial have deadlines, successful cache is bounded64 hosts and candidates2; platform discovery remains separate. Android OS/mDNS resolution and DHCP movement still need actual phone/LAN acceptance; no platform helper or multicast success is inferred.","mobile/test/lan_resolver_transport_test.dart:12 [UTF8-LF sha256=bf4a46ca2ce7a9639b66bd7c03f9ecd57065b58a2d7fb2cc5e8f6a0edc3f637e; anchor=void main()] | mobile/test/selection_batch_network_test.dart:19 [UTF8-LF sha256=41eb7d501bf707974913ef8d1813b0e18d841b85266c032778acd15848f09dc3; anchor=test(] | desktop/src/peer_http.rs:1199 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn local_verified_address_override_preserves_http_hostname_and_explicit_port] | tests/peer_relay_test.cpp:140 [UTF8-LF sha256=30aa409380278617eacba57eba16589bb4e7b4671479e9c44087817882494ba2; anchor=int main()]","Session-sticky routing plus hostname-first durable same-board recovery; authentication and generic HTTP failures never grant discovery or mutation replay authority.","Verify physical Android DNS-SD/mDNS resolution, reconnect/DHCP change, TLS hostname identity and retained discovery records under real network loss. Preserve explicit Disconnect and identity fencing.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/lanresolver/resolver_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","b03498f9df5a9f8e5bc3c94eabec71ab4fb412b53c1fb1729fe63a45ec1ba3b9","automatic-connection | connection-resilience | mobile-network | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","mobile/test/selection_batch_network_test.dart:19 [UTF8-LF sha256=41eb7d501bf707974913ef8d1813b0e18d841b85266c032778acd15848f09dc3; anchor=test(] | desktop/src/peer_http.rs:963 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn local_address_cache_accepts_only_verified_tcp_peer_not_advertised_ip]","Adapted actual cached-address reuse and changed-DHCP-address scenarios with injected lookups/dials. Added actual loopback HTTP Host identity, authentication/timeout retention, selection/batch/readback and melody fixtures. | Native fixtures exercise actual reqwest loopback TCP, cached subsequent resolution, original HTTP Host and explicit port, provenance rejection, finite cache/replacement and invalidation. They are not Windows mDNS, Android DNS or DHCP physical acceptance. | Current native discovery fixtures cover persisted route roundtrip, endpoint/board/scheme/port fencing and credential-free failed-hostname recovery. Flutter trusted-CA HTTPS/WSS fixtures exercise actual numeric TCP fallback with original logical certificate identity, wrong-board rejection and shared-route reuse without repeated DNS. Separate ControlShell widget fixtures cover startup, manual Disconnect and editor handoff holds; none contacts production.","Go net.TCPConn placeholders, netip addresses and go test runtime [replaced]","Go net.TCPConn placeholders, netip addresses and go test runtime: Tests exercise the Dart resolver used by this application and a real local HTTP listener; Go donor tests are not executed as Flutter evidence. Physical phone/Wi-Fi and audible melody acceptance remain separate.","mobile/test/lan_resolver_transport_test.dart:12 [UTF8-LF sha256=bf4a46ca2ce7a9639b66bd7c03f9ecd57065b58a2d7fb2cc5e8f6a0edc3f637e; anchor=void main()] | mobile/test/selection_batch_network_test.dart:19 [UTF8-LF sha256=41eb7d501bf707974913ef8d1813b0e18d841b85266c032778acd15848f09dc3; anchor=test(] | desktop/src/peer_http.rs:1114 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn local_address_cache_bounds_replaces_and_invalidates_without_ttl_or_authority] | mobile/test/network_route_recovery_test.dart:11 [UTF8-LF sha256=e353a06b0fab6f9dd84cc7ce24aee1a5e8517c6e179b3975826f6adaa52f951f; anchor=void main()] | mobile/test/configuration_event_transport_test.dart:9 [UTF8-LF sha256=4c48e1641b05832a0c0fd5945a9a63e080b8563515f00970f03bb7fcdee9dd08; anchor=void main()] | tests/peer_relay_test.cpp:140 [UTF8-LF sha256=30aa409380278617eacba57eba16589bb4e7b4671479e9c44087817882494ba2; anchor=int main()]","Adds session routing and identity-fenced durable recovery, trusted-CA TLS fixtures and no mutation replay.","Focused Flutter fixtures pass; actual phone/LAN, physical color and audible melody acceptance remain open. ESP relay/cache/route-store fixtures cover cached reuse with failed mDNS, changed DHCP address, saved-route re-verification, wrong identity/boot, private-address validation, command no-replay, memory/receipt limits, safe late DNS callbacks and interrupted filesystem publication. Actual bidirectional board latency and heap/long-soak acceptance are still pending.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/lanresolver/resolver.go","b0111ae0c80dc34149ea1044de7dd5488920301b","8dec2b65850f9bfecf71c510f9f29392cc09def0e9590568d61ae982707cb4d7","automatic-connection | connection-resilience | mobile-network | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","mobile/lib/lan_resolver.dart:8 [UTF8-LF sha256=0dd6bae6e31632f2b526796cf4a67b5b31af978bac11d00bc932f3aef5576e92; anchor=class LanResolver] | mobile/lib/api.dart:181 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=final LanResolver resolver;] | mobile/lib/discovery.dart:116 [UTF8-LF sha256=8cb3956f80a50c5be2c134829bc7d323a3f4c58fbbcf1ea5d5e1aaa10ac7fbba; anchor=class DiscoveryCatalog] | mobile/lib/devices_page.dart:73 [UTF8-LF sha256=73b22cde59bac6f882fd989e6494a09d3d19b010b0fc8e5ae69e55591eca44c0; anchor=catalog] | desktop/src/peer_http.rs:339 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=pub fn device_client_builder] | desktop/src/main.rs:820 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=peer_http::remember_address] | firmware/esp/src/PeerLanResolver.h:13 [UTF8-LF sha256=2413d89e26403aae1a9a528c60da09acf4ea5079067b8c1183e7e6c4d8f41546; anchor=class PeerLanResolver]","Actual complete donor resolver and tests read from canonical PCController; adapted successful-address caching, retaining URL hostname/HTTP Host/TLS SNI rather than replacing the public identity with an IP. | 2026-10-28 reread resolver.go and resolver_test.go through EOF for ESP-to-ESP recovery. Adapt its reconnect-sticky successful address to a four-entry board+hostname+boot-verified cache. .local explicitly uses SDK mdns_query_a with a 900ms budget; unicast uses TCPIP-owned asynchronous IPv4 DNS and object-owned late callbacks instead of unbounded getaddrinfo. Explicit saved-route hints are reverified after reboot. HTTP Host remains the configured hostname; no cache/discovery record grants authorization or causes command replay. | Flutter HTTP and WebSocket share one resolver. TCP connect failures may trigger bounded read-only relookup but retain the last successful address; actual DNS SocketException/empty answer invalidates it. HTTP/auth/timeout failures do not evict or trigger discovery/replay. Cached route data never grants board/boot ownership. | Actual complete resolver reread at unchanged source hash for measured ASUS .local latency. A separate bounded32-host native cache accepts only actual response TCP remote_addr after valid board/boot and requested-hostname checks, retains URL Host/SNI, never trusts advertised IP and never grants command ownership. Fresh no-idle-pool clients reuse verified routing. Only typed dial/resolution failures mark a retained hint for later relookup; HTTP/auth/body timeouts do not discard it. Successful verified TCP replacement clears the bounded lookup mark; no mutation is replayed. | Actual pinned tungstenite0.30 TLS source was inspected for original-URI SNI and normal root verification. Native WS now dials numeric endpoints or the same actual-TCP cache (including verified configured DNS aliases; .local labels still match the board). A missing hint waits quietly for the existing selected HTTP worker: no duplicate WS HTTP/DNS runtime or resolver thread. TCP timeout and absolute TLS/HTTP-upgrade deadline precede handshake; selected-route revocation is checked on each IO. Both Plain and Rustls use bounded runtime reads. Actual loopback seeding/Host, empty-cache/no-socket, mismatch/revocation and deadline fixtures cover this adaptation; TLS validation and physical LAN remain separate proof. | Reread complete donor resolver/tests for automatic-connection. Current policy supersedes earlier failed-resolution-only wording: hold actual TCP routing for the connected session until reachability failure or retirement. Persist hostname and last verified numeric origin as an endpoint/scheme/port/board-bound read-only recovery hint; try hostname first on a new session. Cached hostname requests preserve logical HTTP Host/TLS SNI and normal certificate validation; both clients' HTTPS recovery retains original hostname certificate identity even when the TCP dial uses a saved IP. Flutter unencrypted HTTP recovery can retain a verified numeric transport alias while saving the logical hostname separately. Only fresh compatible same-board status promotes the hint; no credentials, WebSocket authority or mutation replay come from persisted routing. Verified active renames preserve drafts/layout, while loopback forwarded URLs and remote DNS aliases remain transport aliases rather than being rewritten into board.local with the wrong port.","Donor forget(key,cached) on TCP dial error [replaced] | Go mutex, process-global resolver, Linux platform NBNS fallback and unbounded address candidates [replaced]","Donor forget(key,cached) on TCP dial error: Current user policy retains successful routing for the connected session until reachability failure or retirement, then tries hostname-first read-only recovery and the board-bound saved IP. A successful verified replacement refreshes the route; failed lookup alone does not promote another address. No HTTP mutation is replayed. | Go mutex, process-global resolver, Linux platform NBNS fallback and unbounded address candidates: Dart isolate ownership and a shared per-API resolver replace Go synchronization/global state. DNS and each dial have deadlines, successful cache is bounded64 hosts and candidates2; platform discovery remains separate. Android OS/mDNS resolution and DHCP movement still need actual phone/LAN acceptance; no platform helper or multicast success is inferred.","mobile/test/lan_resolver_transport_test.dart:12 [UTF8-LF sha256=bf4a46ca2ce7a9639b66bd7c03f9ecd57065b58a2d7fb2cc5e8f6a0edc3f637e; anchor=void main()] | mobile/test/selection_batch_network_test.dart:19 [UTF8-LF sha256=41eb7d501bf707974913ef8d1813b0e18d841b85266c032778acd15848f09dc3; anchor=test(] | desktop/src/peer_http.rs:1203 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn local_verified_address_override_preserves_http_hostname_and_explicit_port] | tests/peer_relay_test.cpp:140 [UTF8-LF sha256=30aa409380278617eacba57eba16589bb4e7b4671479e9c44087817882494ba2; anchor=int main()]","Session-sticky routing plus hostname-first durable same-board recovery; authentication and generic HTTP failures never grant discovery or mutation replay authority.","Verify physical Android DNS-SD/mDNS resolution, reconnect/DHCP change, TLS hostname identity and retained discovery records under real network loss. Preserve explicit Disconnect and identity fencing.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/link/discovery_cancel_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","090f3a0df47c063ae8a7df2932b9cc6e7717b61ed79ab1e527ae629b77cf2f07","network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/link/discovery.go","b0111ae0c80dc34149ea1044de7dd5488920301b","f35ffa43fe47035e206f4e7fe5dfaf8f0798127c4c10eb7a07db935b44b0edac","automatic-connection | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/platform/discovery.rs:107 [UTF8-LF sha256=126098720cf4b0d91a74e7147b41954f2361960f4ae7d210896f8c762ae24fd3; anchor=pub fn unique_board] | mobile/lib/automatic_board_connection.dart:49 [UTF8-LF sha256=fcddfe921713712973ae3258c3ff031d395892e0497302f22d05e0ebd9bafdf8; anchor=class AutomaticBoardConnector] | libraries/BoardCore/src/AvrPeerHealth.h:10 [UTF8-LF sha256=e4611c613227f063aeb44ae48b32b3f9308a36e8fddc1df06278983ba33e152d; anchor=class AvrAdmissionRecovery]","Root and native specialist read the complete actual donor through EOF. Adapt AutoOpen's preferred-candidate/ambiguity and authenticate-before-adoption ownership to a completed bounded read-only LAN sweep. Both clients retain the previous healthy peer, count duplicate interfaces by verified physical board identity, refuse multiple boards and retire late results after explicit Disconnect or method changes. Native four-worker probes and Flutter scan generations do not choose the first responder or let a retained catalog grant ownership.","AutoOpen serial filtering, ResetAfterOpen/DTR pulse and Go provisional authentication runtime [pending] | Donor exact HELLO/goroutine/channel and TCP Virtual Board contracts [replaced]","AutoOpen serial filtering, ResetAfterOpen/DTR pulse and Go provisional authentication runtime: This user request adds automatic LAN board selection, not implicit USB enumeration/reset or a replacement Go serial transport. Existing selected USB remains independent and production hold forbids unintended reset. Full serial VID/port-rebind/quarantine parity remains useful separate work; it is not claimed imported by LAN fixtures. | Donor exact HELLO/goroutine/channel and TCP Virtual Board contracts: Pakar already owns its living board/boot/capability/version status and revocable native/Dart transport. Reuse the donor selection and cleanup discipline without adding a second protocol or copying Go-specific synchronization into Rust/Flutter.","desktop/src/platform/discovery.rs:229 [UTF8-LF sha256=126098720cf4b0d91a74e7147b41954f2361960f4ae7d210896f8c762ae24fd3; anchor=fn discovery_auto_selects_one_physical_identity_not_one_interface] | mobile/test/automatic_board_connection_test.dart:32 [UTF8-LF sha256=cee36549184c34fbc52bf695f2bf92a507b60315c6b8534b04f2cc8ebae08616; anchor=void main()] | mobile/test/automatic_connection_widget_test.dart:65 [UTF8-LF sha256=fdcf213e00e2e2e0f4840a5a89151435358b1ecbf9c05cf13979c1a536b67d34; anchor=void main()] | tests/protocol_test.cpp:27 [UTF8-LF sha256=4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144; anchor=admission.needsHello(2000,0)]","","Issue #2/#10: installed native/Android startup, real router/AP discovery, DHCP and hostname rename/reconnect acceptance remain open. Read-only socket/widget fixtures do not prove physical network or production deployment; unsaved drafts and maintenance owners still block new-board handoff.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/link/discovery.go","b0111ae0c80dc34149ea1044de7dd5488920301b","f35ffa43fe47035e206f4e7fe5dfaf8f0798127c4c10eb7a07db935b44b0edac","automatic-connection | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/platform/discovery.rs:107 [UTF8-LF sha256=126098720cf4b0d91a74e7147b41954f2361960f4ae7d210896f8c762ae24fd3; anchor=pub fn unique_board] | mobile/lib/automatic_board_connection.dart:49 [UTF8-LF sha256=fcddfe921713712973ae3258c3ff031d395892e0497302f22d05e0ebd9bafdf8; anchor=class AutomaticBoardConnector] | libraries/BoardCore/src/AvrPeerHealth.h:10 [UTF8-LF sha256=e4611c613227f063aeb44ae48b32b3f9308a36e8fddc1df06278983ba33e152d; anchor=class AvrAdmissionRecovery]","Root and native specialist read the complete actual donor through EOF. Adapt AutoOpen's preferred-candidate/ambiguity and authenticate-before-adoption ownership to a completed bounded read-only LAN sweep. Both clients retain the previous healthy peer, count duplicate interfaces by verified physical board identity, refuse multiple boards and retire late results after explicit Disconnect or method changes. Native four-worker probes and Flutter scan generations do not choose the first responder or let a retained catalog grant ownership.","AutoOpen serial filtering, ResetAfterOpen/DTR pulse and Go provisional authentication runtime [pending] | Donor exact HELLO/goroutine/channel and TCP Virtual Board contracts [replaced]","AutoOpen serial filtering, ResetAfterOpen/DTR pulse and Go provisional authentication runtime: This user request adds automatic LAN board selection, not implicit USB enumeration/reset or a replacement Go serial transport. Existing selected USB remains independent and production hold forbids unintended reset. Full serial VID/port-rebind/quarantine parity remains useful separate work; it is not claimed imported by LAN fixtures. | Donor exact HELLO/goroutine/channel and TCP Virtual Board contracts: Pakar already owns its living board/boot/capability/version status and revocable native/Dart transport. Reuse the donor selection and cleanup discipline without adding a second protocol or copying Go-specific synchronization into Rust/Flutter.","desktop/src/platform/discovery.rs:229 [UTF8-LF sha256=126098720cf4b0d91a74e7147b41954f2361960f4ae7d210896f8c762ae24fd3; anchor=fn discovery_auto_selects_one_physical_identity_not_one_interface] | mobile/test/automatic_board_connection_test.dart:32 [UTF8-LF sha256=cee36549184c34fbc52bf695f2bf92a507b60315c6b8534b04f2cc8ebae08616; anchor=void main()] | mobile/test/automatic_connection_widget_test.dart:65 [UTF8-LF sha256=fdcf213e00e2e2e0f4840a5a89151435358b1ecbf9c05cf13979c1a536b67d34; anchor=void main()] | tests/protocol_test.cpp:35 [UTF8-LF sha256=b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04; anchor=admission.needsHello(2000,0)]","","Issue #2/#10: installed native/Android startup, real router/AP discovery, DHCP and hostname rename/reconnect acceptance remain open. Read-only socket/widget fixtures do not prove physical network or production deployment; unsaved drafts and maintenance owners still block new-board handoff.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/link/quarantine_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","943d64e23e5fe9a95d3e690d70c48c72ba6aa4e5ca6543a0974a3e54f09d97b6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/link/request_admission_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","0148ea4aac3cf230050045756a4308157adf786a2b6ca2d4fd99bcf665a622c1","peer-binding","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","desktop/src/connection.rs:28 [UTF8-LF sha256=b87a15893bb66b66dbfa84ff9ffb611a40532dc679991397651267045e14e9b0; anchor=pub struct Gate] | desktop/src/main.rs:2263 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=fn serial_worker(] | desktop/src/usb_table.rs:101 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=pub struct Operation]","Lamp-background checkpoint reread actual request-admission fixture and current selected-USB worker/HTTP-isolation regression. App-only presentation IPC is separate from physical admission; selected transport, lease and no-late-write contracts remain unchanged. Inspected main.rs target/proof rebound without execution or physical claims. | Fully read all489lines through EOF. Adapted queued-intent revocation/no-late-write and ownership-before/after admission assertions as Rust selected-method epoch tests. The production Gate keeps revoked owners until their resource leases drop and never admits a competing route or a second USB handle. | New main fixture invokes the actual HTTP worker against a live loopback listener while USB is selected, asserting zero accepted connections and zero failure events. This is an unexecuted source fixture reference until the guarded owner runs tests, not live USB or electrical proof. | Reread current canonical Session, fakePort and request_admission_test.go. Adapt actual control-over-background admission between unsent USB snapshot chunks, without overtaking an in-flight request or post-ACK verification. The production Rust worker now validates matching sequence/opcode ACK plus compact same-boot board-observed state, rather than delaying confirmation for all480 RGB pixels, mappings and icon metadata. Full captures still own capability/peripheral freshness and actual RGB; partial readback does not renew those observations. Missing companion uses read-only full verification, never mutation replay. Production-worker fragmented-port and wrong-boot/scalar/state fixtures cover this scoped adaptation, not all donor reset/open/750ms strip contracts.","Priority/background strip scheduling,750ms ACK bound, active-opcode wait diagnostics and delayed/concurrent exact ACK matching [pending] | PulseDTR cancellation/restoration/write exclusion and live physical port acquisition/late-close tests [pending]","Priority/background strip scheduling,750ms ACK bound, active-opcode wait diagnostics and delayed/concurrent exact ACK matching: USB control priority, correlated ACK and compact board readback now have production-worker fakePort coverage. Full donor750ms strip-specific deadline, delayed/concurrent request matrix and OS acquisition/close/reset ownership still require dedicated adaptation and acceptance. | PulseDTR cancellation/restoration/write exclusion and live physical port acquisition/late-close tests: This pass intentionally adds no automatic reset and keeps AVR/ISP/audio deferred. Inactive DTR on Rust open is source configuration, not measured electrical behavior; OS acquisition/cancellation/retryable-close ownership still needs dedicated fake-handle and real-host acceptance.","desktop/src/connection.rs:129 [UTF8-LF sha256=b87a15893bb66b66dbfa84ff9ffb611a40532dc679991397651267045e14e9b0; anchor=fn handoff_waits_for_all_actual_old_resources_and_rejects_stale_epoch()] | desktop/src/connection.rs:117 [UTF8-LF sha256=b87a15893bb66b66dbfa84ff9ffb611a40532dc679991397651267045e14e9b0; anchor=fn usb_offline_never_admits_network_and_disconnect_revokes_everything()] | desktop/src/main.rs:6230 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=fn usb_selected_http_worker_never_contacts_even_a_live_network_endpoint()] | desktop/src/usb_table.rs:842 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()] | desktop/src/usb_table.rs:735 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()]","User-required exclusive Wi-Fi-or-USB lifecycle replaces Both rather than silently falling back; physical resources retire before the new method opens. Source evidence only until guarded tests and runtime observations.","Run guarded native tests and verify selected USB causes no HTTP/DNS/SSDP/telemetry or second physical connection; validate bounded route retirement, dirty-draft protection and retired outcomes in actual runtime. Do not infer whole donor parity or electrical acceptance from Gate tests.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/link/request_admission_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","0148ea4aac3cf230050045756a4308157adf786a2b6ca2d4fd99bcf665a622c1","peer-binding","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","desktop/src/connection.rs:28 [UTF8-LF sha256=b87a15893bb66b66dbfa84ff9ffb611a40532dc679991397651267045e14e9b0; anchor=pub struct Gate] | desktop/src/main.rs:2267 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=fn serial_worker(] | desktop/src/usb_table.rs:102 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=pub struct Operation]","Lamp-background checkpoint reread actual request-admission fixture and current selected-USB worker/HTTP-isolation regression. App-only presentation IPC is separate from physical admission; selected transport, lease and no-late-write contracts remain unchanged. Inspected main.rs target/proof rebound without execution or physical claims. | Fully read all489lines through EOF. Adapted queued-intent revocation/no-late-write and ownership-before/after admission assertions as Rust selected-method epoch tests. The production Gate keeps revoked owners until their resource leases drop and never admits a competing route or a second USB handle. | New main fixture invokes the actual HTTP worker against a live loopback listener while USB is selected, asserting zero accepted connections and zero failure events. This is an unexecuted source fixture reference until the guarded owner runs tests, not live USB or electrical proof. | Reread current canonical Session, fakePort and request_admission_test.go. Adapt actual control-over-background admission between unsent USB snapshot chunks, without overtaking an in-flight request or post-ACK verification. The production Rust worker now validates matching sequence/opcode ACK plus compact same-boot board-observed state, rather than delaying confirmation for all480 RGB pixels, mappings and icon metadata. Full captures still own capability/peripheral freshness and actual RGB; partial readback does not renew those observations. Missing companion uses read-only full verification, never mutation replay. Production-worker fragmented-port and wrong-boot/scalar/state fixtures cover this scoped adaptation, not all donor reset/open/750ms strip contracts.","Priority/background strip scheduling,750ms ACK bound, active-opcode wait diagnostics and delayed/concurrent exact ACK matching [pending] | PulseDTR cancellation/restoration/write exclusion and live physical port acquisition/late-close tests [pending]","Priority/background strip scheduling,750ms ACK bound, active-opcode wait diagnostics and delayed/concurrent exact ACK matching: USB control priority, correlated ACK and compact board readback now have production-worker fakePort coverage. Full donor750ms strip-specific deadline, delayed/concurrent request matrix and OS acquisition/close/reset ownership still require dedicated adaptation and acceptance. | PulseDTR cancellation/restoration/write exclusion and live physical port acquisition/late-close tests: This pass intentionally adds no automatic reset and keeps AVR/ISP/audio deferred. Inactive DTR on Rust open is source configuration, not measured electrical behavior; OS acquisition/cancellation/retryable-close ownership still needs dedicated fake-handle and real-host acceptance.","desktop/src/connection.rs:129 [UTF8-LF sha256=b87a15893bb66b66dbfa84ff9ffb611a40532dc679991397651267045e14e9b0; anchor=fn handoff_waits_for_all_actual_old_resources_and_rejects_stale_epoch()] | desktop/src/connection.rs:117 [UTF8-LF sha256=b87a15893bb66b66dbfa84ff9ffb611a40532dc679991397651267045e14e9b0; anchor=fn usb_offline_never_admits_network_and_disconnect_revokes_everything()] | desktop/src/main.rs:6234 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=fn usb_selected_http_worker_never_contacts_even_a_live_network_endpoint()] | desktop/src/usb_table.rs:843 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()] | desktop/src/usb_table.rs:736 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()]","User-required exclusive Wi-Fi-or-USB lifecycle replaces Both rather than silently falling back; physical resources retire before the new method opens. Source evidence only until guarded tests and runtime observations.","Run guarded native tests and verify selected USB causes no HTTP/DNS/SSDP/telemetry or second physical connection; validate bounded route retirement, dirty-draft protection and retired outcomes in actual runtime. Do not infer whole donor parity or electrical acceptance from Gate tests.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/link/rf_clock_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","2eb584d3405d30d37e876e18c7f0e2554198157e168625a758cfb88da290a91f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/link/rf_clock.go","b0111ae0c80dc34149ea1044de7dd5488920301b","614433093e13389a122e5de000fc4b817f9ae666948a89cfbb3a241bd4e06e65","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/link/serial_close_windows_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","62a8c35bb1c111fb27c83ae51349827505c94f380d8a5866a71dd70ed08e5f30","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/link/session_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","ff6c7b21f72bfb944d232c87210f8ffa139dfe016e8b5756f2582604489fffc4","peer-binding","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","tests/protocol_test.cpp:68 [UTF8-LF sha256=4d2f38e2823672336bd512240ae35c4ff3e234f95766509efba80f86fa100144; anchor=Adapt donor matching-identity/request assertions] | desktop/src/terminal_ui.rs:1412 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn server_reboot_between_preflight_and_post_stops_without_replay()] | desktop/src/peer_http.rs:1561 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_settings_pin_every_nested_request_and_verify_same_boot()] | desktop/src/usb_table.rs:101 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=pub struct Operation]","Actual fakePort matching/mismatched request and identity scenarios read fully and adapted to C++ peer validation and native same-host reboot/pinned-header/409 no-replay HTTP fixtures. | Old receipts stay in Events, not new peer's confirmed output. | Full session_test.go reread through EOF and live hash reverified. Admission revocation, peer mismatch and no-replay assertions adapted to actual native GUI HTTP loopback fixtures, not claims of importing Go fakePort acquisition/reset/ACK routing. | Reread complete donor at unchanged live hash; mismatch/admission assertions now also execute real WebAccess middleware and AsyncHttpService with SDK/transport/auth doubles. Retired queued probe never reaches the simulated hardware call or replays. This does not validate Basic-auth parsing, physical ISP or downstream AVR epoch. | Reread current canonical Session, fakePort and request_admission_test.go. Adapt actual control-over-background admission between unsent USB snapshot chunks, without overtaking an in-flight request or post-ACK verification. The production Rust worker now validates matching sequence/opcode ACK plus compact same-boot board-observed state, rather than delaying confirmation for all480 RGB pixels, mappings and icon metadata. Full captures still own capability/peripheral freshness and actual RGB; partial readback does not renew those observations. Missing companion uses read-only full verification, never mutation replay. Production-worker fragmented-port and wrong-boot/scalar/state fixtures cover this scoped adaptation, not all donor reset/open/750ms strip contracts.","serialOpenWithPending/late acquisition/configuration cancellation/close retry, preclose ordering and terminal error ownership; corresponding fakePort tests [pending] | priority requestAdmission, sequence/opcode-matched ACK/Error/events, reserved macro sequence, boot HELLO retry and recoverable decoder overflow tests [pending] | compact HELLO schemas/build stamp and DTR reset/inactive control-line tests [pending]","serialOpenWithPending/late acquisition/configuration cancellation/close retry, preclose ordering and terminal error ownership; corresponding fakePort tests: Useful serial lifecycle/quarantine has no equivalent in HTTP-only TUI. Adapt with actual Rust USB owner before discovery/reconnect; never close another client's port. | priority requestAdmission, sequence/opcode-matched ACK/Error/events, reserved macro sequence, boot HELLO retry and recoverable decoder overflow tests: HTTP fencing is not downstream AVR ACK/decoder ownership. These production behaviors and exact tests remain pending with USB/UART host integration. | compact HELLO schemas/build stamp and DTR reset/inactive control-line tests: Build stamp is not board/boot identity; numbered public generation negotiation conflicts with living API. Adapt additive identity and explicit one-shot reset policy with serial owner, without schema selectors/reset-on-connect.","desktop/src/terminal_ui.rs:1484 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn shared_cli_mutation_inherits_pinned_epoch_headers()] | tests/peer_fence_test.mjs:23 [UTF8-LF sha256=09291cb48a20e945aef09f5176eb9089db1bf7440fc45deb73daf9e832a456c4; anchor=Upload callbacks precede middleware] | desktop/src/peer_http.rs:1590 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_preflight_reboot_or_capability_loss_never_dispatches_mutation()] | desktop/src/peer_http.rs:1623 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_readback_from_new_boot_is_not_applied()] | desktop/src/peer_http.rs:1682 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_unfenced_mutation_fails_before_network_and_preserves_correlation()] | desktop/src/peer_http.rs:1607 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_server_boot_conflict_is_not_replayed()] | tests/web_access_fence_test.cpp:121 [UTF8-LF sha256=a6d3b4d5a9fd3703c6265d093acaa21bd2cb17a30cda92ba9b4e18848e322a72; anchor=Real async queue + real fence recheck] | desktop/src/usb_table.rs:842 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()] | desktop/src/usb_table.rs:735 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()]","","GUI HTTP and Web pin adoption implemented as bounded slices; native WebSocket/USB/mobile/standalone CLI/cloud fencing, remembered pairing and AVR-only boot identity remain pending; ESP32-S3 application not integrated. | Port remaining useful serial lifecycle/priority/ACK/reset tests; fixtures/source/compile are not physical acceptance.","Not established by source/hash/test-code comparison; see issue #2" -"PCController","Tools/Controller/internal/link/session.go","b0111ae0c80dc34149ea1044de7dd5488920301b","1311fdcde94b2ef8ed06db63ff874a255c135dc1969709e6f43ff4b5c5c8235b","usb-otg | bluetooth | connection-resilience | peer-binding","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10 | https://github.com/atomicdeploy/PakarController/issues/20","parity-gap","complete","desktop/src/terminal_ui.rs:806 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn command_request(] | mobile/lib/api.dart:2090 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=bool _acceptIdentity(] | mobile/lib/main.dart:218 [UTF8-LF sha256=814e5944b0f27d21f2005ff4bfa8e391dc5721435e25f9c40ccf2c934090a7db; anchor=api.onPeerChanged = ()] | mobile/lib/bridge.dart:373 [UTF8-LF sha256=6b7fe15e223d7a110972adc698dc66e739f956f596ed265894445f333676df98; anchor=watchdog = Timer.periodic] | libraries/BoardCore/src/PeerFence.h:31 [UTF8-LF sha256=9f1ab63252bd881d2fc786e230a18db331e66708a1bd3ccd0f096d2d2b5d49d5; anchor=inline bool accepts(] | firmware/esp/src/WebAccess.h:92 [UTF8-LF sha256=774b524f4cd81c003e4139d0bb6cf3353d987674bbfb49d7a1b989ee2a232294; anchor=bool peerAllowed(] | firmware/esp/application.ino:2077 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=bool authenticate()] | assets/web/peer-http.js:90 [UTF8-LF sha256=9613bb23bfa007afcde525d49a193b25b93788b0f24e6a0374ce4f49560f8f9e; anchor=function assertOwner(peer)] | desktop/src/peer_http.rs:590 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=pub fn admit(] | desktop/src/main.rs:845 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=fn scoped_http_request(] | desktop/src/usb_table.rs:571 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=pub struct Admission] | mobile/lib/command_readback.dart:14 [UTF8-LF sha256=c920c79353178bfb46aaed6e80a467951b9131f7f3cab0653d970f6408d8703c; anchor=bool commandReadbackMatches(] | desktop/src/cell_batch.rs:15 [UTF8-LF sha256=e1c9e090e67ac7d1da3487a8219067d0a4bc9fd471a13d6a24f7a9462bead947; anchor=pub struct Correlation] | desktop/src/realtime.rs:8 [UTF8-LF sha256=134977c4f18998b92ebb2e8d763147a1c0eeb2039c019a603cb7de712502fa01; anchor=pub struct Intent] | mobile/lib/command_wire.dart:49 [UTF8-LF sha256=5b60bf4d43874d5ef071dbc118cbbc581c2c59d1af8491116aba56570298a3cb; anchor=String commandPacket(] | libraries/BoardCore/src/CommandReceipts.h:8 [UTF8-LF sha256=061d79642fdeb1e07f528a63438ba466c3784fc96aef7ff9ca881508675dd2dc; anchor=class CommandReceipts] | mobile/lib/table_workspace.dart:13 [UTF8-LF sha256=02445683146ff2b3bdca50bfa8d1aa1dedb94261c361613fdb545e7ca4f7c83e; anchor=class TableWorkspace] | libraries/BoardCore/src/BleWire.h:31 [UTF8-LF sha256=e6b8a769227fed14658e25d2f21be2773e2607902abd79cf91cd03eda22c7230; anchor=class Receiver] | firmware/esp32s3/src/BleService.h:71 [UTF8-LF sha256=7274cd7a20d0a67ca68e924b2792778d9a86ece8ce837a0a1fa518d744a67b94; anchor=class BleService] | firmware/esp32s3/src/BleStorage.h:21 [UTF8-LF sha256=1b0b11d0d1f7f398699629ccdbd32d11e3308aef5f738f5963fcfd1d176d81e8; anchor=class BleBulkOwner] | firmware/esp/src/BleRoutes.h:219 [UTF8-LF sha256=b89a7a050b6f1f4121d8de0809dfce67cca404170e40a252cce66e95e5aa7b5d; anchor=String bleRequest(] | services/remote-panel/gateway.mjs:12 [UTF8-LF sha256=6092a0b79c3277ef171d25e4228b42831eb06990689b84f40101b9b898ac872a; anchor=export class Gateway] | services/remote-panel/service.mjs:13 [UTF8-LF sha256=724a7a0167e09af540c7dc6329bd2cc7ae5ed7ce496dfeaa3297a1b6d06a3737; anchor=export function createPanel] | desktop/src/peer_identity.rs:359 [UTF8-LF sha256=18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979; anchor=pub fn usb_introduction_error(]","Lamp-background checkpoint reread all 916 canonical donor lines plus native HTTP admission/producer-envelope checks, selected serial lease and batch ACK correlation. Flutter peer-retirement/command admission/readback and lifecycle proof inspected after compact-footer change. New app-local CellBackgrounds command never enters board request queue or replay path. Only inspected consumers rebound; no new hardware/transport acceptance. | Actual Session.Request closing/context checks before and after admission adapted to TUI atomic stop checks before/after fresh preflight; no post-dispatch replay. | Full source read. Fail-closed identity checks strengthened with HTTP server-side board/boot fences; donor HELLO/build stamp is NOT a boot epoch. | Before/after admission ownership checks also adapted to Web's shared pinned HTTP preflight and post-response generation validation. Existing session.go full review/live 1bf4d52 hash remains unchanged; this is not import of Go serial acquisition or request-priority scheduling. | Full session.go reread through EOF and live source hash reverified. Actual acquireWrite/requestAdmission before/after admission closing checks adapted to native HTTP queued generation, deadline and post-preflight ownership checks. Shared native/TUI strict Pin validation removes the duplicate validator; pinned clients refuse redirects. | Reread complete donor at unchanged live hash for firmware admission/dispatch ownership. Supplied HTTP headers are checked for all methods including hardware-affecting GET probe; actual loop dispatch rechecks the same request before SPI/reset. Header-free compatibility is deliberately unfenced, not ownership proof. | Fully reread current session.go and session_test.go for Android networking. Adapted actual SetBeforeClose/notifyBeforeClose synchronous retirement into mobile HTTP/WebSocket board/boot acceptance, root state revocation and discarded prior firmware owners. Learned critical identity cannot silently disappear into legacy readiness. A one-second bridge watchdog is independent from the chosen telemetry interval, and retired MQTT callbacks cannot publish through a replacement client. | Canonical b0111ae0 session.go916lines fully reread through EOF; old1bf4d52 review remains historical. Existing bounded HTTP/mobile ownership targets do not imply current whole serial-session parity. Frozen native transport targets were separately reviewed: selected-method epoch Gate/Stamp/Lease, before-write lease checks, actual USB handle drop before handoff, HTTP/WS lease retention, no idle HTTP connection pool, no Both fallback and stale-event retirement. | Matched opcode/sequence admission and no-replay principles now also govern actual USB table commands. UI-captured connection stamp, physical-open session, board/boot pin and enqueue time survive the queue unchanged; admission is checked before queueing and before writing. Frozen snapshot chunks validate nonce/token/offset/size, retain capture-start freshness, and a new same-peer capture after ACK verifies requested values. This is a scoped Rust adaptation, not all donor priority/reset/AVR contracts. | Mobile explicit Disconnect retires polling, retries and old live callbacks. Cell/output/mode/effect/brightness mutations require fresh preflight and post-ACK readback; failed confirmation stops bulk without optimistic success. Android direct USB is not implemented or offered as a working connection. | Actual last-published 480-pixel RGB now travels in the same bounded frozen USB capture through the existing Frame parser, with capture-start freshness, matching mapping and current-peer admission. USB readback also synchronizes observed effect; there is no Wi-Fi fallback or fabricated six-pixel preview. This newer source passes197 native tests but is not yet deployed because the ASUS tunnel failed. | Stress audit fixes same-count foreign receipts: immutable local operation ID, exact selection/state/effect, Pin and route survive HTTP/USB admission/result. UI compares its own correlation; USB rejects payload/admission mismatch. Full donor priority scheduling is not claimed. | Reread the full current Session source for the live ASUS queue failure. Actual grantNextLocked highest-priority/strict-greater FIFO selection is now adapted to a bounded64-entry native HTTP waiting window: foreground commands overtake unsent status/mapping and optional configuration work, without preempting an in-flight request. Mutations retain8s expiry and revocable generation/board/boot fencing; read-only work has a separate24s bound. Atomic batches reuse the worker's fresh preflight rather than running it twice, retaining final admission, one POST, ACK and same-boot readback. This does not import USB sequence allocation, DTR/reset defaults or serial priority scheduling. | Actual Session admission/matched-ACK/no-replay principles now guard WebSocket-first native/mobile commands. One random intent ID, bounded boot-relative deadline and exact packet digest survive same-intent HTTP recovery. The loop-owned RAM receipt cache consumes before mutation and never evicts an unexpired ID. Immediate same-board state accompanies each ACK; other clients receive immediate state pushes. Older HTTP reads cannot roll newer state back. Flutter keeps both scroll controllers and a fixed result slot through pending/completed writes without renewing expired telemetry. This scoped adaptation does not import serial sequence allocation, reset defaults or all donor contracts. | Separate command authority from board-keyed Flutter user workspace state: lifecycle pauses timers, not a healthy socket; resume probes the same socket before HTTP fallback; silent sockets have independent WS freshness and bounded reconnect. Stale or foreign leases disable writes without destroying selection, search, drafts or scroll. Hidden settings no longer issue periodic network/AVR reads. No old mutation is queued or replayed. | Reread current canonical Session, fakePort and request_admission_test.go. Adapt actual control-over-background admission between unsent USB snapshot chunks, without overtaking an in-flight request or post-ACK verification. The production Rust worker now validates matching sequence/opcode ACK plus compact same-boot board-observed state, rather than delaying confirmation for all480 RGB pixels, mappings and icon metadata. Full captures still own capability/peripheral freshness and actual RGB; partial readback does not renew those observations. Missing companion uses read-only full verification, never mutation replay. Production-worker fragmented-port and wrong-boot/scalar/state fixtures cover this scoped adaptation, not all donor reset/open/750ms strip contracts. | Reread actual Session admission/ACK ownership for the ten-minute ASUS failure. Native immutable reads use a verified-token four-chunk window and one absolute8s capture/freshness deadline, not a premature2s per-fragment timeout. Mutation ACK/deadline/no-replay rules are unchanged. Capture progress is a bounded typed owner-IPC observation, not toast identity; verified same-board presentation survives read failure and wire reacquisition without renewing old hardware authority. | Bluetooth slice: fully reread canonical b0111ae0 Session source (SHA1311fdcde...), not the old ../repos copy. Adapted RequestWithPriority/acquireWrite/WithRequestWriteGuard, consumed single-inflight admission and synchronous close fencing to S3 main-loop GATT ingress and targeted replies. Existing CommandReceipts and shared business/configuration/update handlers remain authoritative; fragment ACK is not a command receipt. | Memory-pressure review retains those exact ownership/wire rules while moving all eight BLE ingress slots and the unchanged whole Receiver/Sender into one PSRAM-only BleBulkStorage lifetime allocation before BLEDevice::init. Missing storage prevents BLE startup/admission, with no scarce-DRAM fallback. Fences/disable/reconnect reset session state but never free/replace storage underneath callbacks. Internal mutexes/atomics/callback owners, INFO bytes and SDK/LED timing-critical memory remain internal; pure BleWire protocol source is unchanged. | Actual Arduino-ESP32 3.3.12 cores/esp32/esp32-hal-psram.c was read through EOF (original-byte SHA2562f47f8b635de8ffb64d160576a2705b063235fb9f54e01b98e8d2bf3f48352bd). Its explicit MALLOC_CAP_SPIRAM|MALLOC_CAP_8BIT allocation/no-internal-fallback boundary is used by the new Pakar owner. The Go donor does not implement S3 PSRAM or NimBLE allocation; this platform adaptation does not transplant or relabel serial buffers, and does not override the prebuilt SDK's internal-only NimBLE pool/host-stack settings. | Reread canonical Session source at SHA1311fdcde94b2ef8ed06db63ff874a255c135dc1969709e6f43ff4b5c5c8235b for the native mapping failure. Adapt its before/after admission and matched-response ownership principles: a current pinned mapping GET validates the response producer board/boot plus the unexpired, still-current scope, without an unrelated HTTP status preflight. Foreign or incomplete producer envelopes reject without fallback. An absent envelope is discarded before the original status -> mapping -> status legacy fences run; no stale mapping survives a changed board/boot. Six actual loopback HTTP fixtures passed via the canonical native gui_mapping filter. ASUS build12 runtime separately confirmed80 mappings with no active incidents on the selected current peer; that is not a long-soak, pixel RGB, or physical cell-order acceptance. | BLE lifecycle remains a scoped S3 SDK adaptation, not an unreviewed donor feature: missing/corrupt settings default Off; runtime enable persists intent without entering unbounded SDK initialization in the loop; disable retires late owners and honestly requires reboot to release retained SDK pools. Compile exclusion preserves loaded intent and rejects enabling unavailable hardware. Pure real-owner fixtures cover missing/corrupt records, reboot state, exclusion and request admission; no claim of SDK init timeout or BLE/TLS/OTA coexistence. | Temporary Internet panel: canonical b0111ae0 Session source reread through EOF and blob SHA1311fdcde reverified, distinct from older ../repos checkout SHAe171bf35. Adapted matched-request/ACK ownership, pre-dispatch board/boot admission and synchronous disconnect retirement to existing MQTT CloudCommandGuard. Each QoS0/non-retained mutation is sent once and requires correlated ACK plus fresh same-boot readback. Retained data grants no control lease. Real HTTP/WebSocket auth and Origin tests cover this slice, not serial/AVR/physical LED acceptance. | Canonical Session source reread fully for USB health; RemoteError/decodeRemoteError preserve actual correlated opcode and device code. Rust USB introduction now distinguishes invalid report/capacity, Busy, safety rejection and Unsupported instead of classifying all failures as release mismatch. Malformed replies remain explicit; no admission override or retry added. Actual ASUS reconnect passed on the current ESP; this change does not claim the historical rejection cause was reproduced. | Native UI checkpoint gate rereview is scoped, not a new complete-file donor review: canonical RequestWithPriority, acquireWrite, writeRawContext, SetBeforeClose and notifyBeforeClose were reread against mobile initState retirement callbacks, _command, Api.settledStatus/_acceptIdentity, TableWorkspace restoration/snapshot and changed lifecycle assertions. Prior full donor certification and original-byte hash remain unchanged. Connection ownership, synchronous peer/boot retirement, matched post-ACK readback and no mutation replay remain intact. Color labels, canonical selection, key positions and indicator placement are presentation only; pixel-only events require the presented board/boot without freshness renewal. Changed tests locate the moved display option and retain zero-write, selection and both-scroll-axis assertions. No new runtime or hardware acceptance is claimed.","serialOpenWithPending/late acquisition/configuration cancellation/close retry, preclose ordering and terminal error ownership; corresponding fakePort tests [pending] | priority requestAdmission, sequence/opcode-matched ACK/Error/events, reserved macro sequence, boot HELLO retry and recoverable decoder overflow tests [pending] | compact HELLO schemas/build stamp and DTR reset/inactive control-line tests [pending] | WithRequestWriteGuard final transport admission;750ms strip ACK/background priority and active-opcode slot diagnostics [pending] | Bluetooth transport is not Go serial acquisition or a complete firmware-file transport [pending]","serialOpenWithPending/late acquisition/configuration cancellation/close retry, preclose ordering and terminal error ownership; corresponding fakePort tests: Useful serial lifecycle/quarantine has no equivalent in HTTP-only TUI. Adapt with actual Rust USB owner before discovery/reconnect; never close another client's port. | priority requestAdmission, sequence/opcode-matched ACK/Error/events, reserved macro sequence, boot HELLO retry and recoverable decoder overflow tests: HTTP fencing is not downstream AVR ACK/decoder ownership. These production behaviors and exact tests remain pending with USB/UART host integration. | compact HELLO schemas/build stamp and DTR reset/inactive control-line tests: Build stamp is not board/boot identity; numbered public generation negotiation conflicts with living API. Adapt additive identity and explicit one-shot reset policy with serial owner, without schema selectors/reset-on-connect. | WithRequestWriteGuard final transport admission;750ms strip ACK/background priority and active-opcode slot diagnostics: Selected-method lease checks precede normal Rust serial writes, retaining the old physical-owner lease until resource drop. Native HTTP now adapts donor queued priority selection, but USB request-priority scheduling, reserved macro sequence and single-inflight opcode/sequence ACK ownership remain pending; OS-inflight bytes are non-retractable. Rust USB/PnP close/open cancellation, timing and no-network handoff still require runtime acceptance. | Bluetooth transport is not Go serial acquisition or a complete firmware-file transport: S3 has no Classic/SPP/audio hardware. UART DTR/reset/acquisition/quarantine and macro-priority mechanisms are not GATT operations; existing serial implementation is preserved, not removed. Direct BLE firmware binary transfer/raw pixel streaming, authenticated encrypted/bonded BLE, full donor serial suites and real phone/RF/coexistence/mirroring acceptance remain pending in issue #20; remote firmware jobs reuse the existing updater and require its network route.","desktop/src/terminal_ui.rs:1136 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn same_hostname_reboot_revokes_drafts_and_old_receipts()] | desktop/src/peer_identity.rs:504 [UTF8-LF sha256=18eb925ae24b4f69e08205c33f12a798d73020313fcf4311d51a9118042f0979; anchor=fn usb_introduction_error_preserves_actual_board_reason_without_suggesting_policy_bypass()] | mobile/test/bridge_discovery_test.dart:37 [UTF8-LF sha256=1e650a1f6897c67ce9e87de864ff28ed98e0a818ca95ba6b413897b5cd99a905; anchor=Same-host board/boot replacement retires firmware owners synchronously] | tests/peer_fence_test.mjs:23 [UTF8-LF sha256=09291cb48a20e945aef09f5176eb9089db1bf7440fc45deb73daf9e832a456c4; anchor=Upload callbacks precede middleware] | tests/web_peer_http_test.mjs:24 [UTF8-LF sha256=db715ef84572ee0279db89cdb3bc5700bbd6e7ebe206a8fdedf335b60d60d048; anchor=Same-host reboot between draft creation and preflight] | desktop/src/peer_http.rs:1640 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_revocation_during_preflight_stops_before_write()] | desktop/src/peer_http.rs:1660 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_revocation_after_dispatch_reports_uncertainty_not_success()] | desktop/src/main.rs:887 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=// The mapping response identifies its own producer.] | desktop/src/peer_http.rs:1442 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_enveloped_read_needs_no_http_status_preflight()] | desktop/src/peer_http.rs:1459 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_foreign_or_previous_boot_response_is_never_adopted()] | desktop/src/peer_http.rs:1481 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_incomplete_or_invalid_envelope_is_not_legacy()] | desktop/src/peer_http.rs:1504 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_revoked_inflight_result_is_not_applied()] | desktop/src/peer_http.rs:1521 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_expired_queue_does_not_contact_device()] | desktop/src/peer_http.rs:1534 [UTF8-LF sha256=4e824caea5ef7bea0b2fc81af1ba1571bb7f3374582c3d641223cf0ce20cae50; anchor=fn gui_mapping_without_envelope_retains_both_legacy_status_fences()] | tests/web_access_fence_test.cpp:121 [UTF8-LF sha256=a6d3b4d5a9fd3703c6265d093acaa21bd2cb17a30cda92ba9b4e18848e322a72; anchor=Real async queue + real fence recheck] | desktop/src/usb_table.rs:1539 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn table_write_is_exact_boot_fenced_and_post_ack_values_are_not_assumed()] | mobile/test/connection_lifecycle_test.dart:254 [UTF8-LF sha256=7c3e281d1e98ee1cf49e9116a0cc8c85a9adcc33683992d225b6258dcd94bce4; anchor=Lost post-ACK readback stops bulk without discarding a fresh workspace] | desktop/src/ui/cell_table.rs:1866 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=Even identical values require the exact operation ID] | desktop/src/realtime.rs:786 [UTF8-LF sha256=134977c4f18998b92ebb2e8d763147a1c0eeb2039c019a603cb7de712502fa01; anchor=fn realtime_actual_ws_worker_delivers_receipt_without_http_or_poll_tick()] | mobile/test/live_realtime_test.dart:8 [UTF8-LF sha256=6af0113cf86b6f20fc9e28405bf7fbeb26a66805b5cd12f9bdb4ba39571a00f8; anchor=Explicit opt-in, real board mutation] | mobile/test/realtime_transport_test.dart:11 [UTF8-LF sha256=ef8a5a39abe37c40e3393cdde5b3f012dbc5a7adfc2e2cd104571ca04cd5de7e; anchor=Real loopback transport] | mobile/test/table_layout_test.dart:59 [UTF8-LF sha256=254598b19cab81a963e6319ddb9acf63675d22d8d6f451211beef89da2367abd; anchor=Cell commands and incoming state preserve both scroll axes and canvas position] | tests/cloud_command_guard_test.cpp:28 [UTF8-LF sha256=2de44ca916fe1670eba11edeb706e88dfdafc4994d0a9d07301a279ef71c0581; anchor=Receipts::Conflict] | mobile/test/workspace_lifecycle_test.dart:422 [UTF8-LF sha256=537941477dab0a2460cf42aab9220a7baf8d1aecf36eb140b21179674985071e; anchor=Background/resume retains selection] | mobile/test/realtime_transport_test.dart:74 [UTF8-LF sha256=ef8a5a39abe37c40e3393cdde5b3f012dbc5a7adfc2e2cd104571ca04cd5de7e; anchor=HTTP refresh cannot impersonate] | desktop/src/usb_table.rs:842 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()] | desktop/src/usb_table.rs:735 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()] | desktop/src/usb_table.rs:1411 [UTF8-LF sha256=13c191e37a4a881d96fb668c0ccb99fa2f168955e6abb78bb37940a629434042; anchor=fn actual_usb_worker_windows_read_latency_does_not_expire_large_capture] | tests/ble_wire_test.cpp:15 [UTF8-LF sha256=bf5675db9debf06160e8ef72d59e7c764bc3f88cde508cfcbb32a989f004c34e; anchor=int main()] | tests/ble_firmware_test.mjs:130 [UTF8-LF sha256=7bfd1e524abb6303f16bc0d9bf75a80ba892876d9c72548575954de34fd8a4f0; anchor=BLE firmware integration source guards] | tests/ble_storage_test.cpp:51 [UTF8-LF sha256=22f4c0e4fc0846492ddaa6c04a01e113ace607d86e9edeac1d2c69b8ee46a349; anchor=Do not retain an internal bulk-buffer fallback] | tests/ble_storage_stubs/esp_heap_caps.h:18 [UTF8-LF sha256=f6ff5f7843125cd7e780df39fd9d31006af9ef23070641ec580288235750365c; anchor=assert(capabilities==(MALLOC_CAP_SPIRAM|MALLOC_CAP_8BIT))] | services/remote-panel/gateway.test.mjs:87 [UTF8-LF sha256=2fdbab7b76e05249f07d126b9f655a4ff909a59291ec924d8eb2b6ec4f8455f6; anchor=Real HTTP mutation receives one board ACK/readback]","","HTTP/Web/mobile and selected USB table ownership are implemented bounded slices, not full serial/cloud parity. Remembered pairing, standalone CLI/cloud fencing, USB mapping edits, live acceptance of the newer USB pixel telemetry and AVR-only boot identity remain pending. Firmware and native USB table are live on ASUS; physical cell placement/color acceptance remains separate. | Port remaining useful serial lifecycle/priority/ACK/reset tests; fixtures/source/compile are not physical acceptance. | Measure S3 internal8-bit heap free/largest/minimum after explicit BLE PSRAM allocation and with real GATT/Wi-Fi/OTA activity. Verify missing-PSRAM startup leaves Wi-Fi/USB usable and no callback outlives its owner. Allocator/protocol fixtures and estimated BSS savings are not heap/radio/coexistence or physical programming acceptance.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/link/session_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","ff6c7b21f72bfb944d232c87210f8ffa139dfe016e8b5756f2582604489fffc4","peer-binding","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","tests/protocol_test.cpp:76 [UTF8-LF sha256=b3ae3673e4953e4b44251d2b17482e08c27c9ed6664db283fc74d03943033d04; anchor=Adapt donor matching-identity/request assertions] | desktop/src/terminal_ui.rs:1412 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn server_reboot_between_preflight_and_post_stops_without_replay()] | desktop/src/peer_http.rs:1567 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_settings_pin_every_nested_request_and_verify_same_boot()] | desktop/src/usb_table.rs:102 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=pub struct Operation]","Actual fakePort matching/mismatched request and identity scenarios read fully and adapted to C++ peer validation and native same-host reboot/pinned-header/409 no-replay HTTP fixtures. | Old receipts stay in Events, not new peer's confirmed output. | Full session_test.go reread through EOF and live hash reverified. Admission revocation, peer mismatch and no-replay assertions adapted to actual native GUI HTTP loopback fixtures, not claims of importing Go fakePort acquisition/reset/ACK routing. | Reread complete donor at unchanged live hash; mismatch/admission assertions now also execute real WebAccess middleware and AsyncHttpService with SDK/transport/auth doubles. Retired queued probe never reaches the simulated hardware call or replays. This does not validate Basic-auth parsing, physical ISP or downstream AVR epoch. | Reread current canonical Session, fakePort and request_admission_test.go. Adapt actual control-over-background admission between unsent USB snapshot chunks, without overtaking an in-flight request or post-ACK verification. The production Rust worker now validates matching sequence/opcode ACK plus compact same-boot board-observed state, rather than delaying confirmation for all480 RGB pixels, mappings and icon metadata. Full captures still own capability/peripheral freshness and actual RGB; partial readback does not renew those observations. Missing companion uses read-only full verification, never mutation replay. Production-worker fragmented-port and wrong-boot/scalar/state fixtures cover this scoped adaptation, not all donor reset/open/750ms strip contracts.","serialOpenWithPending/late acquisition/configuration cancellation/close retry, preclose ordering and terminal error ownership; corresponding fakePort tests [pending] | priority requestAdmission, sequence/opcode-matched ACK/Error/events, reserved macro sequence, boot HELLO retry and recoverable decoder overflow tests [pending] | compact HELLO schemas/build stamp and DTR reset/inactive control-line tests [pending]","serialOpenWithPending/late acquisition/configuration cancellation/close retry, preclose ordering and terminal error ownership; corresponding fakePort tests: Useful serial lifecycle/quarantine has no equivalent in HTTP-only TUI. Adapt with actual Rust USB owner before discovery/reconnect; never close another client's port. | priority requestAdmission, sequence/opcode-matched ACK/Error/events, reserved macro sequence, boot HELLO retry and recoverable decoder overflow tests: HTTP fencing is not downstream AVR ACK/decoder ownership. These production behaviors and exact tests remain pending with USB/UART host integration. | compact HELLO schemas/build stamp and DTR reset/inactive control-line tests: Build stamp is not board/boot identity; numbered public generation negotiation conflicts with living API. Adapt additive identity and explicit one-shot reset policy with serial owner, without schema selectors/reset-on-connect.","desktop/src/terminal_ui.rs:1484 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn shared_cli_mutation_inherits_pinned_epoch_headers()] | tests/peer_fence_test.mjs:23 [UTF8-LF sha256=09291cb48a20e945aef09f5176eb9089db1bf7440fc45deb73daf9e832a456c4; anchor=Upload callbacks precede middleware] | desktop/src/peer_http.rs:1596 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_preflight_reboot_or_capability_loss_never_dispatches_mutation()] | desktop/src/peer_http.rs:1629 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_readback_from_new_boot_is_not_applied()] | desktop/src/peer_http.rs:1688 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_unfenced_mutation_fails_before_network_and_preserves_correlation()] | desktop/src/peer_http.rs:1613 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_server_boot_conflict_is_not_replayed()] | tests/web_access_fence_test.cpp:121 [UTF8-LF sha256=a6d3b4d5a9fd3703c6265d093acaa21bd2cb17a30cda92ba9b4e18848e322a72; anchor=Real async queue + real fence recheck] | desktop/src/usb_table.rs:843 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()] | desktop/src/usb_table.rs:736 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()]","","GUI HTTP and Web pin adoption implemented as bounded slices; native WebSocket/USB/mobile/standalone CLI/cloud fencing, remembered pairing and AVR-only boot identity remain pending; ESP32-S3 application not integrated. | Port remaining useful serial lifecycle/priority/ACK/reset tests; fixtures/source/compile are not physical acceptance.","Not established by source/hash/test-code comparison; see issue #2" +"PCController","Tools/Controller/internal/link/session.go","b0111ae0c80dc34149ea1044de7dd5488920301b","1311fdcde94b2ef8ed06db63ff874a255c135dc1969709e6f43ff4b5c5c8235b","usb-otg | bluetooth | connection-resilience | peer-binding","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10 | https://github.com/atomicdeploy/PakarController/issues/20","parity-gap","complete","desktop/src/terminal_ui.rs:806 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn command_request(] | mobile/lib/api.dart:2090 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=bool _acceptIdentity(] | mobile/lib/main.dart:218 [UTF8-LF sha256=814e5944b0f27d21f2005ff4bfa8e391dc5721435e25f9c40ccf2c934090a7db; anchor=api.onPeerChanged = ()] | mobile/lib/bridge.dart:373 [UTF8-LF sha256=6b7fe15e223d7a110972adc698dc66e739f956f596ed265894445f333676df98; anchor=watchdog = Timer.periodic] | libraries/BoardCore/src/PeerFence.h:31 [UTF8-LF sha256=9f1ab63252bd881d2fc786e230a18db331e66708a1bd3ccd0f096d2d2b5d49d5; anchor=inline bool accepts(] | firmware/esp/src/WebAccess.h:92 [UTF8-LF sha256=774b524f4cd81c003e4139d0bb6cf3353d987674bbfb49d7a1b989ee2a232294; anchor=bool peerAllowed(] | firmware/esp/application.ino:2077 [UTF8-LF sha256=a607abb53d7834663853f2adb45286361d9d5b1cf82edb0d18ee11c9d9a74c41; anchor=bool authenticate()] | assets/web/peer-http.js:90 [UTF8-LF sha256=9613bb23bfa007afcde525d49a193b25b93788b0f24e6a0374ce4f49560f8f9e; anchor=function assertOwner(peer)] | desktop/src/peer_http.rs:590 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=pub fn admit(] | desktop/src/main.rs:847 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=fn scoped_http_request(] | desktop/src/usb_table.rs:572 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=pub struct Admission] | mobile/lib/command_readback.dart:14 [UTF8-LF sha256=c920c79353178bfb46aaed6e80a467951b9131f7f3cab0653d970f6408d8703c; anchor=bool commandReadbackMatches(] | desktop/src/cell_batch.rs:16 [UTF8-LF sha256=453787112bc914d571886b1a64a1244552d2041548bf0ea97f65e448dce7b389; anchor=pub struct Correlation] | desktop/src/realtime.rs:8 [UTF8-LF sha256=134977c4f18998b92ebb2e8d763147a1c0eeb2039c019a603cb7de712502fa01; anchor=pub struct Intent] | mobile/lib/command_wire.dart:49 [UTF8-LF sha256=5b60bf4d43874d5ef071dbc118cbbc581c2c59d1af8491116aba56570298a3cb; anchor=String commandPacket(] | libraries/BoardCore/src/CommandReceipts.h:8 [UTF8-LF sha256=061d79642fdeb1e07f528a63438ba466c3784fc96aef7ff9ca881508675dd2dc; anchor=class CommandReceipts] | mobile/lib/table_workspace.dart:13 [UTF8-LF sha256=02445683146ff2b3bdca50bfa8d1aa1dedb94261c361613fdb545e7ca4f7c83e; anchor=class TableWorkspace] | libraries/BoardCore/src/BleWire.h:31 [UTF8-LF sha256=e6b8a769227fed14658e25d2f21be2773e2607902abd79cf91cd03eda22c7230; anchor=class Receiver] | firmware/esp32s3/src/BleService.h:71 [UTF8-LF sha256=7274cd7a20d0a67ca68e924b2792778d9a86ece8ce837a0a1fa518d744a67b94; anchor=class BleService] | firmware/esp32s3/src/BleStorage.h:21 [UTF8-LF sha256=1b0b11d0d1f7f398699629ccdbd32d11e3308aef5f738f5963fcfd1d176d81e8; anchor=class BleBulkOwner] | firmware/esp/src/BleRoutes.h:219 [UTF8-LF sha256=b89a7a050b6f1f4121d8de0809dfce67cca404170e40a252cce66e95e5aa7b5d; anchor=String bleRequest(] | services/remote-panel/gateway.mjs:12 [UTF8-LF sha256=6092a0b79c3277ef171d25e4228b42831eb06990689b84f40101b9b898ac872a; anchor=export class Gateway] | services/remote-panel/service.mjs:13 [UTF8-LF sha256=724a7a0167e09af540c7dc6329bd2cc7ae5ed7ce496dfeaa3297a1b6d06a3737; anchor=export function createPanel] | desktop/src/peer_identity.rs:360 [UTF8-LF sha256=bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2; anchor=pub fn usb_introduction_error(]","Lamp-background checkpoint reread all 916 canonical donor lines plus native HTTP admission/producer-envelope checks, selected serial lease and batch ACK correlation. Flutter peer-retirement/command admission/readback and lifecycle proof inspected after compact-footer change. New app-local CellBackgrounds command never enters board request queue or replay path. Only inspected consumers rebound; no new hardware/transport acceptance. | Actual Session.Request closing/context checks before and after admission adapted to TUI atomic stop checks before/after fresh preflight; no post-dispatch replay. | Full source read. Fail-closed identity checks strengthened with HTTP server-side board/boot fences; donor HELLO/build stamp is NOT a boot epoch. | Before/after admission ownership checks also adapted to Web's shared pinned HTTP preflight and post-response generation validation. Existing session.go full review/live 1bf4d52 hash remains unchanged; this is not import of Go serial acquisition or request-priority scheduling. | Full session.go reread through EOF and live source hash reverified. Actual acquireWrite/requestAdmission before/after admission closing checks adapted to native HTTP queued generation, deadline and post-preflight ownership checks. Shared native/TUI strict Pin validation removes the duplicate validator; pinned clients refuse redirects. | Reread complete donor at unchanged live hash for firmware admission/dispatch ownership. Supplied HTTP headers are checked for all methods including hardware-affecting GET probe; actual loop dispatch rechecks the same request before SPI/reset. Header-free compatibility is deliberately unfenced, not ownership proof. | Fully reread current session.go and session_test.go for Android networking. Adapted actual SetBeforeClose/notifyBeforeClose synchronous retirement into mobile HTTP/WebSocket board/boot acceptance, root state revocation and discarded prior firmware owners. Learned critical identity cannot silently disappear into legacy readiness. A one-second bridge watchdog is independent from the chosen telemetry interval, and retired MQTT callbacks cannot publish through a replacement client. | Canonical b0111ae0 session.go916lines fully reread through EOF; old1bf4d52 review remains historical. Existing bounded HTTP/mobile ownership targets do not imply current whole serial-session parity. Frozen native transport targets were separately reviewed: selected-method epoch Gate/Stamp/Lease, before-write lease checks, actual USB handle drop before handoff, HTTP/WS lease retention, no idle HTTP connection pool, no Both fallback and stale-event retirement. | Matched opcode/sequence admission and no-replay principles now also govern actual USB table commands. UI-captured connection stamp, physical-open session, board/boot pin and enqueue time survive the queue unchanged; admission is checked before queueing and before writing. Frozen snapshot chunks validate nonce/token/offset/size, retain capture-start freshness, and a new same-peer capture after ACK verifies requested values. This is a scoped Rust adaptation, not all donor priority/reset/AVR contracts. | Mobile explicit Disconnect retires polling, retries and old live callbacks. Cell/output/mode/effect/brightness mutations require fresh preflight and post-ACK readback; failed confirmation stops bulk without optimistic success. Android direct USB is not implemented or offered as a working connection. | Actual last-published 480-pixel RGB now travels in the same bounded frozen USB capture through the existing Frame parser, with capture-start freshness, matching mapping and current-peer admission. USB readback also synchronizes observed effect; there is no Wi-Fi fallback or fabricated six-pixel preview. This newer source passes197 native tests but is not yet deployed because the ASUS tunnel failed. | Stress audit fixes same-count foreign receipts: immutable local operation ID, exact selection/state/effect, Pin and route survive HTTP/USB admission/result. UI compares its own correlation; USB rejects payload/admission mismatch. Full donor priority scheduling is not claimed. | Reread the full current Session source for the live ASUS queue failure. Actual grantNextLocked highest-priority/strict-greater FIFO selection is now adapted to a bounded64-entry native HTTP waiting window: foreground commands overtake unsent status/mapping and optional configuration work, without preempting an in-flight request. Mutations retain8s expiry and revocable generation/board/boot fencing; read-only work has a separate24s bound. Atomic batches reuse the worker's fresh preflight rather than running it twice, retaining final admission, one POST, ACK and same-boot readback. This does not import USB sequence allocation, DTR/reset defaults or serial priority scheduling. | Actual Session admission/matched-ACK/no-replay principles now guard WebSocket-first native/mobile commands. One random intent ID, bounded boot-relative deadline and exact packet digest survive same-intent HTTP recovery. The loop-owned RAM receipt cache consumes before mutation and never evicts an unexpired ID. Immediate same-board state accompanies each ACK; other clients receive immediate state pushes. Older HTTP reads cannot roll newer state back. Flutter keeps both scroll controllers and a fixed result slot through pending/completed writes without renewing expired telemetry. This scoped adaptation does not import serial sequence allocation, reset defaults or all donor contracts. | Separate command authority from board-keyed Flutter user workspace state: lifecycle pauses timers, not a healthy socket; resume probes the same socket before HTTP fallback; silent sockets have independent WS freshness and bounded reconnect. Stale or foreign leases disable writes without destroying selection, search, drafts or scroll. Hidden settings no longer issue periodic network/AVR reads. No old mutation is queued or replayed. | Reread current canonical Session, fakePort and request_admission_test.go. Adapt actual control-over-background admission between unsent USB snapshot chunks, without overtaking an in-flight request or post-ACK verification. The production Rust worker now validates matching sequence/opcode ACK plus compact same-boot board-observed state, rather than delaying confirmation for all480 RGB pixels, mappings and icon metadata. Full captures still own capability/peripheral freshness and actual RGB; partial readback does not renew those observations. Missing companion uses read-only full verification, never mutation replay. Production-worker fragmented-port and wrong-boot/scalar/state fixtures cover this scoped adaptation, not all donor reset/open/750ms strip contracts. | Reread actual Session admission/ACK ownership for the ten-minute ASUS failure. Native immutable reads use a verified-token four-chunk window and one absolute8s capture/freshness deadline, not a premature2s per-fragment timeout. Mutation ACK/deadline/no-replay rules are unchanged. Capture progress is a bounded typed owner-IPC observation, not toast identity; verified same-board presentation survives read failure and wire reacquisition without renewing old hardware authority. | Bluetooth slice: fully reread canonical b0111ae0 Session source (SHA1311fdcde...), not the old ../repos copy. Adapted RequestWithPriority/acquireWrite/WithRequestWriteGuard, consumed single-inflight admission and synchronous close fencing to S3 main-loop GATT ingress and targeted replies. Existing CommandReceipts and shared business/configuration/update handlers remain authoritative; fragment ACK is not a command receipt. | Memory-pressure review retains those exact ownership/wire rules while moving all eight BLE ingress slots and the unchanged whole Receiver/Sender into one PSRAM-only BleBulkStorage lifetime allocation before BLEDevice::init. Missing storage prevents BLE startup/admission, with no scarce-DRAM fallback. Fences/disable/reconnect reset session state but never free/replace storage underneath callbacks. Internal mutexes/atomics/callback owners, INFO bytes and SDK/LED timing-critical memory remain internal; pure BleWire protocol source is unchanged. | Actual Arduino-ESP32 3.3.12 cores/esp32/esp32-hal-psram.c was read through EOF (original-byte SHA2562f47f8b635de8ffb64d160576a2705b063235fb9f54e01b98e8d2bf3f48352bd). Its explicit MALLOC_CAP_SPIRAM|MALLOC_CAP_8BIT allocation/no-internal-fallback boundary is used by the new Pakar owner. The Go donor does not implement S3 PSRAM or NimBLE allocation; this platform adaptation does not transplant or relabel serial buffers, and does not override the prebuilt SDK's internal-only NimBLE pool/host-stack settings. | Reread canonical Session source at SHA1311fdcde94b2ef8ed06db63ff874a255c135dc1969709e6f43ff4b5c5c8235b for the native mapping failure. Adapt its before/after admission and matched-response ownership principles: a current pinned mapping GET validates the response producer board/boot plus the unexpired, still-current scope, without an unrelated HTTP status preflight. Foreign or incomplete producer envelopes reject without fallback. An absent envelope is discarded before the original status -> mapping -> status legacy fences run; no stale mapping survives a changed board/boot. Six actual loopback HTTP fixtures passed via the canonical native gui_mapping filter. ASUS build12 runtime separately confirmed80 mappings with no active incidents on the selected current peer; that is not a long-soak, pixel RGB, or physical cell-order acceptance. | BLE lifecycle remains a scoped S3 SDK adaptation, not an unreviewed donor feature: missing/corrupt settings default Off; runtime enable persists intent without entering unbounded SDK initialization in the loop; disable retires late owners and honestly requires reboot to release retained SDK pools. Compile exclusion preserves loaded intent and rejects enabling unavailable hardware. Pure real-owner fixtures cover missing/corrupt records, reboot state, exclusion and request admission; no claim of SDK init timeout or BLE/TLS/OTA coexistence. | Temporary Internet panel: canonical b0111ae0 Session source reread through EOF and blob SHA1311fdcde reverified, distinct from older ../repos checkout SHAe171bf35. Adapted matched-request/ACK ownership, pre-dispatch board/boot admission and synchronous disconnect retirement to existing MQTT CloudCommandGuard. Each QoS0/non-retained mutation is sent once and requires correlated ACK plus fresh same-boot readback. Retained data grants no control lease. Real HTTP/WebSocket auth and Origin tests cover this slice, not serial/AVR/physical LED acceptance. | Canonical Session source reread fully for USB health; RemoteError/decodeRemoteError preserve actual correlated opcode and device code. Rust USB introduction now distinguishes invalid report/capacity, Busy, safety rejection and Unsupported instead of classifying all failures as release mismatch. Malformed replies remain explicit; no admission override or retry added. Actual ASUS reconnect passed on the current ESP; this change does not claim the historical rejection cause was reproduced. | Native UI checkpoint gate rereview is scoped, not a new complete-file donor review: canonical RequestWithPriority, acquireWrite, writeRawContext, SetBeforeClose and notifyBeforeClose were reread against mobile initState retirement callbacks, _command, Api.settledStatus/_acceptIdentity, TableWorkspace restoration/snapshot and changed lifecycle assertions. Prior full donor certification and original-byte hash remain unchanged. Connection ownership, synchronous peer/boot retirement, matched post-ACK readback and no mutation replay remain intact. Color labels, canonical selection, key positions and indicator placement are presentation only; pixel-only events require the presented board/boot without freshness renewal. Changed tests locate the moved display option and retain zero-write, selection and both-scroll-axis assertions. No new runtime or hardware acceptance is claimed.","serialOpenWithPending/late acquisition/configuration cancellation/close retry, preclose ordering and terminal error ownership; corresponding fakePort tests [pending] | priority requestAdmission, sequence/opcode-matched ACK/Error/events, reserved macro sequence, boot HELLO retry and recoverable decoder overflow tests [pending] | compact HELLO schemas/build stamp and DTR reset/inactive control-line tests [pending] | WithRequestWriteGuard final transport admission;750ms strip ACK/background priority and active-opcode slot diagnostics [pending] | Bluetooth transport is not Go serial acquisition or a complete firmware-file transport [pending]","serialOpenWithPending/late acquisition/configuration cancellation/close retry, preclose ordering and terminal error ownership; corresponding fakePort tests: Useful serial lifecycle/quarantine has no equivalent in HTTP-only TUI. Adapt with actual Rust USB owner before discovery/reconnect; never close another client's port. | priority requestAdmission, sequence/opcode-matched ACK/Error/events, reserved macro sequence, boot HELLO retry and recoverable decoder overflow tests: HTTP fencing is not downstream AVR ACK/decoder ownership. These production behaviors and exact tests remain pending with USB/UART host integration. | compact HELLO schemas/build stamp and DTR reset/inactive control-line tests: Build stamp is not board/boot identity; numbered public generation negotiation conflicts with living API. Adapt additive identity and explicit one-shot reset policy with serial owner, without schema selectors/reset-on-connect. | WithRequestWriteGuard final transport admission;750ms strip ACK/background priority and active-opcode slot diagnostics: Selected-method lease checks precede normal Rust serial writes, retaining the old physical-owner lease until resource drop. Native HTTP now adapts donor queued priority selection, but USB request-priority scheduling, reserved macro sequence and single-inflight opcode/sequence ACK ownership remain pending; OS-inflight bytes are non-retractable. Rust USB/PnP close/open cancellation, timing and no-network handoff still require runtime acceptance. | Bluetooth transport is not Go serial acquisition or a complete firmware-file transport: S3 has no Classic/SPP/audio hardware. UART DTR/reset/acquisition/quarantine and macro-priority mechanisms are not GATT operations; existing serial implementation is preserved, not removed. Direct BLE firmware binary transfer/raw pixel streaming, authenticated encrypted/bonded BLE, full donor serial suites and real phone/RF/coexistence/mirroring acceptance remain pending in issue #20; remote firmware jobs reuse the existing updater and require its network route.","desktop/src/terminal_ui.rs:1136 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=fn same_hostname_reboot_revokes_drafts_and_old_receipts()] | desktop/src/peer_identity.rs:505 [UTF8-LF sha256=bb0f401dac454544bc8ac561c36b79e3c0963ca5d7a1cacc72a1ee8380d930d2; anchor=fn usb_introduction_error_preserves_actual_board_reason_without_suggesting_policy_bypass()] | mobile/test/bridge_discovery_test.dart:37 [UTF8-LF sha256=1e650a1f6897c67ce9e87de864ff28ed98e0a818ca95ba6b413897b5cd99a905; anchor=Same-host board/boot replacement retires firmware owners synchronously] | tests/peer_fence_test.mjs:23 [UTF8-LF sha256=09291cb48a20e945aef09f5176eb9089db1bf7440fc45deb73daf9e832a456c4; anchor=Upload callbacks precede middleware] | tests/web_peer_http_test.mjs:24 [UTF8-LF sha256=db715ef84572ee0279db89cdb3bc5700bbd6e7ebe206a8fdedf335b60d60d048; anchor=Same-host reboot between draft creation and preflight] | desktop/src/peer_http.rs:1646 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_revocation_during_preflight_stops_before_write()] | desktop/src/peer_http.rs:1666 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_revocation_after_dispatch_reports_uncertainty_not_success()] | desktop/src/main.rs:889 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=// The mapping response identifies its own producer.] | desktop/src/peer_http.rs:1448 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_enveloped_read_needs_no_http_status_preflight()] | desktop/src/peer_http.rs:1465 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_foreign_or_previous_boot_response_is_never_adopted()] | desktop/src/peer_http.rs:1487 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_incomplete_or_invalid_envelope_is_not_legacy()] | desktop/src/peer_http.rs:1510 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_revoked_inflight_result_is_not_applied()] | desktop/src/peer_http.rs:1527 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_expired_queue_does_not_contact_device()] | desktop/src/peer_http.rs:1540 [UTF8-LF sha256=ae1b14ad237c9e218d29f7eb3076cda183ec267a73394f9c05ca2bf13469270b; anchor=fn gui_mapping_without_envelope_retains_both_legacy_status_fences()] | tests/web_access_fence_test.cpp:121 [UTF8-LF sha256=a6d3b4d5a9fd3703c6265d093acaa21bd2cb17a30cda92ba9b4e18848e322a72; anchor=Real async queue + real fence recheck] | desktop/src/usb_table.rs:1540 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn table_write_is_exact_boot_fenced_and_post_ack_values_are_not_assumed()] | mobile/test/connection_lifecycle_test.dart:254 [UTF8-LF sha256=7c3e281d1e98ee1cf49e9116a0cc8c85a9adcc33683992d225b6258dcd94bce4; anchor=Lost post-ACK readback stops bulk without discarding a fresh workspace] | desktop/src/ui/cell_table.rs:1866 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=Even identical values require the exact operation ID] | desktop/src/realtime.rs:786 [UTF8-LF sha256=134977c4f18998b92ebb2e8d763147a1c0eeb2039c019a603cb7de712502fa01; anchor=fn realtime_actual_ws_worker_delivers_receipt_without_http_or_poll_tick()] | mobile/test/live_realtime_test.dart:8 [UTF8-LF sha256=6af0113cf86b6f20fc9e28405bf7fbeb26a66805b5cd12f9bdb4ba39571a00f8; anchor=Explicit opt-in, real board mutation] | mobile/test/realtime_transport_test.dart:11 [UTF8-LF sha256=ef8a5a39abe37c40e3393cdde5b3f012dbc5a7adfc2e2cd104571ca04cd5de7e; anchor=Real loopback transport] | mobile/test/table_layout_test.dart:59 [UTF8-LF sha256=254598b19cab81a963e6319ddb9acf63675d22d8d6f451211beef89da2367abd; anchor=Cell commands and incoming state preserve both scroll axes and canvas position] | tests/cloud_command_guard_test.cpp:28 [UTF8-LF sha256=2de44ca916fe1670eba11edeb706e88dfdafc4994d0a9d07301a279ef71c0581; anchor=Receipts::Conflict] | mobile/test/workspace_lifecycle_test.dart:422 [UTF8-LF sha256=537941477dab0a2460cf42aab9220a7baf8d1aecf36eb140b21179674985071e; anchor=Background/resume retains selection] | mobile/test/realtime_transport_test.dart:74 [UTF8-LF sha256=ef8a5a39abe37c40e3393cdde5b3f012dbc5a7adfc2e2cd104571ca04cd5de7e; anchor=HTTP refresh cannot impersonate] | desktop/src/usb_table.rs:843 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn actual_usb_worker_preempts_large_preview_and_confirms_compact_board_readback()] | desktop/src/usb_table.rs:736 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn compact_usb_readback_validates_all_values_without_renewing_full_observations()] | desktop/src/usb_table.rs:1412 [UTF8-LF sha256=7991f9c24f579b05d0d3a07a5af2ecbba0ed13da93ab88b7fed226ff41d9aec1; anchor=fn actual_usb_worker_windows_read_latency_does_not_expire_large_capture] | tests/ble_wire_test.cpp:15 [UTF8-LF sha256=bf5675db9debf06160e8ef72d59e7c764bc3f88cde508cfcbb32a989f004c34e; anchor=int main()] | tests/ble_firmware_test.mjs:130 [UTF8-LF sha256=7bfd1e524abb6303f16bc0d9bf75a80ba892876d9c72548575954de34fd8a4f0; anchor=BLE firmware integration source guards] | tests/ble_storage_test.cpp:51 [UTF8-LF sha256=22f4c0e4fc0846492ddaa6c04a01e113ace607d86e9edeac1d2c69b8ee46a349; anchor=Do not retain an internal bulk-buffer fallback] | tests/ble_storage_stubs/esp_heap_caps.h:18 [UTF8-LF sha256=f6ff5f7843125cd7e780df39fd9d31006af9ef23070641ec580288235750365c; anchor=assert(capabilities==(MALLOC_CAP_SPIRAM|MALLOC_CAP_8BIT))] | services/remote-panel/gateway.test.mjs:87 [UTF8-LF sha256=2fdbab7b76e05249f07d126b9f655a4ff909a59291ec924d8eb2b6ec4f8455f6; anchor=Real HTTP mutation receives one board ACK/readback]","","HTTP/Web/mobile and selected USB table ownership are implemented bounded slices, not full serial/cloud parity. Remembered pairing, standalone CLI/cloud fencing, USB mapping edits, live acceptance of the newer USB pixel telemetry and AVR-only boot identity remain pending. Firmware and native USB table are live on ASUS; physical cell placement/color acceptance remains separate. | Port remaining useful serial lifecycle/priority/ACK/reset tests; fixtures/source/compile are not physical acceptance. | Measure S3 internal8-bit heap free/largest/minimum after explicit BLE PSRAM allocation and with real GATT/Wi-Fi/OTA activity. Verify missing-PSRAM startup leaves Wi-Fi/USB usable and no callback outlives its owner. Allocator/protocol fixtures and estimated BSS savings are not heap/radio/coexistence or physical programming acceptance.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/link/tcp_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","11034d7cfc3b986c1c049780f511a01078745529e71c021f2af2b5ad492b63de","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/localdevice/client_test.go","b0111ae0c80dc34149ea1044de7dd5488920301b","fc80471b4d729864cf128aa83594847377724aad9b682baa5f957a4818aa0957","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","Tools/Controller/internal/localdevice/client.go","b0111ae0c80dc34149ea1044de7dd5488920301b","fd9011efc91c7cf8f9ec27d0e5ef125ca0dc74613673a0df9ff34974004ebe15","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" @@ -1595,645 +1595,651 @@ "PCController","Tools/VirtualBoard/tests/uart_protocol_test.cpp","b0111ae0c80dc34149ea1044de7dd5488920301b","56c0474a5f0a7475340ec22e718b262b61a449820eb958403cd47bc36b1497c7","uart-flow-control | firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","tests/serial_link_test.cpp:1 [UTF8-LF sha256=c103ffb2c7530bb4c85373433b123fe072bb6649f2d97b82f70fa08d404eeae8; anchor=Adapt actual PCController Tools/VirtualBoard/tests/uart_protocol_test.cpp]","Fully read all seven actual donor scenarios. Adapted representative/consecutive-zero/max48 payload, optional opcode dispatch, nested ACK stability, split RX with synchronous TX, oversized noise/yield/delimiter recovery and malformed/CRC rejection to actual shared SerialLink. | Added2048-byte ring/64-byte pass, negative occupancy/read, failed-write/no-automatic-replay, explicit S3 Stream setup preservation, ESP32 counters and all three flow-profile readiness assertions.","testBuzzerPushCarriesMCUTimestamp and separate framing/CRC counter assertions [pending] | testUnknownReservedEnvelopeByteDoesNotBlockSemanticFrames [replaced] | framePayloadScratch macro mutation test fixture [replaced]","testBuzzerPushCarriesMCUTimestamp and separate framing/CRC counter assertions: Timestamped raw donor events and separate counter layout are not yet adapted to Pakar clients/contracts. Port those exact assertions with their production projection instead of deleting useful behavior or declaring parity. | testUnknownReservedEnvelopeByteDoesNotBlockSemanticFrames: Pakar fixed reserved-zero integrity rejection is intentionally retained and covered in existing protocol_test.cpp. Optional opcode semantic-dispatch test is adapted independently; no product generation or alias introduced. | framePayloadScratch macro mutation test fixture: SerialLink exposes no mutable TX scratch API. The test exercises split RX plus an actual synchronous ACK between halves and nested response stability, preserving the ownership behavior without fabricating a missing macro scratch interface.","tests/serial_link_test.cpp:52 [UTF8-LF sha256=c103ffb2c7530bb4c85373433b123fe072bb6649f2d97b82f70fa08d404eeae8; anchor=Actual donor split-RX/synchronous-TX isolation]","One stable tiny test executable reused for all modes; no donor build or debug cache.","Port remaining useful counter/timestamp tests when their actual production path is implemented. | Loopback C++ tests do not prove S3 driver compile, physical link, overflow stress or zero loss.","Not established by source/hash/test-code comparison; see issue #2" "PCController","update-dependencies.cmd","b0111ae0c80dc34149ea1044de7dd5488920301b","55d82c3bbf3442896b4925feefea0f99947c21197d778be8300c0ad6d291fcf6","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "PCController","update-dependencies.sh","b0111ae0c80dc34149ea1044de7dd5488920301b","13c48f64f01258c4e29f68a555b4086350b67a6f8d120e2d6868dbd83a68fa12","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer",".editorconfig","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","37e91dcad62ebe914b670a69a6051bd84d96e444e639cad67b7b48e0b9f5f0ac","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer",".gitattributes","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","547f59603028195ff9f8a87d04c4651551e8bd0d68f075257dfd549cd846b25b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer",".github/dependabot.yml","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fa4791635251ad7d5be26ce70d71a8e59aa7b814a4f09f2b5b749d8a49908225","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","scoped-improvement","complete",".github/dependabot.yml:1 [UTF8-LF sha256=136887ba77b56544d0bcd367a31d2daaa7637ecdb8b997d63df6cb552d6f08e8; anchor=version: 2]","Actual donor weekly grouped github-actions and Cargo updates, with Cargo path adapted to the existing desktop workspace.","npm updates at /web_ui [not-applicable]","npm updates at /web_ui: Pakar has no /web_ui/package.json or Vite runtime. Embedded Web/tests use Node built-ins; Flutter's actual /mobile Pub dependency contract is covered instead.","tests/repository_governance_test.mjs:105 [UTF8-LF sha256=2c8393bbd1463ce367cff24d72110a96e53e664824d780f2e66a2c8f8930bda1; anchor=console.log('Repository governance]","Adds grouped Pub updates for the actual Android client and label routing while retaining weekly grouped Actions/Cargo updates.","","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer",".github/workflows/ci-cd.yml","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bba9a295ee7b59e318f76e0b6f6a80f0aec631e249f7d8c798f6c92c0bb7fd8c","github-coordination | repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete",".github/workflows/build.yml:2 [UTF8-LF sha256=2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e; anchor=name: ""🚀 Build · Test · Release""] | tools/build-desktop.ps1:47 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=--test-threads=1] | tools/ci-checks.mjs:278 [UTF8-LF sha256=ccc3d394d143d99959677140fe0321c1a9826f6963de91433dd30e7a51c9ec8a; anchor=export function runChecks] | tools/prepare-release.mjs:18 [UTF8-LF sha256=820cefc9698d46f95cf39b4cd667494a05cd03d119a1c54f9892b2a35d8b824b; anchor=export function firmwareManifest]","Actual donor branch/PR/tag/dispatch/merge-group triggers, concurrency policy, pinned actions without checkout credentials, health-before-build jobs, timeouts, Rust cache reuse, locked tests/builds, packaging, curated notes, manifest/checksums/provenance and aggregate results adapted to current Windows/ESP/AVR/Android targets. | Release content is gated on all supported-target builds, created as an immutable draft prerelease, with the matched S3/AVR buffered pair and raw HTTPS update manifests. Explicit legacy packaging is preserved but the overflowing ESP8266 image is not promised as a release output. Untrusted PRs do not execute publishing code with a write token. | Actual donor serial native test execution, isolated test configuration and RUST_BACKTRACE=1 restored. Runtime harness flags are separated from compile jobs; immediate panic output remains available even if a later test aborts before its summary.","LIBMPV_WINDOWS_RELEASES_API_URL, MPV_DLL_PATH, Windows GNU libmpv linking, Linux/macOS mpv dependencies and standalone pealayer-downloader [not-applicable] | macOS Intel/Apple silicon and Linux native platform matrix/packages [pending] | UPX checksum-locked packing and packed native package smoke/resource checks [pending] | branch-tag and archive suffix creation, softprops update-existing release [replaced]","LIBMPV_WINDOWS_RELEASES_API_URL, MPV_DLL_PATH, Windows GNU libmpv linking, Linux/macOS mpv dependencies and standalone pealayer-downloader: Pakar deliberately excludes the media runtime and standalone media utility. Copying this setup would introduce forbidden mpv and unrelated package dependencies. | macOS Intel/Apple silicon and Linux native platform matrix/packages: Current accepted native target is Windows; firmware and Android use Linux runners. Full donor reread includes the new scripts/run-ci-rust-tests.sh macOS sampling helper and 15-minute native test step. Linux/macOS native matrix and diagnostic sampling remain useful pending work; they require actual Pakar platform coverage, not donor's unrelated acceptance. | UPX checksum-locked packing and packed native package smoke/resource checks: Existing Windows wrappers preserve donor resource/donor/cache gates and CLI runtime tests, but Pakar has no accepted compressed native package probe. Do not call a source or CLI test full packed GUI runtime acceptance. | branch-tag and archive suffix creation, softprops update-existing release: User requests stable names without random/time suffixes. Version releases keep stable package names; release enumeration must succeed and an existing release is not overwritten.","tests/build_storage_test.ps1:17 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=Actual donor serial test contract] | tests/repository_governance_test.mjs:105 [UTF8-LF sha256=2c8393bbd1463ce367cff24d72110a96e53e664824d780f2e66a2c8f8930bda1; anchor=console.log('Repository governance]","","The historical 8849ab8 menu failure was subsequently fixed; 5d02b07 Build 38141677102 and CodeQL 38141677110 pass. This is not production/deployment proof. Validate the unexecuted draft publisher, useful additional native targets, donor macOS diagnostics and optional compressed package/runtime verification.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer",".github/workflows/codeql.yml","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fc3c298cf966d77f50b575614b4c26f24f1606459f07749a46880cd482f1cb53","github-coordination | repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","equivalent-behavior","complete",".github/workflows/codeql.yml:2 [UTF8-LF sha256=0ced3b7ee236102d9322f20ee0e4a37347aae41d791d48c38731f96daf4bdfba; anchor=name: ""🛡️ Security · CodeQL""]","Actual donor Actions and JavaScript matrix, no-build security-extended queries, pinned checkout/CodeQL actions, no persisted checkout credentials, PR/main/schedule/dispatch/merge-group triggers, cancellation, timeouts and fail-closed aggregate summary.","Pealayer React/Vite names, packages:read permission and branded prose [replaced]","Pealayer React/Vite names, packages:read permission and branded prose: Pakar analyzes embedded Web/scripts and Actions, not Pealayer React. Package read permission is unnecessary for these none-build scans; Rust/C++ coverage is explicitly not invented.","tests/repository_governance_test.mjs:105 [UTF8-LF sha256=2c8393bbd1463ce367cff24d72110a96e53e664824d780f2e66a2c8f8930bda1; anchor=console.log('Repository governance]","","","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer",".gitignore","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","65880959cad401160df570618e66f8cca68139ca38fbaf50e70475640b2d495c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","AGENTS.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8419c4724104029c8f5730a54b0471a4f41169b40af5be5e96652db2cd5f6070","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/fonts/Hack-LICENSE.txt","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/fonts/Hack-Regular.ttf","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","15f55cc0c85a2988d2b4b3a8cdb5d77fdfbaf319e1bb5309d725db9818fb7125","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/fonts/README.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2c0917241b96d23b0c11ca16f090b6679485e4943f010a1f0389d942f34f1404","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/fonts/Ubuntu-LICENSE.txt","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/fonts/Ubuntu-Light.ttf","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","80307b8da7649aa4ee4d484b232140e3ce1ec0ca093073d3c53c8f5a5ced7a70","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/fonts/Vazirmatn-Regular.ttf","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b69fd4c680b8f3f225feabcc655a2c585d97627b8f5f5c0f9985e894069f3a56","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/icon.ico","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4b4a5f9f012dae7530d0bbdc128d1d004546a0082ba226556363c97b3e4bcd3b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/icons/classic.ico","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a0c442accc9b0be3cf725f8ee339579e109cc27a440be4bbdd055c9a89a0e81a","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/icons/classic.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7d9d96fcee823a5c3fb16a46205772df81b96319d69d7f6ee0d2fe236f73ae42","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/icons/classic.svg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4f28321e923274ce2b571b1f4e7921afe83d61b60f1cffb3679429c3f1b5454c","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/icons/README.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b82f98fe31bd8b77261ff33bff640618d58a15cc9e287681f176e0d888db3dea","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/pealayer-icon.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","082cd912ba2a649f4f2c975b570efa6063e1c96a8051e0b81cdd1895826ab9ca","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/pealayer-icon.svg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","64610d3cf25cbb0814d784a5530ee7b002775b477128aded1feb941d951d1485","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/themes/palettes.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","11990ef4b31ba6eb1275c6e76b9156e0f05bacb2f59a8fa0372b778c6caf1501","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-file","complete","assets/themes/palettes.json:2 [UTF8-LF sha256=11990ef4b31ba6eb1275c6e76b9156e0f05bacb2f59a8fa0372b778c6caf1501; anchor=""studio""]","Byte-identical Studio/Native light/dark JSON catalog, all fourteen semantic roles.","","","desktop/src/ui/palette.rs:91 [UTF8-LF sha256=3d04f723252650661f9fdacd2e1929f3ad28fac4cd3dc40720bca32eac4f3a7c; anchor=fn imported_palettes_have_every_required_role()] | tests/web_appearance_test.mjs:57 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=embedded catalog exactly matches]","","Embedded Web now consumes all four actual palettes and fourteen roles. Mobile catalog use and native/Web shared preference synchronization remain pending; byte-identical asset retention is not all-surface parity.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/themes/recording-colors.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cbda19cded83672814b75a894919c6363dfc9e54d8ba15e37e6c35bbee767687","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","assets/themes/ui-colors.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3a820ac2a7e0d406f34b815f46fddc5b09ec56fa2b5230b69a1b3abb6d185eb8","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","build.cmd","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","84dc54c81fa72e2fec6906add9503c58423ad40b5415aeab76ccf5e2b8f375bc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","build.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","68fb1bdd9e7c7523ab303e37001d3a5252dcb03abe85e489432fe913be7b2e0f","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/build.rs:16 [UTF8-LF sha256=a7c694cdd2cfd17e3359db8970ce9ffd7db699110145543dde7c73703ca017ef; anchor=brand_image::native_icon_bytes(brand_image::icon_bytes())] | docs/BRANDING-PARITY.md:60 [UTF8-LF sha256=0bfa8122dc9d6034551304f2fed472ddebcff170e14a23f63011177aab75d2d3; anchor=## Explicit unfinished useful code and reasons]","Application PE/window/tray master derivatives are separated from actual semantic quick-action resource generation; master/helper changes trigger rebuild.","emit_build_metadata; APPLICATION_BRAND JSON/APP_* precedence/filename validation; version/InternalName/OriginalFilename/copyright/provenance fields [pending] | macOS brew/mpv probing and rpath flags [not-applicable]","emit_build_metadata; APPLICATION_BRAND JSON/APP_* precedence/filename validation; version/InternalName/OriginalFilename/copyright/provenance fields: Fixed current identity exists; validated external branding and full generic metadata/provenance remain useful imports. | macOS brew/mpv probing and rpath flags: Pakar is explicitly mpv-free; media linker dependencies violate that scope.","tests/branding_test.mjs:12 [UTF8-LF sha256=c39528379a8b6e97561e0e0deb5e435a182f75bce2b385780c7b9ee853455fbb; anchor=actual Pealayer icon_data_from_bytes import]","","Complete named generic omissions with preference/endpoint/runtime tests; source checks are not deployed acceptance. See BRANDING-PARITY.md.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","Cargo.lock","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","54f291c09a7a0d7bc5e11d7b70b9d1e6921afcef057a788ce7e7226add920e24","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","Cargo.toml","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d17f8153af16ee32d8bef8abf37b15af46f84eeb718f10c4d2791def63d0e84c","build-storage","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","CHANGELOG.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f0a7b4957b86ee7fcdc5016f0670bafc601aadc3cd8b18cf62da49b18ee4b98d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","crates/download-core/Cargo.toml","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","44af3889be856426171a52839fac7d99846b63950d4e615adb676c92846714e2","build-storage | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/9","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","crates/download-core/src/aria2.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4ee6f48ba24565856a730b22cf3888b53f85062d97f495d180e2cdca5939ef13","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","crates/download-core/src/cache.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","150ef70caa9069c5872aea494f6cffe9b812fe5c5bf41e700cf06628d09f508f","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","crates/download-core/src/engines.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f1220e2d63ff72eb7cccdb95b1a5f1064f80f27f93cc72f35dd00738dfa1bdcf","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","crates/download-core/src/lib.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d06c69f6b38ac2f764e7f2489c92fd6c865a232c8f0cbf3d3225a4f9efb41303","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","crates/download-core/src/tools.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7af574f90a182be99f2a5ee105bdfb8e7b3e8efa63151eef26cfdafe521da3c7","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","crates/download-core/src/ui.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9493a433755dd4a29cd7a7cb01503e4aa88de78e977de5dbc291e865ae38d0a8","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","crates/download-core/tests/tools_runtime.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0b9535449a88d8d3f81e7fbdc2cdf94617a599b9a5f5c48badbdf2fae3b81b1c","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","crates/download-core/tests/transfers.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","70ceb833c62f6112d5561c43369bed676917e0247533bb812f34ee46107902ea","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/ALWAYS-ON-TOP.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","603e50ccc555a7a7018baac1b359e4910266e93ae447c8caa211aca0b970ac72","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/assets/feature_walkthrough.gif","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4ff5cd266601a2797de7d53f092b99664db2ca8748f09683b84edb7fbcce40be","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/assets/layout_preview.gif","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e7bee22a2cba8dd7fa5cea5ec86dfb81214ab163876fa017d7767bd774047763","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/assets/macro_recording.gif","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a4965ce6b141465c55e6b5e12d11c8f73101f15975997a4484fecf5c5f5a19e0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/DOWNLOAD-CENTER.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9ab3c73adb0809abc7b121fd3c7ece3a73f3347917525ac2dfe4a3256fedfcc1","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/EFFECTS-RECORDING.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ef27bda74347b537d74e90a43bb58cdb95fe24afa2cf5ae90857257f1e54c693","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/external-mpv.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0624885e86488c09c6628767f4b0bd5497779e7af46626cf3289d1e18ed6376d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/HARDWARE-AUTHORITY.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d09bf8303f7d92c69569cfe9a8fc125857a4e6c3827aba905de5fd38141acb4d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/HARDWARE-CUE-MODES.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","70cf65e0f4d52c79c371f29c050f037b9c99d59a3b6a675261fde0abff3dea56","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/always-on-top/web-preference.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4d3649236ca1ecb1ba8db02d836631c029ab0ffafbb9234036003ccf30ad9627","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/responsive/after-channel-manager-390.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d8447a99ea2674d7640e777bae9212fdd5dc5e6092c77a4e4cb7dbb11d1a49b7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/responsive/after-effect-editor-390.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0edde03b73b2877519934333dab427bcee71ec01598c3f3e0bfdc5cab69558ad","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/responsive/after-effect-editor-landscape.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","15ba6a2a3dfaf360a55f2b6b179c0450dee76ce040c6722853da4f49a67b5074","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/responsive/after-effects-dark-390.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fea9991b0b6110653915f595abaeebc49cf4431654178d38c5f174228459bf80","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/responsive/after-hardware-dark-390.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","05d7302ebfcf04f678d6d10d808083f95d89f1c232c6709c77212e0fa31f9b21","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/responsive/after-hardware-light-390.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1c6d17a24f146881614bd8ac7bbe25a32d0cb29c79e50ef29e37e7cb2e9c2969","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/responsive/after-preferences-light-390.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","faa913cd9df56349b1f64c32ec31bedd6ac4a93c0963faeeab9314e248d6551c","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/responsive/before-hardware-390.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","03a492e15bb6ca39398e3522f16748499e1ebc9e596e4007d2b735d56a1e2a8f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/responsive/responsive-installed-dark.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ea49ac22888829f57269ca1a3267a154942966cfee1f82e06ddcc1ad79bd4a5b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/responsive/responsive-installed-light.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cc479ad2c57df741c0eea3f290bbbda2e0b2751fb5e74db911b13662c1465265","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/rf/rf-assignments-dark.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f2dc3c69c6789ceb53a304cbf4e4fd726f4b072dfdc011ef660470883526b348","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/rf/rf-assignments-light.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","be1b7aeb72d1c6f09dd1aba295e6fa19715577aebc0540d6d8aa220dfebf2662","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/rf/rf-receive-after-restart.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f93d1e6030d7559160a50f93a0721a01b0d1201e3c6bb8420767c43ab269e45f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/rf/rf-remotes-dark.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","dae0ae1dccb8481882b877d8091b450ff0043e301aefa3115b5cef06ac74665e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/web-loading/fuji-dark.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bfb7dd258d201f83fec7b3e427b95207c626ead67a3ff78f131febb45b2838ea","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/web-loading/fuji-light.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","12f34c21c21cfc66ac23857d1a268cfbae5ca6c05be87341a3f0030eda39e87c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/web-loading/fuji-view-loading.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4b9867aef1f9d6aacb9c0b8c1269098960e4dcc9535c7b8e7b741c3ca502e614","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/images/windows-taskbar/phosphor-toolbar.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","aa5867d076ffafaed7af87974af7cdb9d2f7588fcad8694ae37144e7811a0129","ui-shell | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/messaging.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","01be9fd84f1e8482e82f1feea559822f486db8ce50d14156e1ce41134c43d16e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/playback-board-sync.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bf9f664158d9ec3554aad64ec8a5b1d39d710db584555ced8c685c66b169dbbb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/PREFERENCES-ORGANIZATION.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","504310e17b742e3c66bcd1579272330b207e017d4e631aee2fadc69deee45188","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/prepared-hardware-timeline.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","036c2fa3908351812a43cb35a34e4675d68355893e59e6ef4dcf13b64bf3d5c0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/releases/next.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","71f81fa503d0494a85dd700e16cabdb23e1a6dcd6abbb0abc1af47000584b3f7","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","equivalent-behavior","complete","docs/releases/next.md:1 [UTF8-LF sha256=9e83c4d1a348af3bc275a5ec924abea7317ba22d1f0e66eac63d6f5499efbeec; anchor=# PakarController development packages]","Actual donor curated preview notes explicitly distinguish a development milestone from stable-release, physical and platform acceptance.","Pealayer media/audio/timeline milestone inventory and archived media screenshot evolution links [replaced]","Pealayer media/audio/timeline milestone inventory and archived media screenshot evolution links: These are donor-specific release facts, not transferable Pakar features. Record actual controller/interface packages and link Pakar issue #2 instead.","tests/repository_governance_test.mjs:105 [UTF8-LF sha256=2c8393bbd1463ce367cff24d72110a96e53e664824d780f2e66a2c8f8930bda1; anchor=console.log('Repository governance]","","","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/releases/SCREENSHOT-EVOLUTION.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5ea2b42f16e1c7afdfd27065a99b91a3d7e8176c81abeaf10ad29fa50fd06316","repository-governance | capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8 | https://github.com/atomicdeploy/PakarController/issues/11","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/releases/v0.1.0.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5c7ea8ef78e2f5ed358d368664e3353d597efe3f45b72e2abde1f5a82652f01b","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/releases/v0.2.0.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cf9097cad4651b0578a6b9ba55e8cd43ca35a4d40e4a54c19a87ad37c3627fff","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/remote-folders.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c34bc6aa84945bba7c7e143de739e5e5f1fcff84c84a6b0802931dfafbb02fec","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/REMOTE-PEALAYER.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","349c18ebdd5d6451815e72587bb0994b6e9263bd2e05a98540d8221c0d2608ea","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/REVIEW-COMMENT-AUDIT.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7a91d9fa8778383ee37e33d861ceebc5ab210e46bedab6af8be82d56c27523cc","github-coordination","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","tools/audit-github-conversations.mjs:59 [UTF8-LF sha256=0bd597414af4e28668d2da96e250a27a99550fff9b86e5d58136b7de583a1dcf; anchor=export function collect] | docs/GITHUB-COORDINATION.md:1 [UTF8-LF sha256=64a078407d296db907e8645e07dc25a6392168cb1cb2e39cc8bb18a9bce01f0d; anchor=# Conversation-aware integration]","Actual exhaustive review-thread/review-summary/standalone-comment audit procedure adapted into read-only paginated GitHub collection, hash-bound manual scope decisions, unresolved/outdated preservation and quota-versus-completed-review distinction. Used on every state of Pakar, Pealayer and PCController. Targeted cold-cache refresh now retains other repositories from the committed inventory, preserving all 778 PCController/Pealayer records alongside 38 refreshed Pakar records without promoting their review status.","Historical media thumbnails, MPV surface and DLL basename, timeline/cue migration, audio delay and media picking fixes [not-applicable] | Complete semantic disposition of every historical issue/review and full DNS-rebinding, actuator/persistence, UI/PWA/physical acceptance [pending]","Historical media thumbnails, MPV surface and DLL basename, timeline/cue migration, audio delay and media picking fixes: Pakar is an mpv-free controller and does not own donor playback/media/timeline models. Generic staging safety, keyboard ownership, error correlation, authentication and service-worker origin lessons remain applicable and tracked independently. | Complete semantic disposition of every historical issue/review and full DNS-rebinding, actuator/persistence, UI/PWA/physical acceptance: All pages are collected but fetching does not mean reading or implementing them. Only explicitly hash-bound reviewed scopes are marked; every unread record and source-file import remains pending.","tests/github_conversation_audit_test.mjs:30 [UTF8-LF sha256=dc841c32e7f17b65ae9f16222dde27d0aa7d7d96565654e383978d4919499486; anchor=Paginated GitHub audit]","","Read and reconcile pending records in the refreshed 794-record conversation corpus; seventeen full-record and two comment scopes now have explicit semantic decisions. Continue applicable source imports and exact source/test mapping. Verify RayanLamp repository when supplied; do not invent one or mutate donor comments from Pakar.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/reviews/2026-10-06-review-thread-inventory.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0a963fa2ee82a20db70be087fc9c045518b2ab7d02adaea9b607eb8ac44633cb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/RF-CONTROLS.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ede5be912ff25a8569744b8ccf19ad607f34ee07d015d86a7b5953629b35e466","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/SCREENSHOTS.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","844423f82d46400a3e698283b2f99688502d96ebb3a62574eceefefa2acfff85","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effect-cards/after-dark.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d12716647243eec41277f6470217295df4cc5108f262fac9f3863898d50d3019","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effect-cards/after-light.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","dc5b54b43de2a7751074fbb58137057ce9a535c6a3758fecf0a8adab48a2ee0e","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effect-cards/before-dark.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","83945d1bb30541e58f9d61a306f972f26c18a523098ab3e12cff790d188a6281","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effect-cards/README.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bdce5fcc8a27be4299825e6bb5115c606bf2157d5dce06eb44b654f23c8bcf20","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-library/groups-after.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","220173489961c5f3972d08e0b5cbffa45720b53fc546a0f13a451a2a391d3944","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-library/modal-after-dark.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","46f51e3ff3354a0b0f846fa8ec4b77bbf2138bc88235162317ff56fcb83cffc1","capture | preferences | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-library/modal-after-light.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","63d40d6b2469c9030a3d63122136c4bf7833bd2f90c0c59cbc1e26ba79e6df93","capture | preferences | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-library/modal-before.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d081ec4ad5d6f47afaaac0c44d3ca7e517456231b09071ab86054bb951531eff","capture | preferences | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-library/README.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ec80101ba65d884536b7b20dbafe1aeaa6de65311e39ccdc37176066a78da11e","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-recording/native-recorder-active/manifest.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f07f33f11096832d8dc9eb0148583d52d9b5ed77162ec530d0977c8a626e1a35","capture | updates-telemetry | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-recording/native-recorder-active/pealayer-en-dark.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d4acd283261c23d20cc9257c194ff2e7ed2f49ac707f5f619acf17c35441502f","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-recording/native-recorder-final/manifest.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5d68869fc521091ae44419a3eefcf795bfede2f72d55b71cac85ad21a5b91eed","capture | updates-telemetry | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-recording/native-recorder-final/pealayer-en-dark.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5099bbc0aa350f46226998237f80c0d75f7eb79b0716759d15272f28b92586ac","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-recording/web/effects-library.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","956dd05a529808699b0cb006019cd4d15a92e4bfbb82b02d2f6417629a09bd24","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/effects-recording/web/timeline-cue.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7fa3a269959d0f707125dff5078be756b97b95e3e2a6fd61b9132bdd52458a33","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/channel-manager/after-light.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ac5a42674651edb8013fc67351a3cf8d8b5e545285ed51827649555197caba8d","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/channel-manager/before.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2919756476fe82a8d659c0fcb2aaafb9f3bd72820dca07d1b699166cc3fc0205","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/front-panel/pealayer-front-panel-after-k2.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f9b28a424bf09b267932481accf5fcfbd36ace2bba26a5eefebbbf4592db8609","capture | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/front-panel/pealayer-front-panel-before-k2.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7eb34eeeed2f103b770c609610f6e5acc18044c2e3f0630c8fc16dcdf60b4ee2","capture | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/front-panel/README.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9f7140c7e6c3dafa2f042d427eed48c5a242d27b16a9bbf7888ca241f1406af7","capture | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/monitor/manifest-dark.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","48d8217c7c76af616b401e754984000cfad8b557dcff31ccfc7bb1d5105c9a6d","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/monitor/manifest-light.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","70d05649b2cc6dac0041aba9ad09a9860d03cf21764b37680fb47e8579a4b676","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/monitor/pealayer-en-dark.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0e07ceec76ce251c737d8e30cde86b212b741fd5ee57d8ab148da26b0addc39d","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/monitor/pealayer-en-light.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5b6096219318c297eb6a65da67838ec29ca3d27649cafa904d200e8bf302da2c","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/motion-context/manifest.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4ca7661d118767098a2901bdf5f06326988f2cf7060f4caf9a3a46291fee4dde","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/motion-context/pealayer-en-dark.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","375955ff74707f986d3b63d1de90c38ab6088630ad80a01c7e53fb0918e1a75a","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/motion-context/pealayer-en-light.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","67e2cfba5256b4352c1f0968a5bdc4ec09dc4459d5d6cb4e04f58fb0ee9e8238","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/pwm/manifest-dark.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8680ba7cd945a4fd10e5e27ac6e29351cb2ece3b223c0820e84bfd22a805f38a","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/pwm/manifest-light.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","83869680240d3fe29ff901ada8128d47d9a33bbcc89323017701baf0b484b733","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/pwm/pealayer-en-dark.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","13b6639e2d3b24abc3a3c5849ee664875c6874c08f96a3be33d036a25784c444","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-controls/pwm/pealayer-en-light.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","996883ea00efaddd9df41e48f1d081f942607eb11810cf6c43fabecf13ffb072","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/hardware-monitor-before-light.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","69e44968da8e38a12c3890b82d61668ec3bb788c4434dce8de3f533b5b7898ea","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/manifest.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ce15e7a77eb8dfed6edbbcc9220b44ba76ac09ce0c37ae8fb1d14eacd7799926","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/pealayer-en-dark.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","453c4d74bbf59aba3f6dfb9a30552e6790d46eccde7f42a4bbd9c458f9094c6f","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/screenshots/pealayer-fa-dark.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b122c62f986ed61b69c2e232fa163e073d9d30ef2d70e97ae9a368a76958d60e","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/SEEKBAR-MARKERS-AND-SEEKING.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5b0fe5db19b31a82ef7b6cff3c8116d0dba5595dd9b39ae602e556a469e102fe","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/SOUND-EFFECTS.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","43d1134471172395a7cc903c9d7f4cb1ebaabb80b124936899f7bf6f13d285c4","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-16-4d-cinema-simulation-protocol.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4da74afd0c7b1be41c66d8d9a4c23c4fdec5bbceb9dffd69e733840cf4d76103","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-17-4d-cinema-live-motion-capture-recording.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1f6c123ac85f68a3c4e7599cc6287d530cf19228e7354c7d5be6d70e8b1f349a","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-17-timeline-ux-ergonomics-interaction-design.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1428e9a5e555acb75c4beb0d2a733312192c56edc78c474822be5b3a46a85acb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-18-hardware-affordance-and-track-validation.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4addb1c0faec805fa47b9ab07cce55913b27f4973895bb058d2fddd9f7610913","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-19-timeline-effect-controls-and-handle-ergonomics.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fd5b32723615ccf4e9713ef11ef18948ac222de789815706a850bd38803efba5","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-25-interface-bug-fixes.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e73e5168dcd0e58f3d2f2090ce83ddc5a8595cda550ef343266f89683ee36ca6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-27-milestone-2-unified-ipc.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","705879e1c0dfe0fceb4f6692c72841531d3aa566a9524cda837fa64410171486","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-27-milestone-3-cli-mode.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cc57143383c4412cbc54c8396cc56aefcfaa02cec3520917b1013e985d0f2d72","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-27-milestone-4-windows-aesthetics-and-associations.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f0f013ced5fad089bbe76581ad212cd3f9e04d7bb843a94f68d415415cd1b4f2","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-27-milestone-5-web-ui-media-explorer.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","56d954dee5bb5687fc629f311e1209a1c09763ea7df07231980ff14985c41f8d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-28-phase-a-controls-ux.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","163c37f2bcc47c8f49dd6537e5bf31a88016b032218a0961c2735a1bcf59d89d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-28-portable-system-config-storage.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","244ed6999182c28924a39aeafb5b968b9c075e6997e4a47932048cba84e7e432","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-28-windows-taskbar-and-tray-suite.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","033a82778e4ed8258bbbf99600d16039f523043386e302032d6df8849624ea9f","tray-tooltip | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/platform/windows_tray.rs:17 [UTF8-LF sha256=94bd79acba0dd4d572222cb064e451a274ee38579a392c95c56d997779cc35bf; anchor=struct TooltipSync] | desktop/src/platform/windows_notifications.rs:158 [UTF8-LF sha256=71f2254825ba2b16d83696ce0e0cf74ec7c95eedda5f60e1c3d167826693ec1a; anchor=fn tooltip_data(] | desktop/src/main.rs:5202 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=event_log.failure(""Windows tray tooltip"", &error)]","Full donor plan read through EOF as source requirements, not trusted commands. Generic existing tray lifecycle/menu/disposal retained; actual windows.rs NIM_MODIFY/TIP sections read and adapted to the owned GUID rather than duplicate registration. Tooltip Shell acceptance is separated from object presence; failed writes retain pending latest state with bounded retry/incident recovery and observed restart epoch invalidation.","Playback percent/error/paused inputs, media thumbnail toolbar Previous/Play/Next/Mute and video-only iconic clipping [not-applicable] | Full root taskbar initialization/retry, thumbnail toolbar lifecycle, visible tray/menu/notification clicks and all Windows shell suite acceptance [pending] | Direct donor NIM_ADD/uID1 and popup window ownership [replaced]","Playback percent/error/paused inputs, media thumbnail toolbar Previous/Play/Next/Mute and video-only iconic clipping: Pakar is explicitly mpv-free and owns controller operations, not playback/chapter/video. No synthetic media percentages or nonexistent actions are imported; actual pending-operation activity remains. | Full root taskbar initialization/retry, thumbnail toolbar lifecycle, visible tray/menu/notification clicks and all Windows shell suite acceptance: This fixes only GUID-bound tooltip synchronization on an already owned tray object. Mock clocks, NOTIFYICONDATA assertions and observed restart messages cannot certify complete root shell readiness or user-visible action delivery. | Direct donor NIM_ADD/uID1 and popup window ownership: The pinned tray library already owns HWND, registered GUID, menus, icon updates, restart recreation and disposal. A second NIM_ADD/global icon could conflict with its identity. Adapt direct NIM_MODIFY to the actual registered GUID; no guessed numeric internal ID or library source patch.","desktop/src/platform/windows_tray.rs:287 [UTF8-LF sha256=94bd79acba0dd4d572222cb064e451a274ee38579a392c95c56d997779cc35bf; anchor=fn failed_tooltip_retries_latest_value_without_false_acceptance_or_flood] | desktop/src/platform/windows_notifications.rs:204 [UTF8-LF sha256=71f2254825ba2b16d83696ce0e0cf74ec7c95eedda5f60e1c3d167826693ec1a; anchor=fn tooltip_uses_the_registered_guid_and_bounded_utf16] | tests/windows_tray_test.mjs:37 [UTF8-LF sha256=541da356a3c3e376e2eacfa10dbaf068925074ca5c77a005ccf71121eb5639cb; anchor=Actual GUID-bound tooltip]","","Actual installed tooltip Shell acceptance and physical Explorer restart/visibility; full root shell and action acceptance. Complete windows.rs file stays independently pending; only2364..2421/2483..2513 sections read for this adaptation.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-30-light-theme-timeline.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","53f7508a028d8650fd113957ef9676f676b365febba213ddf2626889e292aec3","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-09-30-workspace-panel-restoration.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","13c657478cb2df5ca94cfa9455d64ff7707c6988ddc7374b8225b324d644d96b","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-10-08-frame-accurate-scrubbing.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8efea5b390b3682ee195b653dab9a250c1b3d6b5d14cef2010970750cc89c29f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-10-08-icon-picker-centering.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","da186a9043758dcdfccc361bfe64dc5dfe8b766ac5e4a233bf5ef675f86e5288","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/plans/2026-10-12-libmpv-teardown-and-windows-test-isolation.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fe33ef59f48e94b2451db0c4a054d8e85226322c23c17d1b466715fba71b6d60","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/specs/2026-09-16-4d-cinema-simulation-protocol-design.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d521eddb907a65b8b3a5cc6f0b402ae600e2b6ceeb08818ba8f541304ecb1c8c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/specs/2026-09-17-4d-cinema-live-motion-capture-recording.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ea83fa1967e797a8a40d110a8ff1776fd2df3ce24f7f82f33c14d552ceb8b406","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/specs/2026-09-17-timeline-ux-ergonomics-interaction-design.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","980f6d93e0029ee40f7f87812bf3838500801bcab3b802bfc995996c6ec227d5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/specs/2026-09-18-hardware-affordance-and-track-validation-design.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","acc0c007809321f624e3bfbedc10dec0d6e9909b7037329d1cc54275549ce72b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/specs/2026-09-19-timeline-effect-controls-and-handle-ergonomics-design.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6ba8a05d01c3e3f7233b1817322767db37a902d30a38e59ed34fab41a1e6f6ae","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/specs/2026-09-30-workspace-panel-restoration-design.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f986ae7c1c76026967b341d0dc8121c29e0c50c60b7a8fac89ec361006390ffa","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/superpowers/specs/2026-10-08-frame-accurate-scrubbing-design.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","054537fb008eb2762d622db23e45d0726033e3b97edefaaef297f77923715d07","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/addressable-strip-pipeline.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ed3b794bb8770a289fdbfa0271665ec86a78d3dbdb40082c3c3a428f984ba2a0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/agent-handoff.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b0de9fb2e643bc5b86bca5b97435e73df0abaa64e2de5792196190624cc589d9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/appearance-palettes.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","82d98a97c70a1d8ce929f396d4e45b43125cb49cf5de4c233d4f3cfeed902fea","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/appearance-palettes/neutral-default.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fc122c9a64416213a3d6e30a99f84e217acd04f33b1716a469899ae059b5ca84","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/appearance-palettes/studio-green-dark.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d946fecb352c80995c75974d4a07d7f8bc8f000520a9603477563fbaf9511def","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/appearance-palettes/studio-green-light.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7339913a4de0acc0f0fed4bcc7f23550845e3b8728c5d27f8ea68d914c76d871","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/application-shortcuts.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","534c76ad08d793872f64931417444a20b5355db27f11a261b8327f7bffe502a4","preferences | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/audio-slider-wheel.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c166c4871dd3724da61f2158c434f19c86fba54c8b6057310ce020bd3a6c8fab","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/authoring-readiness.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","680688cd2ef747cbc0dd84ae4591931c64a4ed8ab8a7cbbfc26922a28d1d4ba6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/authority-modal-dismissal.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","93cb3202ea13f7e1a7fdad10ec0c55cd4c5fe1825bef742a7a5f99c70f87d5b1","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/background-media-controls.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6ad6707f13141a349dc089319c2fb03f55a3a13d3a19cddd974636ed28ac4e24","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/binary-udp.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5e59417e560f54b4096886bff37835e9f48c5ea988433a87561d47f3a8911a94","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/BUZZER-LIVE-CATALOG.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3757ca2a56a0ee88bc8634c1d81b99b5f0c8dacb037767150e207c8aeb0ac46a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/CHANNEL-FEEDBACK-AND-CUE-PROPERTIES.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c833a34599e420724a2ca2ca3d296d78755ed37c7294c9895b8f98e86ecafbdf","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/channel-folders.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","613334050c88db40c19913c1ff19e38799b0b7ced746213b2b7467eabd7a7259","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/control-bar-customization.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4d84f41ccacdaf764c28e73a3caa0e76cd0c9e17076ece0e03781d39d2eb719c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/control-density-and-buzzer.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","15be57122e9b8bdae5afcb356d9fa6046cd993c29ee4fda3e9b5758b6a1ff5d6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/controller-response-deadlines.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f2fe5db5547a70c15f2b66355b0ab5437d7a1970668a78c451e110567853c63d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/controller-update-progress.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3dbdeaf3769a5d9d4d3c9fa0d19a41ea55521a18ffe959f79bd32dee4ac6e535","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/copied-link-verification.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","510dbdd05003b12b0e0053485568178e35060fbcc5678486ad9575e5da355dba","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/ctrl-arrow-frame-stepping.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","473a20f94e2e6e870025b73df0118dd1b0710ea41852ef4641313346cfffc0f3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/cue-dialog-responsive-dismissal.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fd8555db75f669741b75d6f74c035c7bf5b13cf7387fef3c0c95bd4021698d54","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/CUE-STARTUP-ACCEPTANCE.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f46fb368e767def05135111d165af8595abf043f0a158413a367969c98787d1b","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/CURRENT-ACCEPTANCE.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e95cab3671c7a9d359c2d19cedc16fea9c03e3b7feb2a63f3a6e433b57864cbd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/DEPLOYMENT-AND-MERGE-CHECKPOINT.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7c659699d42f8c99729b4079d0c4df69c685bd1c1c92c47176a2cea7fdd2c6b8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/designer-effect-groups.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3aa6b1ccd66d69baacbaeaaeb79583522d16260e22e76dfffeece0ea50b47bd3","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/designer-interaction-consistency.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","44408263a403fc246d24e1a6a17b522f7b52b855efd18688abbe8b7069ab80f5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/dropdown-navigation-colors.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f95cc2e3d9b70f45c4343eb03988655eb7dd89db93d8f2eaa44a7ecc62506c9c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/effect-card-rename-geometry.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","00f09e28a27cf52b881ff646f92414a144eebc39337ad6e677791e7a006cb8d4","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/effect-card-rename-inline-web.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a1c83cb9f751457be6b51c0212713d853674a293d1907d0c66d594bd564cd0dd","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/effect-card-rename-menu-web.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0321b42b32bb722786fcf658849f945c8071d3398620bc6cc64942ae216dbe5b","ui-shell | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/effect-card-rename.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bd705f1d99f35479b9bc30cac42adfd2f3d7a75b266f0004da09674d8e4d2b46","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/EFFECT-CONTROLS-INSPECTOR.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b93e098086071b6f5f43d15bbc332f4da612029d3e7dcca5fce09d5ee4ca6122","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/effect-sequence-context-menu.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a07813a087895ce99386c939768e09b2e223013e45bb27a3eac4055c9488cad6","ui-shell | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/effects-designer-gestures.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","869554511b024092229f36575d98a5db94a3d016fb5aeaffa72ff0f096ea3ca5","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/effects-library-card-header.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bf9758e77987d39362326a4288bf88efd8683d2411b5e900e83d4a3c47b5d176","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/effects-library-hover-spacing.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0afc1db6b313057c2d81c07386233b14401df9203f6713867f8f09ddf347d4b4","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/ELAPSED-TIME-SEGMENT-EDITOR.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ce52a4be3acdcec2da930f19de30ee067174509de9f70f7cc308919045e4be6f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/ERFAN-AUTHORING-READINESS.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f6cfdbc15dc68443cc18d2620ba956683dfb5d49b9ba746b27f3a0377e794b7f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/EXTERNAL-MPV-DELIVERY.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e7d614c00066883438ec77f8132f74e551979f9890125ab674659000d592be53","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/group-selectors.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0ee1012dd37bf935fe11ec2474ff34501a7d90bc32b0a76f82f05f4908624313","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/handoff-audit-20261008.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","994e39ceae91e80e97126647e492fc66e18dbd11f1cccda11a981cbdf7440498","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/hardware-caption-alignment.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","74a694c0c97c81cd11f99142fe1af064948c320b3ddb56d473ec5f740d80bfcd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/hardware-clock-starvation.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9a037e4bb4743af254248648902cb3ea6b89b9d15da01f3cc76f730a32af0293","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/hardware-hidden-disclosure.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","65e8054395e764f1a5693377d93fdae228bf761e8fadd565e935ffc1093c282b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/hardware-monitor-navigation.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2750e9df83f7b22f892b928062387192c3356fcbde75367fe484e15c8a5b1666","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/hardware-preparation-recovery.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a7738a56e294b0480ed9e72de890fe24e98685992ee4b2050d1fc3e9400d4b6e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/hardware-secondary-click.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a529792a1d1b0a59469aad2a0718fbb3a149e9c92bd37803f1e998199a1ce2aa","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/hardware-status-interaction.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","91d5ae19ce057b7b1944908c7e94925425328cdb8c45dab3eb649d2b64be8343","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/header-selector-bounds.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","75d01a2c13b33f9883294ab2b32550f1147f34fc6038536c74d5dd0869819c92","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/ICON-PRESETS-CHECKPOINT.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d880682cc609af79908a9370c93f5c59ad3e3b2ba964712de0cbe2417aec6273","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/idle-video-repaint.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3558e2c9d11ccf1b7fd47aae1af1cc3ca18cdc7cfa95cc4f790ad65316188377","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/integrated-effect-capture.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cf3cbb55ccba347d3d92cd843b1c2edabb782913e3f4e6b23b510e45cc61515d","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/issue80-current-audit.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","51a13aefa8736ddfebc2a072ac0ad22c75b67f359966dcd3abdffce1ce62f6b2","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/issue80-native-delivery.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6dc7dfbbcf8d7ae7eff7f19591e4f6099d434ea6a44bfa7e8806080e2d65d357","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/keyframe-context-focus.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7052182df0310de6863c42b1d4c9c50ade0eeba9cc3272c08fa2d55e3c145381","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/LIVE-BRANDING-SURFACES.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","be70dc5302099e5b236571cc561fc63a08a03930358488e182596d65455e56ce","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/LOCAL-WORKSPACE-HYGIENE.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c024125307f6e466c924e1b8874f869a575b085b2a05bb4493bfd1d1e9f38975","build-storage | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","parity-gap","complete","docs/REUSE-PREFLIGHT.md:42 [UTF8-LF sha256=13521024e5b18f314abcc71af4e9c722262a7cb04c17f03155b1e88d0cf0972e; anchor=Mandatory sequence on every task]","Actual canonical-cache/stable-staging/preservation/blocked-operation and separate runtime-acceptance guidance read and adopted in mandatory continuation policy and tooling. | Fully reread the current donor through EOF: shared-cache rejection/hash-copy/storage inventory, routine symbol/incremental policy, debug-only guarded cleanup, measured scratch-RAM sizing and skipped-test versus bundle-integrity distinction. Actual read-only directory summary/equality helper and mandatory low-write/preservation guidance remain; donor historical cleanup/deployment results are not Pakar facts.","Historical Pealayer paths, exact relocation/cleanup/deployment/media-clock events [not-applicable] | Same-volume rename/hardlink-aware relocation and reusable host profile/peer updater workflow [pending] | Mandatory donor lookup was previously absent from executable build/stage/capture paths [replaced] | New source-checkout cache prohibition and explicit guarded target prune [pending]","Historical Pealayer paths, exact relocation/cleanup/deployment/media-clock events: These are donor historical facts, not Pakar installations. Copying them would misrepresent ownership or completed cleanup. | Same-volume rename/hardlink-aware relocation and reusable host profile/peer updater workflow: These are useful generic mechanisms but no Pakar cache relocation or complete updater deployment is implemented by this policy. Current blocked cleanup stays blocked; no rerouting through another shell. | Mandatory donor lookup was previously absent from executable build/stage/capture paths: Capability lookup with source/target/test hash gates now runs before those actions; other task surfaces are required by AGENTS.md, not falsely claimed universally sandbox-enforced. | New source-checkout cache prohibition and explicit guarded target prune: Canonical cache relocation requires an owner-preserving migration without duplication. Existing cleanup was blocked and cannot be rerouted through this helper. No reclaim or reduced physical SSD wear is claimed.","","","Complete applicable generic host/relocation/updater tooling after ownership checks; extend executable gates when additional capability mappings are fully reviewed.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/MOBILE-BUTTON-CENTERING.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f3e298ec68e9d80adba1754ef77213b19435459e18eef30ac36a9422eb2ad0d2","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/model-native-service-policy.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","19d2f2f20666dfa706e1d4ef7838929b4c35dd7a785cae6ab9f972961b34ce3c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/native-icons-and-timeline-navigation.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e32251bdb2027a2bf0f4018bf0a46acf1d96fe1ddcbd4232106115e2dfc05998","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/native-media-keys.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","54490ea60a6a67e668e1c8a9ecd8ca9468d5394bc5b0131c6d3030d50202b673","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/nle-transport.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5f4ad53a6b0ee8cfd6a651fd8d3a9f28d560d475b82cd027bbc32ef400cd8849","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/NLE-VOLUME-AND-RESPONSIVE-TRANSPORT.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ce97e66190305ac38855f95645ee51b01e5afcd200d385960b573fe6c0088809","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/numeric-adjustment-steps-web.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","dbd5f103cab76b821c8375e8285bab036abf269bc4f65bdad30829a31a009f6e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/numeric-input-context-actions.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","102046cfa0e5ce1be0b6e4104af1c02d5cb649eb9124e6b23bbbc1c59064bbe8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/os-media-session.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3136a49b504dcbf9332e80b2f6a78a7aafbbd6423c6aa1a3d1049c1da30469de","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/paired-peer-deployment.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0836e55fdeeb55f839300799a66ebdefc04141b98fff43d160d49574c2e66d27","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/PALETTE-SAFE-ELEGANCE.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ed0a441127e20a90ba0d9f4b6aac34ed701a745b2cc907a1515726c2140d81f2","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/panel-mirror-fidelity.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b1ba4f2fa86e8653452b945367ff4430e127598005ff51d8a8c6310d6797d75f","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/playback-board-clock.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d2ca3d096e1701ea9488f1768c4c6f305bb4e6fc93446962c5778f25c73a1b74","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/playback-board-results.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fc2aa0a7fa6465d1ec4e3f67c7876bd0a8129f5d93c85139fd8210ca8f2af30e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/pr77-checkpoint.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8d8aa8008cdea5946aa87e86500be357367a4f1eaf85db37a600d98d2d98ab8d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/preferences-save-closes.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cec55a7e17828efba767e3338430cb8733488960c7d42ee8977c4fdbfef20602","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/prepared-timeline-results.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2070b3c198079376a5b3609d37b7e15d147e3f534c34e5c82580bf4fc8c4f93c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/program-monitor-viewport.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5f7d89e9420a1c796f4b25f48e279a64ed28f163d8c0b60753c381b36a120c42","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/programming-latch-state.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","dd20c0b8857119650fa55a75bd1fa89e984bd1f554539927294de0803f0be0cb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/pwm-card-controls.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5c4318ecb1ad4c895d82ebf4507a3c2a30a163a735c0db40bfcabbac91b55842","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/pwm-editor-intent.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","aeede3c7f9d75bc2b9921999d7608993a4b8c43246f3f89e0a96b2356074617e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/pwm-observed-power.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d89c1f04284e351f9d258fb6101bf9dffc090b1a7451b1ddbeaa24d2373e67c9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/recording-colors.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","781df25faf4dd02ce785be0bd5c20e8d1b4b4c1f9cad257fdc1ad62745f9a1c2","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/relay-card-semantics-and-centering.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9a08668c4fecc6934bfb243e7c90527835aa8108eaed68c87a757d7f2cb20b22","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/remote-folder-web-dark.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","add09863a88c566a86afbdc92f498b6a7553afcdbac347d1d1c974a1023f3d62","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/remote-folder-web-light.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","36992fa8bb64a5555e5a386720cce3e38542c64654b5c5d950df42c182b387f7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/remote-folders.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","05074e5aafed1d40b1881d6410a75e2a9a5aa63723fa8b324f1ca238aaeb0bcf","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/renamed-seat-titles.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f080266e9177ab44a415434b97f103c6b4a34e3e4d38947e424c5128f06c33fe","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/rf-assignment-usability.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","20224b68314dc6b4b4549f7ac7832f621ab2c610ff54efad1dfedf45cb64afb5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/rf-editor-first.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8252f2e4474ea540234f1084b20233a661a5f96e8f1ccef643ff31aeef7f47f8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/rf-reception-and-learning.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0ffe890591936b90088f3fa33b60447e0ac0ec6a9cbbf9776367d21a4edfdc24","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/rf-saved-rules-responsive-wip.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3320fd6a82e4ab1341795b8bce997e45f0e8b6f1c0406ea0505e4b8623e78db8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/screenshots/effect-group-empty-space-menu.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d92afb4f885c766a700f0ec7846d2e726ac7421da17fb5f2342d9f2131b03020","capture | ui-shell | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/screenshots/effect-group-selector.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b3e29f855277ddff1dd9d391a6e0f2da7d7815fa82ed990501baeb87797a1524","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/screenshots/integrated-capture-active.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f1ecac0efc3394085cb6b949b113072fe2674e7880c43ddfb94e69f6f7c39508","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/screenshots/integrated-capture-after.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a2d11e77b5990b65620d426465cd1904532297c76aa61c585ac560e4c368b2dc","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/screenshots/integrated-capture-before.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","022b3d1064679c20c570be6f3fe2dd3bfc01c83f738155aece784af8fbf4d2e9","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/screenshots/integrated-capture-existing.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a7844ac0d8b60a7e9f98e1f0784f2766c2149aacc28f7b05fddb220d60a581ea","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/screenshots/recording-color-after-blue.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c6cdad6105f530a899548f17ebabbc85e001eb13c3eebcb61857abecf60f0aa9","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/screenshots/recording-color-after-dropdown.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","68bc40d8e2d046a7550cd19401f79477d6353f13ac6164457c150f8a63916ad0","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/screenshots/recording-color-before.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e3488d7dc4e9807d1da168da576e81bbc8845b9ddc5cdf3aa820674bc65a1a8c","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/seat-cue-timing.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a24a21c05b742492258cde16c0b9df233a50c24831eeba83faa7eabd5344e27d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/seek-hover-card.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5691d942671b6b3996c1af1f608256ec5b11655e36ee091a9ca84c2b8f038e4f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/SEEKBAR-CHECKPOINT.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","aced6337872288b49dfdc43e9f7193c77bc367ba75dd424c3e7d80d09b8d6d6a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/SEMANTIC-TRANSPORT-AND-DEPLOYMENT.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bb1d2a3a76848b91194f34cad9727ab69a53f0318d103ea489731476404e7a74","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/SFX-AUDIO-DELIVERY.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bd5ef5c3c62cdf6d0a0f065e970ca77cac34c14f1cd9ff00a92c610c7c454a8d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/shared-messaging.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e45aeebc707c294a599b90123049f8fb8e19b62700c586de990e557866e36435","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/shared-picker-refinement.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ea4052a8345ed6d7c0b4910b5539551a56e94d8d6e3cdc1c6852a04d8af27ba1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/shared-pwm-policy.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a32119d5f3aecc5282fbea4a9328113f03455d1a3720d24ba745bfc20e4ca117","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/shared-toast-web-dark.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f8bc6a215f23c0a1fec67eed29feb8832036b93b2c2cbaf01c61d7ca21f8c869","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/shared-toast-web-light.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f6b5564b2e468abb45d9746677087911640138d68b46ce8cac71e6f07fb8cc70","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/square-modal-close.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d20c06dfa2aa19e77c390f1a8fdc6a8b024c64229b8c1b615b6ab8d4a253178c","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/station-timeline-crash.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fd9ef071eb25ac070f6cb89970a90bfacbdf6c3a7186901c4be905eaa84c7b0c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/status-bar-widgets.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bc973a91a1a48a95d58b3247632e568896b4d1dab0060d4e455c7a62f2e5623d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/step-repeat-ghosts.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a95c66916f70b393f8c24e4703d101904c6a450d9fc89625bed37bc39e20c764","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/subtitle-alignment-web.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fc224f216393b975fdd893a1ca2510889e4ae5ca474e9a9a4cb7ae12dfe6b9c3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/subtitle-alignment.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ac44c69f83384608fbf54c66983cd903c44da7011691568d86919123d4d6d79d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/subtitle-hardware-layer-isolation.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fc6de31ca34f71259154252510896be0bfddeb85318e70b67239ff5a0c142867","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/system-theme.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","37197456a27824e3f2f9536f55c7165425393eaa54b51aed45f2d5adf7a07693","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/timeline-compact-clock.jpg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0c32cf6e5b0f909fd688021ae4eb265df9b13a27ea341991ffc6a991ae250896","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/timeline-compact-clock.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ee6da1556cf0b7b04f919beb39ad277807daba931fc38ed9a1ad527b755649d9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/timeline-frozen-ruler.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a5cd6410a51c80e8c134539c5a1ddf050af6883d3bfb53ffd04bd38aa048699e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/timeline-toolbar-drag-feedback.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8c642ff333e6cc081480b8c240f5a15adefc2d21730e14da8cfa8a40c553e881","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/TIMELINE-TOOLBAR-INTERACTIONS.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7d346c6515df59fe8f99ece6647f3179d0a26a674a8bd1cf4fa7fb6fca6c0246","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/timeline-wheel-actions.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ff11e2d874776e22f10d289c14c0facd68a7f0b6e9701714e96fe561aaca1f12","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/timeline-wheel-actions/live-sync.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e8dcbb24cd5505d97da14dd3bc8d7b1201d0835cf84e3dfe2ffe0442d3726ad0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/timeline-wheel-actions/preferences.png","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c95c0b59e1da59468141c1a1710bbb007bcd59139d82723e0f49a50539cb7809","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/typed-controller-errors.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e7221c74cc056f219f95af8e978ae3dc35c41f33269c723e1510a020e4d1b6a7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/verify-appended-recording.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","408c7ec5a6079cbd3d5cb010171d5c3228bc147be680732aefdc52544c9cb8d9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/verify-live-cue.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","90c9544ffc07e710fc2a41020fcdebdc9e0bea8b7e7522e1e9cd88e0d8cdaa50","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/verify-live-cue.test.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f58342624aa46dc24862b2d77ec02a3c71885addf301f1cd0807e1761953f3a5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/verify-pealayer-prepared-cue.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f6d1f6f4c8c5a44a4776a85e82c6b1486d9038e87fbb83bab4323889085b9c87","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/verify-playback-board.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","68629c44a41bb2a4c44ee5810a80fdbc4a75a2fc11b59c6d811a38d476c64c88","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/verify-prepared-timeline.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8a5b5463692a510db3f8393b0ddae08459c557ef0914880991c80113da44ef8d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/video-ghosting.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1453ccb7298bc7569f40bf5888587218bfb4b9abc53e30f5e5d24d1687478efb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/virtual-development.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7c93c72ef93c50f6ebba2bd309404aff6589cca04d4dd927826a5712464f6498","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/web-file-locations.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","649dd0e90f60a6764acdd622fe57c994170b3d70b0e8397ad5f62cb0e6d4c8a8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/verification/windows-tray-board-actions.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","08c386551365512012f60bd2ec10bba4d1ceb0d050d8a8ce6204c777dab5d866","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/WEB-APPLICATION-PARITY.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","09c994223c6ca02b0c8c71be554af966ac55997c0218f33cce99b6cc88f99353","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/WEB-ASSETS-AND-LOADING.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5f2b5979e853df7ed102a44de163037883daeabc89a43c1c127102a0dce570f1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/WEB-RESPONSIVE-LAYOUT.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e589ec4ef7204c409371c577cd2eda576bf2247757786b6a5308df00c940ff6a","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/WINDOWS-SHELL-RECOVERY.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","57fbd904e18d8f0036dd67e2c866d357ab282075689a1cbf6b38a64270875492","tray-tooltip | windows-desktop | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/platform/windows_tray.rs:14 [UTF8-LF sha256=94bd79acba0dd4d572222cb064e451a274ee38579a392c95c56d997779cc35bf; anchor=Shell acceptance, not object presence] | desktop/src/ui/shell.rs:1332 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=value[""tray_shell""]] | tools/replace-desktop.ps1:42 [UTF8-LF sha256=95a7f84383869622426e97d7c21d579ce93fd5c55d2bd4607697b6b352bbe525; anchor=function OwnerStatus] | tools/observe-desktop.ps1:28 [UTF8-LF sha256=c2adb041290e63d2190c6e807c095b9a79bf3c201d46f5ffc085636c1d4daf5e; anchor=function OwnerStatus]","Full donor document read through EOF. Apply its concrete distinction between working IPC/service and actual shell/GUI readiness: expose tray Shell acceptance separately, retain failures and recover only after accepted synchronization, verify open drafts before graceful replacement and keep actual runtime proof separate. | Actual already-owned ASUS replacement/capture helpers were reread and their PID/path/hash/session/no-draft/graceful-exit/atomic-rollback checks adapted into reusable explicit-parameter replacement and600s USB/Wi-Fi observation tools. Both preserve settings and reject unknown owners; observation captures actual message-hub and Windows Shell counters, buffers samples in RAM and writes bounded progress only on changes. This imports recovery boundaries, not all donor shell features.","Timeline navigation/follow/playhead/ruler/toolbar-order repairs and host-specific libmpv/Cafe deployment [not-applicable] | Full shared shell-action JSONL launch/forward/GUI/helper evidence and Jump List helper-readiness acceptance [pending] | Upload progress broken-pipe panic regression and disconnected-writer acceptance [pending]","Timeline navigation/follow/playhead/ruler/toolbar-order repairs and host-specific libmpv/Cafe deployment: Explicitly excluded timeline/mpv/media-seat domain and unrelated host identities. Generic no-nested-egui-lock principle, owned preferences and graceful replacement remain relevant. | Full shared shell-action JSONL launch/forward/GUI/helper evidence and Jump List helper-readiness acceptance: Pakar already has typed IPC and native dialogs but does not contain this complete per-action stage receipt or full actual Explorer dispatch matrix. New tooltip acceptance diagnostics do not substitute for it. | Upload progress broken-pipe panic regression and disconnected-writer acceptance: Actual Pakar CLI best-effort output has a separate implementation; this document read does not compare donor CLI writer sources/tests or certify all upload-output paths.","tests/windows_tray_test.mjs:37 [UTF8-LF sha256=541da356a3c3e376e2eacfa10dbaf068925074ca5c77a005ccf71121eb5639cb; anchor=Actual GUID-bound tooltip]","","Import/test applicable shell-action stage diagnostics and output writer contracts from actual donor implementation, then verify user-visible native actions. Do not mark complete from this focused tooltip recovery.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","docs/WINDOWS-TASKBAR-PREVIEW.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e4426f937576281ac63c0ce0c3583af3c5f69951af78fc9c3887fa20e6ceb8a9","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","examples/square-close-preview.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","198b9cd2f36ff48003afdbf1d3f8bd647ba4df8761aef9f8c30b5fdfcf1de7a3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","LICENSE","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f52fdc03b3a61af55f5b7a8480a1d92fe46f0a59f2f2193d0155a6b65bce0c2e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","output/pdf/pealayer-pccontroller-effects-guide.pdf","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8e5cfe6a9b476580fd7946d5fb06d0a07df2e9768d5547b23981159db2019366","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","README.md","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4e78a6c486bfc7d78adc6d34552bddfd67c89997edb8d2bae0b46e70c705dcb6","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","scoped-improvement","complete","README.md:7 [UTF8-LF sha256=6ef2bde812ca8aaf889f5ad1c8313ae6e4e5ac079b93424ef4be6e2cdd007da5; anchor=Connected boards. One contextual control workspace.] | tools/generate-readme-artwork.mjs:1 [UTF8-LF sha256=2162d1ad3760618260eb9d659dfebb6651ad1e5f5b4eb2c37c12cde1ef7ff8d2; anchor=README uses the same bytes]","Pealayer's actual centered logo/title/tagline, badge row, visual preview, section navigation, architecture, build, docs, contribution and license structure adapted to Pakar.","Media engine, NLE cue/timeline walkthroughs, playback APIs/shortcuts and libmpv installation sections [not-applicable] | Donor platform and latest-release badges, cinema-grade completion language and media screenshots [replaced]","Media engine, NLE cue/timeline walkthroughs, playback APIs/shortcuts and libmpv installation sections: These describe Pealayer media business/runtime rather than Pakar board control. README links actual controller APIs, wiring and release/acceptance instead; no mpv is linked. | Donor platform and latest-release badges, cinema-grade completion language and media screenshots: Unsupported OS/release claims and unrelated images would misrepresent this repo. Use the shared application logo and real embedded Web screenshot labeled simulated, explicit PR/source and physical acceptance boundaries.","tests/repository_governance_test.mjs:105 [UTF8-LF sha256=2c8393bbd1463ce367cff24d72110a96e53e664824d780f2e66a2c8f8930bda1; anchor=console.log('Repository governance]","Canonical cross-interface icon bytes and explicit proof/acceptance boundaries prevent a polished landing page from claiming an unaccepted release.","","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/backup-peer-acceptance.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8293c12a759031662ba8fe9b66994a163daeb268f865bd8ce32bab665877e425","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/build-metadata.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fe18f35543ea96f30c713bc170286aeb73883ff7af62c866d2fa3cc56e9aec14","build-storage","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/capture-visible-window-windows.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","94bc5aed91407818905412d50dde72ea669f3c799ef56a043dd0a81befdce47f","capture | windows-desktop | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/8","scoped-improvement","complete","tools/capture-window-windows.ps1:75 [UTF8-LF sha256=c9f48604a224599ea0252638558e80f4025beb4b53834112af9e48af03ae73d0; anchor=public static extern bool PrintWindow]","Actual donor PrintWindow P/Invoke, minimized/window-bounds validation, DPI awareness, System.Drawing PNG lifecycle and read-only behavior.","Get-Process -Name foreground filter [replaced] | RenderOccludedWindow branching and unconditional Bitmap.Save [replaced]","Get-Process -Name foreground filter: Explicit expected PID and window-owner revalidation remove ambiguity between production and fixtures; screen fallback checks foreground ownership without changing focus. | RenderOccludedWindow branching and unconditional Bitmap.Save: Capability-gated egui framebuffer is tried first, then PrintWindow/BitBlt and verified foreground pixels. Blank images and overwrites are rejected.","tests/screenshot_harness_test.mjs:9 [UTF8-LF sha256=2a89ec8cd3795838be9e5593a48ded5f249f4479165483d7310e2da06fcdf0a5; anchor=for(const forbidden]","PID-bound, no-overwrite capture with an app-owned framebuffer and automatic read-only Win32 fallback; runtime evidence is separate from source guards.","","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/check-build-policy.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7f24cfe914b4b501834cccbd70c6e0c61eb38b9a4a6f6fe880480813abeebf2c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/check-crate-boundary.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","da9b469ac596e6eb1999e4d499742a51ebf289335285549569116c1124963e38","build-storage","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","scoped-improvement","complete","tools/check-crate-boundary.mjs:10 [UTF8-LF sha256=4a8fbcecaf424460c051de61d5e44658532ec64527460ce21d4d86ec95c0550e; anchor=export function checkCrateBoundary]","Actual donor module extraction/intersection, thin executable and MSVC duplicate resource linkage guards imported/adapted. Native build wrapper and CI execute this read-only guard before compiling.","pealayer::startup::run and main.rs/lib.rs module intersection assertions [replaced] | MSVC winres library/bin duplicate resource.lib guard [replaced]","pealayer::startup::run and main.rs/lib.rs module intersection assertions: Pakar has one binary today. The adapted tool detects optional lib.rs and then enforces zero executable modules, module ownership and delegation to Pakar's library namespace. Today's single binary additionally rejects duplicate declarations without requiring a nonexistent Pealayer startup symbol. | MSVC winres library/bin duplicate resource.lib guard: Both original resource.lib patterns are retained and run for today's binary as well as a future shared-library layout. No need to defer these guards until the architecture changes.","tests/crate_boundary_test.mjs:4 [UTF8-LF sha256=ebf1cbc5410a3f67a7b704d17415801e68daeba961253f8b60a183fdb5fec17f; anchor=const single =]","Executes useful donor guards immediately on the current single-binary layout, rejects duplicate declarations, and automatically activates library ownership/thin-entry checks when a library appears. No compiler or generated fixture writes.","","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/configure-windows-host.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8c62e976f9fbcf5a7e874f8190ac9bcfaf654e4f88e6c4c08a7cd468fa3401a1","preferences | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/download-fixture-server.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8350a1c7354ed092411d4cc3057f8d01ee408449adae1366f83250503bf8d091","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/libmpv-windows.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ab6e48f3e0a55a2d86ad1dbb19c01a23c751891cb5a7ed61875a21b1e52645e5","build-storage | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/9","parity-gap","complete","tools/windows-build-host.ps1:16 [UTF8-LF sha256=7da123594866f591b490db084496b4bef75b2db3f6e0ac5b425b8d86e9401e9b; anchor=function Get-PakarCargoTargetDirectory] | tools/windows-build-host.ps1:46 [UTF8-LF sha256=7da123594866f591b490db084496b4bef75b2db3f6e0ac5b425b8d86e9401e9b; anchor=function Test-PakarFileContentEqual]","Actual Get-PealayerWindowsHostPaths, Get-PealayerCargoTargetDirectory and Get-PealayerFileIdentity adapted to Pakar names/locations. Environment expansion and relative overrides retained; native build and staging now call these helpers. | New actual Test-PealayerFileContentEqual imported as Test-PakarFileContentEqual and called by staging: missing files fail, size mismatch skips hashing, equal lengths require SHA-256 equality.","Resolve-PealayerLibmpv, Copy-PealayerLibmpvRuntime and Set-PealayerLibmpvBuildEnvironment [not-applicable] | Save-PealayerWindowsHostProfile generic host provenance and generated Cargo-config ownership protection [pending] | Program-root shared target default across separate source worktrees [pending] | New Get-PealayerCargoTargetDirectory rejection of all source-checkout cache paths [pending] | Copy-PealayerFileLowWrite delete-destination-first copy and PreferHardLink [replaced]","Resolve-PealayerLibmpv, Copy-PealayerLibmpvRuntime and Set-PealayerLibmpvBuildEnvironment: Pakar is explicitly mpv-free; importing DLL aliases, GNU/MSVC mpv imports, LIBMPV_DIR and native linker flags would restore an excluded media dependency. | Save-PealayerWindowsHostProfile generic host provenance and generated Cargo-config ownership protection: Saved host/compiler/cache provenance and refusal to overwrite user-managed configuration remain useful. Pakar currently resolves its established cache/explicit override but does not persist this generic host profile. | Program-root shared target default across separate source worktrees: Pakar keeps its existing single canonical desktop/target cache without moving or duplicating it. A future managed-worktree build needs a shared Pakar-owned cache; copying Pealayer's owner path would corrupt ownership. | New Get-PealayerCargoTargetDirectory rejection of all source-checkout cache paths: Pakar's existing sole desktop/target is inside the checkout. Applying this rejection now would strand the warm cache or force a duplicate cold build. An owned same-volume relocation and wrapper/config migration are required first; the oversized-cache guard remains active and blocked cleanup is not bypassed. | Copy-PealayerFileLowWrite delete-destination-first copy and PreferHardLink: Pakar retains its checksum-verified pending-copy then rename. The prior candidate is preserved until verification; a mutable executable is not hardlinked to compiler output. mpv immutable-runtime aliases are explicitly excluded, not a reason to omit generic content comparison.","tests/reuse_preflight_test.ps1:83 [UTF8-LF sha256=842c7d0149c2717f7378116063712f4b719941152d89bd43cdc31e60b148437d; anchor=Actual donor relative cache resolution] | tests/storage_hygiene_test.ps1:19 [UTF8-LF sha256=e465eb90d9957a10586110273f35a6c7ce8107c679f3dfbd7ab10d68aa798899; anchor=Actual imported equal-content helper]","","Adapt generic saved host provenance/config ownership checks without mpv, and keep one owned cache if worktrees are later authorized.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/new-icon-pack.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6a2dbf067e1236b91174f380cf7663b407cd321419600fb25efa77509b0ec6fa","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/package-probe-windows.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f4516884990ad76c020fbc6534d902c4949abae0b48da8ea40c008afa44dfd4f","build-storage | windows-desktop | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/9","equivalent-file","complete","tools/package-probe-windows.ps1:27 [UTF8-LF sha256=71604ab464776891dbc95db7123218c22b3ede09ce2835fe4659d75c6d0b9d5e; anchor=function Invoke-PackageProbe] | tools/replace-desktop.ps1:71 [UTF8-LF sha256=95a7f84383869622426e97d7c21d579ce93fd5c55d2bd4607697b6b352bbe525; anchor=$reply=Invoke-PackageProbe]","Byte-identical actual donor process-handle probe: no-shell hidden process, async redirected stdout, 30-second wait, explicit exit code, output return and Dispose. Optional staging probe calls this helper. | Desktop replacement now also calls the retained process probe for before/after owner status and its one graceful quit. Actual ASUS inspection showed direct GUI-subsystem invocation could report false IPC failure; the retained probe read the same ready owner successfully. Live replacement preserved settings/rollback and recovered USB/80-cell mapping on the same ESP boot.","","","tests/reuse_preflight_test.ps1:87 [UTF8-LF sha256=842c7d0149c2717f7378116063712f4b719941152d89bd43cdc31e60b148437d; anchor=Actual imported short-lived process stdout]","","Donor timeout throws without terminating its child. Full GUI/runtime package smoke remains separate from CLI identity.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/package-windows.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5651709cfb58c2f1e0d7052b3ca604df154563ce552498a066c6e67b8f9baedf","build-storage | windows-desktop | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/9","parity-gap","complete","tools/windows-build-host.ps1:62 [UTF8-LF sha256=7da123594866f591b490db084496b4bef75b2db3f6e0ac5b425b8d86e9401e9b; anchor=function Assert-PakarPackageSourceStable] | tools/stage-desktop.ps1:38 [UTF8-LF sha256=1bbfe87fe8c9e6936e140c7911c5493f5937eceac1402ca386661dcabb40c4bd; anchor=Invoke-PackageProbe]","Fully reread all 302 current donor lines through EOF and actual Pakar windows-build-host/stage-desktop helpers. Actual Assert-PackageSourceStable remains adapted without Web exclusions; optional ExpectedCommit checks run before/after build/stage. Imported bounded Process probe and file-identity helper are used by staging; identical hashes skip payload copies.","SkipTests selecting npm build:bundle rather than build, web_regression_tests skipped versus web_bundle_integrity verified manifest fields [pending] | libmpv runtime/import-library packaging and pealayer-downloader media companion [not-applicable] | Restore-PackageWebDistribution git restore and recursive generated-Web cleanup [replaced] | Branding, Persian font/Web bundle packaging, Win32 resource and quick-action icon verification, UPX validation [pending] | Embedded --build-info/--smoke-test checks, GITHUB_SHA invalidation and host-manifest artifact/provenance/validation schema [pending] | New Copy-PealayerFileLowWrite calls for executable/downloader/font and runtime aliases [replaced] | Timestamp package metadata and native optional Run [pending]","SkipTests selecting npm build:bundle rather than build, web_regression_tests skipped versus web_bundle_integrity verified manifest fields: The current donor explicitly separates bundle integrity from omitted regression suites. Pakar staging does not run npm or build an external Web bundle; a complete package/manifest pipeline is still pending. Firmware source/embedded Web checks are not reported as those package operations. | libmpv runtime/import-library packaging and pealayer-downloader media companion: The user explicitly requested an mpv-free controller, not the donor media player/downloader. Board remote firmware contracts remain required separately. | Restore-PackageWebDistribution git restore and recursive generated-Web cleanup: Pakar staging does not generate or mutate a tracked Web distribution. Blind donor restoration could overwrite user work and is not copied. | Branding, Persian font/Web bundle packaging, Win32 resource and quick-action icon verification, UPX validation: These are useful generic package capabilities. Existing app source contains icons/font but current staging does not validate/package all donor facilities. | Embedded --build-info/--smoke-test checks, GITHUB_SHA invalidation and host-manifest artifact/provenance/validation schema: Current app lacks equivalent embedded source identity and full runtime smoke. Optional Git source-stability and CLI-help checks are narrower and cannot certify the old executable's source commit. | New Copy-PealayerFileLowWrite calls for executable/downloader/font and runtime aliases: Staging now calls the actual imported content-equality helper, skips identical candidates, and keeps verified pending-copy/rename rather than deleting the prior candidate first. No excluded mpv/downloader payload is created. Useful branding/font/Web packaging remains separately pending. | Timestamp package metadata and native optional Run: User excludes dated/random project/package names, not necessarily diagnostic time fields. Preserve useful manifest provenance and bounded explicit launching in a future adapted package pipeline.","","","Import full mpv-free package manifest, embedded identity, resource/icon/font/Web validation and appropriate generic runner; do not call staging a full package release.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/patch-windows-icon.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2113741c449d8448d52e478b03993ccd3f96a2ebbd0a8c08d15c1333a273d89b","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/piper-narrate.py","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4d486543a60bed28e9427ba349e9b1c4db4dcfb79bd81488a7c4abc221d03881","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/prepare-host-candidate.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b40ccb3aa61810220f4cd904ab0a6236d819cdfc262925a2a01e33f2c9c4e102","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/run-ci-rust-tests.sh","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","aaf963ab73a4498a6feaab164f2304de95b953edd3988bc55094a9f147ae8ac7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/run-windows.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","013e5c67e227ed851f8a3d26b27654e38c8816edca2965381bbb1b48d10a750d","build-storage | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/9","parity-gap","complete","tools/build-desktop.ps1:33 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Get-PakarCargoTargetDirectory]","Shared resolver call and locked native build flow mapped to Pakar wrapper. Existing canonical cache is reused; explicit Check/Test/Release and storage/reuse gates avoid unnecessary links.","RustBin machine/user/toolchain executable fallback selection and rustc -vV host detection [pending] | libmpv host resolution/environment/profile and DLL copy [not-applicable] | BuildOnly versus launch forwarding with ApplicationArguments [pending] | Set-Location to repository root [replaced]","RustBin machine/user/toolchain executable fallback selection and rustc -vV host detection: Pakar currently uses installed Cargo from PATH. Alternate host/toolchain executable fallback and recorded host triple are reusable infrastructure and remain unported. | libmpv host resolution/environment/profile and DLL copy: These operations configure the excluded mpv renderer. Pakar uses its own mpv-free linked dependencies. | BuildOnly versus launch forwarding with ApplicationArguments: Pakar wrapper builds only. Generic built-executable validation and configurable run forwarding should become a Pakar runner; manual launching is not equivalent. | Set-Location to repository root: Absolute manifest and resolved target paths preserve caller cwd without introducing a second cache.","tests/build_storage_test.ps1:15 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=One canonical target]","","Import generic Windows runner/toolchain fallback and host-triple provenance without mpv.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/sim_bridge.sh","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a8f3171da6de3b84a6e8d5e6b7ea160351c15b4bc77a9e000b23c29a2b9bc3f1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/storage-hygiene.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0d8fdeb3e15fb52b917784d4cb3875c68bc12c6c6ed78cd16f2ff8ee3561d89c","build-storage","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","parity-gap","complete","tools/storage-hygiene.ps1:11 [UTF8-LF sha256=3d1091c2761add106a5104f671bf12793c9621803f38bd898b193f597eabb329; anchor=function Get-DirectorySummary] | tools/build-mobile.ps1:85 [UTF8-LF sha256=43982d06947af7703e0374aa9092ddd62c032fc0643445c3a21cab87206ef072; anchor=$taskCache=Get-DirectorySummary]","Actual Get-DirectorySummary imported into tools/storage-hygiene.ps1 with Pakar canonical cache, board cache, mobile build and stable staging paths. Read-only by default and warns at the existing 8 GiB budget; logical sizes explicitly distinguished from disk allocation or wear. | build-mobile.ps1 now calls the actual imported summary for its sole mobile/build cache and verifies free space before compilation. Existing SDK path comes from mobile README; no auto-install, dependency upgrade, cache relocation or clean.","PruneRepositoryTarget exact-child/git-ignore/allowed-child/running-process checks and recursive deletion [replaced] | Pealayer target/shared-cache/staging paths and 48 GiB warning [replaced] | Silently ignored recursive read errors and empty Measure-Object Sum [replaced]","PruneRepositoryTarget exact-child/git-ignore/allowed-child/running-process checks and recursive deletion: New explicit user authorization permits obsolete debug-only deletion. Adapt the actual donor exact-child, ignore, allowed-content, reparse and writer checks to the owned desktop/target/debug; add tracked-file refusal and Plan. Never remove the target root, release cache, settings or rollback. The verified 10.408 GiB debug tree was pruned; stronger guards keep the read-only default intact. | Pealayer target/shared-cache/staging paths and 48 GiB warning: Pakar uses its actual existing sole cache, Arduino and Flutter products and stable outputs staging, with the established 8 GiB warning. Importing another project's directories would misstate ownership. | Silently ignored recursive read errors and empty Measure-Object Sum: Unmeasured paths must fail visibly rather than understate storage. Empty directories use zero bytes instead of a missing StrictMode Sum property.","tests/storage_hygiene_test.ps1:10 [UTF8-LF sha256=e465eb90d9957a10586110273f35a6c7ce8107c679f3dfbd7ab10d68aa798899; anchor=Actual imported recursive summary] | tests/storage_hygiene_test.ps1:32 [UTF8-LF sha256=e465eb90d9957a10586110273f35a6c7ce8107c679f3dfbd7ab10d68aa798899; anchor=Default inventory stays read-only] | tests/reuse_preflight_test.ps1:97 [UTF8-LF sha256=842c7d0149c2717f7378116063712f4b719941152d89bd43cdc31e60b148437d; anchor=Mobile plan retains reviewed gates]","","Debug-only cleanup is now authorized and implemented. Canonical nonduplicating RAM-disk/cache relocation, the newer donor Cargo-metadata/cache-tag proof for shared-cache migration, full fixture safety matrix and exact allocated-vs-logical accounting remain pending; no RAM disk has been allocated. Donor storage/CI files were reread while dirty concurrent peer work, not misrepresented as a new clean donor commit.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/test-storage-hygiene.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cbf747472685bc0ddb921444ec3399f1734aa6f105ae15fe68fff760c1e023fe","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/update-screenshots-linux.sh","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7bd3372fc15e0486425ba4f80b1d299b4c5946116ed0e5fbdddf9533c6386d0e","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/update-screenshots-windows.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","48507f6e9395c8c312c5557db729d05ed8d6a83e980d57a9b01e77ea525db287","capture | windows-desktop | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","parity-gap","complete","tools/capture-window-windows.ps1:75 [UTF8-LF sha256=c9f48604a224599ea0252638558e80f4025beb4b53834112af9e48af03ae73d0; anchor=public static extern bool PrintWindow]","Actual PrintWindow(PW_RENDERFULLCONTENT), near-uniform-black sampler, GetWindowDC/BitBlt/screen fallback and PID/dimension validation imported. Pakar fixture supplies isolated profile/selected surfaces; app-owned framebuffer capture does not depend on WGC.","SetForegroundWindow, BringWindowToTop, SetWindowPos, ShowWindow, SetCursorPos, mouse_event, SendMouseWheel/Click/RightClick [replaced] | DwmGetWindowAttribute extended bounds and logical/client coordinate transformations [replaced] | Locale/Theme arrays, PreferencesTab/Icon, AppName/Branding, WorkspaceDockLayout and per-surface matrix manifest [pending] | temporary GUID profile cleanup, process CloseMainWindow/Kill and generated_at_utc [replaced] | native resize/scroll/client-coordinate scenario parameters [pending]","SetForegroundWindow, BringWindowToTop, SetWindowPos, ShowWindow, SetCursorPos, mouse_event, SendMouseWheel/Click/RightClick: Capture remains read-only and must not steal focus, resize or inject desktop input. Startup CLI sets the application's own surface; native gestures belong to the supported computer-use APIs. | DwmGetWindowAttribute extended bounds and logical/client coordinate transformations: Per-monitor-v2 physical GetWindowRect is kept consistent with full window-DC capture, avoiding a mismatched crop origin. Internal framebuffer needs no desktop coordinates. | Locale/Theme arrays, PreferencesTab/Icon, AppName/Branding, WorkspaceDockLayout and per-surface matrix manifest: Config-driven Pakar CLI surfaces/isolated profiles exist, but the full multi-locale/theme/icon/width matrix and hashed per-capture manifest runner remain useful unported harness work. | temporary GUID profile cleanup, process CloseMainWindow/Kill and generated_at_utc: Stable named evidence/profiles are retained for debugging rather than deleted. Only verified fixture processes are stopped; production replacement uses graceful typed IPC and avoids timestamp/suffix deliverables. | native resize/scroll/client-coordinate scenario parameters: Model/painter tests and selected-surface captures do not replace the full interactive narrow/wide scenario matrix. Native live gesture acceptance remains separate.","tests/screenshot_harness_test.mjs:9 [UTF8-LF sha256=2a89ec8cd3795838be9e5593a48ded5f249f4479165483d7310e2da06fcdf0a5; anchor=for(const forbidden]","","Complete generic locale/theme/icon/width capture matrix and manifest receipts; verify native interaction scenarios.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/verify-copied-link-api.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6ede1926e5353d3fd0e304706c5eaa1efe968efd9da586255b6495c7c1d53816","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/verify-download-api.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a4b4edd670d1a37818c180850f653dad14b297d12acce7bfc13622ea1b001368","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/verify-messaging.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","708fdeedda97d1a314dcadcad6a8c60fe65773bb25bc47d8af9d710ce8b52b42","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/verify-remote-folders.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","320cec5927ee203f58f3efa617778bdadc372ec524a736c79a3f30ef01ebec1d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","scripts/verify-windows-quick-action-icons.ps1","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f068ca5b27effc256085c7a095a7538fab532884b6a908e0f585b868f32eefd2","ui-shell | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/app.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","41e50c2188ef281b5afcce8a6c5ff46b5bb478ab4ecb65d0d62a4aee0bcadbfe","native-lifecycle","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/application_shortcuts.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1f173bef8acc2904eac5b0a91407aa4f7629ce65c88ea3a8ac78f8c13321d203","preferences | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/application_shortcuts.rs:13 [UTF8-LF sha256=a970f63b589923be7a11260ad192a921e79b0fd33b7faeb631c6ab99d94750c1; anchor=pub struct ApplicationShortcuts] | desktop/src/config.rs:186 [UTF8-LF sha256=b84801a85e31a44b2691bd5f6ccefea0106d799952b0fb61e2d6162ee11b9414; anchor=pub application_shortcuts:] | desktop/src/ui/preferences.rs:466 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=Keyboard shortcuts] | desktop/src/ui/shell.rs:1380 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=crate::application_shortcuts::take_action]","Imported the donor's reusable persisted shortcut model for six controller actions: fullscreen, refresh, Preferences, device settings, connect and cell mapping. Parsing uses physical key codes, exact modifiers, initial key presses only, validation rejects duplicates/invalid values, and text editing protects bare printable keys. | Menu accelerator labels and event dispatch read the same saved configuration. Empty bindings disable an action; one matched event is consumed once. Controller actions replace the donor's media-only operations without inventing playback behavior.","take_frame_step_shortcut and frame-step tests [not-applicable] | containing_media_folder and local-media path tests [not-applicable] | media_information and media_folder accelerators [pending]","take_frame_step_shortcut and frame-step tests: These consume Ctrl+Left/Right for media frame stepping and timeline transport. Those business domains were explicitly removed; Pakar must not hijack ordinary text word navigation for nonexistent video frames. | containing_media_folder and local-media path tests: This resolves media files/streams, not board identities or firmware files. Firmware selection already uses explicit native file dialogs; introducing a nonexistent media folder action would be misleading. | media_information and media_folder accelerators: The media operations cannot be retained as-is, but their reusable information/folder-navigation affordances need explicit hardware-monitor and application-folder action decisions. They are not silently treated as completed controller mappings.","tests/native_menu_test.mjs:19 [UTF8-LF sha256=8d7540f4c8abd4a39414d18cd3bedc70bbb8ab05af4077c206a4ce11beea6a01; anchor=.shortcut_text(&shortcuts.]","","Installed native focus/rebinding/menu visual acceptance remains open. Global/hardware shortcut ownership is a separate capability and is not claimed by this application-focused import.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/audio_effects.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","71e90666ead85dbdefcbbd048d647ba36a943e643f8f17856f343fbe7a26ede0","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/authoring.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3bb56003f6d515c9e067ec71af15aace93945aea6c3669307be5a30ab1c6bb59","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/branding.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ee6ef94e685a86e72258e4609692a9fefa516d5935d75d15a5abe0ee42ada3c1","application-identity | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","desktop/src/branding.rs:75 [UTF8-LF sha256=13a85d887a09acb79aed6acb7b8c0e38f9ea1ba2e35e9306c8bf7558211bc211; anchor=pub fn icon_data_from_bytes] | desktop/src/brand_image.rs:25 [UTF8-LF sha256=ab71607dcde16d7af14b0a292982f902186dacf6b5b78b3f4c983e37464428e9; anchor=pub fn native_icon_bytes] | docs/BRANDING-PARITY.md:60 [UTF8-LF sha256=0bfa8122dc9d6034551304f2fed472ddebcff170e14a23f63011177aab75d2d3; anchor=## Explicit unfinished useful code and reasons] | desktop/src/branding.rs:9 [UTF8-LF sha256=13a85d887a09acb79aed6acb7b8c0e38f9ea1ba2e35e9306c8bf7558211bc211; anchor=pub fn sync_peer] | mobile/lib/main.dart:1670 [UTF8-LF sha256=814e5944b0f27d21f2005ff4bfa8e391dc5721435e25f9c40ccf2c934090a7db; anchor=peer.application?.icon ?? bundledApplicationArtwork] | mobile/lib/application_artwork.dart:2 [UTF8-LF sha256=a1ee8fc15b0aa9111a5c416fcf74b3d05093b22e47b76d7744837f175f7b5ef4; anchor=const applicationArtworkBase64]","Actual icon_data_from_bytes imported unchanged; one embedded PNG supplies native/Web artwork without disk caches. | Actual native_icon_bytes seven-frame ICO encoding/master preservation/Lanczos3 resampling and shell derivative test adapted to shared supplied bytes and PNG-only decoder. | Actual sync_native_window_icon source-signature cache, multi-viewport icon publication and tray refresh lifecycle adapted to fresh selected-peer Application metadata; no per-frame decode or disk cache. | Flutter now shares the exact embedded native/Web PNG fallback instead of a different Phosphor glyph, with bounded peer-application title and inline PNG overrides and default-artwork decode fallback. Android launcher equivalent and runtime icon preferences remain pending. | Current 447-line donor and actual Pakar branding/ICO conversion were reread completely. Shared image decoding, seven-frame ICO master preservation and source-signature/multi-viewport mechanisms survive; current native window and artwork preferences still have explicit gaps.","resolved_icon_path/state_env/non_empty_path, builtin presets, icon_bytes precedence/fallback and override/preset tests [pending] | sync_native_window_icon, icon_source_signature/revision metadata/multi-viewport/tray sync and tests [replaced] | PlaybackIconState/from_player/playback_state_is_unambiguous [not-applicable] | Current apply_native_window_icon shared Preferences/main HWND path, native window_icons::apply fallback, (state,revision,HWND) sync stamp and file-metadata change detection [pending]","resolved_icon_path/state_env/non_empty_path, builtin presets, icon_bytes precedence/fallback and override/preset tests: Useful runtime preferences need a bounded shared board/client transport; local filesystem media-state paths cannot be copied blindly to ESP. | sync_native_window_icon, icon_source_signature/revision metadata/multi-viewport/tray sync and tests: sync_peer now adapts the cache/multi-viewport lifecycle to peer Application metadata, shared header/About and tray artwork/Show label. Native runtime acceptance is still blocked by the cache guard; full icon preferences/tests remain open. | PlaybackIconState/from_player/playback_state_is_unambiguous: Video state business expressly removed; hardware state icons require a separate validated state contract. | Current apply_native_window_icon shared Preferences/main HWND path, native window_icons::apply fallback, (state,revision,HWND) sync stamp and file-metadata change detection: Pakar currently caches selected peer Application metadata and emits viewport icon commands; it does not implement donor native HWND registration/replacement lifecycle, file override metadata or preset precedence. Preserve bounded inline peer artwork and import applicable native lifecycle only after Windows tests; playback business remains excluded separately.","tests/branding_test.mjs:12 [UTF8-LF sha256=c39528379a8b6e97561e0e0deb5e435a182f75bce2b385780c7b9ee853455fbb; anchor=actual Pealayer icon_data_from_bytes import] | tests/web_identity_test.mjs:40 [UTF8-LF sha256=c4824a7923009f8698e0cde21c1d693609d1af98f55c47dbc20a140293a576be; anchor=Actual Web application identity]","","Complete named generic omissions with preference/endpoint/runtime tests; source checks are not deployed acceptance. See BRANDING-PARITY.md.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/cli.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","412b553fcdcd4436075af6bc93c956a4b7d9ac93a552a3458f2afabb8aa1448f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/cli_output.rs:28 [UTF8-LF sha256=135bdb2862fb8e1946164e685059aadbb12e19db096056224a16632e8333bc89; anchor=pub fn parse_cli_output(]","Actual format_help_message and PrintHelp/PrintVersion flag branches adapted with native short/long help/version assertions; terminate before config, network, GUI ownership and windows. Share device command help with existing TUI instead of duplicate stale strings.","Media target/chapter/playlist/seek/rate/player associations [not-applicable] | Embedded build identity, scoped peer/instance routing, unified remote request fallback, automatic verified host deployment/update status, headless Web-only backend and complete shortcut/command parser tests [pending]","Media target/chapter/playlist/seek/rate/player associations: User explicitly requires an mpv-free controller; media/timeline/cue business must not replace board control. | Embedded build identity, scoped peer/instance routing, unified remote request fallback, automatic verified host deployment/update status, headless Web-only backend and complete shortcut/command parser tests: These generic contracts are useful but not completed by static help output. Current Pakar typed GUI IPC and board command routes do not prove full donor CLI parity.","desktop/src/cli_output.rs:40 [UTF8-LF sha256=135bdb2862fb8e1946164e685059aadbb12e19db096056224a16632e8333bc89; anchor=fn actual_donor_short_and_long_help_version_flags()]","Top-level flags do not consume matching tokens inside device command payloads; board commands retain their own parsing. CLI endpoint/user default to saved GUI preferences rather than a conflicting hostname.","Complete generic CLI parser/validation, command/IPC parity, embedded build identity and verified app-update contracts; media-only switches are explicitly excluded. Validate actual packaged help/version exit without creating windows and preserve Preferences/rollback when replacing the app.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/config.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a318f05844f617ba908aa08c79c35ff91b5d73fdd833c6f5d06c47ea30b17f8e","localization | application-identity | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/10","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/diagnostics.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","92b065a4d8ff01ae3b4a81fa11fb6e5b671f85bb1f667be6af389e692fef9f71","windows-startup","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/cli_console.rs:26 [UTF8-LF sha256=bdf70294c5d4a40007baaf637a8ee26a8576f6dfd03604274fdd9a7d3de2a4ac; anchor=fn write_output(] | desktop/src/main.rs:5813 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=cli_println!(""{reply}"")] | desktop/src/terminal_ui.rs:994 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=cli_eprintln!(]","Lamp-background checkpoint scoped rereview of actual cli_output/write_cli_line and complete Pakar cli_console.rs. New explicit CLI option retains inherited pipe handles and fallible non-panicking output; GUI launches never attach or allocate a terminal. Inspected consumer hashes are rebound without claiming unrelated diagnostic/reporting parity. | Read complete152-line6485-byte donor through EOF. Actual cli_println/cli_eprintln, cli_output, write_cli_line and disconnected_cli_output_returns_an_error_without_panicking are adapted into cli_console. All primary native stdout/stderr call sites use fallible writes, including IPC, help/version, shell errors, management and TUI startup. Partial print support retains the existing table text interface without adding newline artifacts.","record_shell_action / append_shell_event bounded diagnostic journal [pending] | panic_report_path / write_report / install_panic_reporter and bounded UTF8 panic-report test [pending] | peer-active thumbnail-cache path selection [replaced]","record_shell_action / append_shell_event bounded diagnostic journal: Useful shell action provenance is separate from console output. Integrate a bounded privacy-safe journal with current app-management ownership before certifying the entire donor; do not log command payloads, credentials or media URLs. | panic_report_path / write_report / install_panic_reporter and bounded UTF8 panic-report test: Pakar incident deduplication is not a crash reporter. Adapt safe profile resolution, process/thread/build identity and bounded latest-report retention separately; do not claim generic runtime diagnostics restored by a console fix. | peer-active thumbnail-cache path selection: No mpv or media-thumbnail cache exists in this controller. Future crash/shell journals must use the Pakar profile diagnostic directory and selected process identity, never a donor media cache.","desktop/src/cli_console.rs:141 [UTF8-LF sha256=bdf70294c5d4a40007baaf637a8ee26a8576f6dfd03604274fdd9a7d3de2a4ac; anchor=fn disconnected_pipe_returns_an_error_without_panicking] | desktop/src/cli_console.rs:134 [UTF8-LF sha256=bdf70294c5d4a40007baaf637a8ee26a8576f6dfd03604274fdd9a7d3de2a4ac; anchor=fn inherited_output_and_partial_tui_lines_are_preserved] | tests/windows_tray_test.mjs:13 [UTF8-LF sha256=541da356a3c3e376e2eacfa10dbaf068925074ca5c77a005ccf71121eb5639cb; anchor=assert.doesNotMatch(app,]","","Finish bounded panic and shell-action reporting. Actual CLI/IPC pipes, detached GUI console absence and destination replacement must be verified separately from source assertions.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/downloads.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7db32d2df4f9e5a15a56d523ca131272768c8ce3874a37313f65b1807f0a3fb7","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/duration.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7b7f4e604f6160cdd0ba9cc0a34ed2d55d683dd918587f637af570ed0e57fc7c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/authority.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8e27bbe4f9d82365d0d4d8946ae51b6c762f821d90bfc4803d8a1246787ba3cc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/controller.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1a82472d637469f1659e4487992cfa0ac72cb528d9a9a1e85791fadfa4409410","device-context","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/curve_record.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","239343d81352b0c88563cf4fab343d91de5f3f9abe8595a594c13ef7f03c7bda","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/curve.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","22950794da3f9bddf981f51852224de68bdeafb367eead1fc8dd615e6d517657","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/embedded_host.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","94d8639230309ea9434867e3a1721dcfad086a50b0e39af0e00edbb8c34e6e7e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/engine.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7a4534f8fc0a031391db6c15a3d20cddc74b29ae2b6a392597d290b56fbce935","error-management","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/history.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","177e218325efe1ef3e915886d16383872e7283333cbffb63395a5216d1512395","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/input_capture.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7c618423882eea52a60cf9af4afb93c2cf9092d73b0359a216c5c7f61a0a79ca","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/media_sync.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","79db1284423bb3475d37527d21cba5da6c27e3c38fcc8d43868a5623b53cc581","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/media_timeline.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","54c4ea4642451174b5e07be4e6d0c2fa2214965f625d8c8769680a95e44ff5f1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/mod.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a1bbbeb6b6a46a61fb4bc9c7f0290c6ab5756865b6b64ef943827c82be15b83d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/models.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8299b098fad6f060c7db232f67eb05b4c55ee6a50bcc0ea94c73ed10205395cc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/patterns.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ad9447e8561e408055d42ef8c4a503331f4348bd358e166eba98c0c544b0198c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/programming.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5a59e00a6d8c4a6fc92974a6c01ff70e84e2d199b0cd6c44d68cc86ca5825da4","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/four_d/protocol.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9601e64c6279b6edc6329e0f8fad8860e53e7bf656b2a4d303c67130fb7eb702","transport-convergence","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/41","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/hardware_shortcuts.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7c2acca638caa744389c345e6b3630b12b72844df3c77dfbc4108d2118f94bf1","preferences | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/lib.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a14107fa5bded37ee42038f90781e6934986a436f539f64c767e781b1b325868","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/main.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","452eb004c52bdcff6936de5602cfdddf5c925d58db9e1e48220fc9a21075b696","windows-startup","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","equivalent-behavior","complete","desktop/src/main.rs:2 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=#![cfg_attr(windows, windows_subsystem = ""windows"")]] | desktop/src/cli_console.rs:69 [UTF8-LF sha256=bdf70294c5d4a40007baaf637a8ee26a8576f6dfd03604274fdd9a7d3de2a4ac; anchor=pub fn prepare(] | desktop/src/application_identity.rs:3 [UTF8-LF sha256=c37a32df5c00a1cc559c58d226b87d6e9756e7d837b56488646bd0ecc54f26bb; anchor=pub const WINDOWS_APP_ID] | desktop/src/platform/windows_jump_list.rs:13 [UTF8-LF sha256=847796332bd1ba7dd3c51a38a1699b0881ae7efe29249d8129de00d2a481d841; anchor=wide_null(crate::application_identity::WINDOWS_APP_ID)] | desktop/build.rs:40 [UTF8-LF sha256=a7c694cdd2cfd17e3359db8970ce9ffd7db699110145543dde7c73703ca017ef; anchor=.set(""CompanyName"", application_identity::APP_NAME)]","Lamp-background checkpoint: reread complete donor main.rs and current CLI preparation/early control-only dispatch. New --cell-backgrounds on|off uses existing owner IPC and fallible CLI output; it never starts another GUI, allocates a console, focuses the existing window or sends board traffic. Scoped consumer hashes are rebound; not new full startup/platform acceptance. | Actual complete six-line entrypoint read through EOF at5a6961ce. Import windows_subsystem=windows into the Pakar executable, preventing the OS from creating an empty console on ordinary GUI launches. GUI, shortcuts and updater helpers never allocate or attach a console. Explicit CLI/TUI commands may attach only to an existing parent console; inherited file/pipe handles are preserved. | Use one prefix-free PakarController native identity for window startup, process AppUserModelID, Jump List and executable FileDescription/ProductName/CompanyName/InternalName. Existing updater child CREATE_NO_WINDOW flags remain. This row certifies the tiny entrypoint adaptation, not whole-file Windows Shell parity.","pealayer::startup::run() library delegation [replaced]","pealayer::startup::run() library delegation: Pakar currently has a single authoritative binary, not the donor media library. Keep its existing main runtime and no duplicate process globals. The imported crate-boundary guard enforces library delegation if a lib.rs is later introduced; creating a second runtime solely to copy a six-line entrypoint would violate ownership.","tests/windows_startup_test.ps1:24 [UTF8-LF sha256=3ab90d3410719896189b93df4358a00602aefca8cc948f3ebfdd079ba707433c; anchor=Reject $taskBytes] | tests/windows_tray_test.mjs:9 [UTF8-LF sha256=541da356a3c3e376e2eacfa10dbaf068925074ca5c77a005ccf71121eb5639cb; anchor=const consolePolicy] | tools/package-probe-windows.ps1:1 [UTF8-LF sha256=71604ab464776891dbc95db7123218c22b3ede09ce2835fe4659d75c6d0b9d5e; anchor=function Assert-PakarWindowsGuiExecutable]","","","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/media_info.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ff3b9c467654d7d89282da2cbdd6d1014d104e4fe67c42861f98666c6a6b76d0","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/media.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9f4068170e77f2ded48eb3f51df16d6aba70a4615f0378277768b8120f4e5feb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/messaging.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","44ba995614f2acc3230f6adc13c00500e6844db81aa36d5e60e7eeb9e90d6f9f","error-management","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","scoped-improvement","complete","desktop/src/messaging.rs:83 [UTF8-LF sha256=57e357298d9dd8ae515a21bd13a4959ef77e684b345aed02da9dab818f5a204c; anchor=pub fn publish(] | desktop/src/ui/shell.rs:1309 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=value[""messages""]] | desktop/src/platform/notifications.rs:187 [UTF8-LF sha256=7bc00792827606683cac5665eaf5d72f8e04f9a3667dc38e54267fa24451f574; anchor=pub struct ConnectionNotice]","The current 226-line donor was completely reread. Pakar retains request validation, bounded queue, expiry/upsert/dismiss/revision/source identity and the original tests, and now imports Toast.details, publish_with_details, public publish_detailed and the 8192-character pre-mutation validation. | The shared bounded/upsert message hub has truthful native owner-IPC snapshot exposure for actual toast monitoring. Host connection alerts require2s stable state to avoid transient loss/recovery pairs; command freshness still changes immediately. Distinct diagnostic causes remain in the incident ledger, while detailed failures preserve concise notification copy.","","","desktop/src/messaging.rs:199 [UTF8-LF sha256=57e357298d9dd8ae515a21bd13a4959ef77e684b345aed02da9dab818f5a204c; anchor=fn concise_notification_retains_bounded_original_diagnostics()] | desktop/src/platform/notifications.rs:430 [UTF8-LF sha256=7bc00792827606683cac5665eaf5d72f8e04f9a3667dc38e54267fa24451f574; anchor=fn brief_status_and_avr_flaps_do_not_generate_disconnect_recovery_pairs]","Preserves the donor hub while integrating detailed failures with Pakar's source-specific incident deduplication, concise UI copy, privacy-safe Windows notices and stable connection-loss notification policy.","Current donor native messaging behavior is imported; Web/TUI/IPC notification-surface parity and installed visual acceptance remain separate cross-surface work.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/mpv/audio_output.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3527620f6e46b6140b8de67f413177bd315731bb461e725f015d06e536030f41","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/mpv/external.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","16c349b8ec9de8515299ea8eb4d5de3a56268347a8b0f05a03cb88e18d3d2648","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/mpv/frame_cache.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9fc70da51c1b281cef5b61f23d512dc2c83fb470d87798df59acad807b61b7f1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/mpv/mod.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","12dbb0f6bed28f79935b37a2af26f8e76c25b2c9b3271561c22fa6088f8d96c7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/mpv/player.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","900fed4bf8fb951b80f847163be23b304d846bd512f4f087b21bf16797bc1170","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/mpv/proxy.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","50db256e7675f1620ea8589efd20c42152f7be1f6b9e3a72fbe9e8bd5195342b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/mpv/render.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d1f7033bad974a7fb8271bf3aceb71e1e0c9ca71d0d045d22427ed10f510c287","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/mpv/seek.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5a6dac8f50dc84bbaf21aba62e588342fc614aebfa27e80be17df21088d73c29","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/mpv/sfx.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","99daa5181354be84facd627702ba734bf7d1e8d2691e338e46f05f410a65502b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/network.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","22abaf1ca05c64d7e694b7b1d8216904df23cb84f47a0d23c6e91e78d40b86f2","bridge-repeater | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/platform/lan_discovery.rs:27 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=pub struct Advertiser] | desktop/src/ui/preferences.rs:500 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=Enable API bridge / repeater]","Read through EOF. Actual NetworkInterface::show address enumeration/filtering reused for listener-bound IPv4 LAN advertisement, without guessed /24 routes.","discover_bind_targets rich interface chooser, address_detail/interface_presentation and parse_bind_addresses multiple binds [pending]","discover_bind_targets rich interface chooser, address_detail/interface_presentation and parse_bind_addresses multiple binds: Preferences currently provide one explicit numeric listen address plus port; donor adapter chooser/multiple binds are useful pending UI rather than excluded media logic. No interface reconfiguration or firewall mutation is authorized implicitly.","desktop/src/platform/lan_discovery.rs:791 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=fn bridge_loopback_registration_starts_no_discovery_transports]","","Issue #2: discover_bind_targets rich interface chooser, address_detail/interface_presentation and parse_bind_addresses multiple binds. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/peer.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e6cc286bd1325de1ba9b5acc87e8010b12a70a653383d380338e409a0866c365","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/performance.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","584265743e6546633bf2ed5e65cb2a46def053d8c5b31b5aa59bbf4a90d3fc9a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/association.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","21ebfeb0903fd3e97068f632d0f9d740c2053dc631729ffcfcc17ace2bee3cc3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/associations.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","87db1fb6944e7ab10e32332f135758e4f9a198dc0735a5fb16343287f07cfd2f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/clipboard_urls.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","20da33c913648064529541be4f42e7e86b0fd6be1b076a78a6c5516328c9100b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/interop.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","174e750a6f629bbf3d3eabf499ab9ee6625433710048b66e7bd21ba0abd3ab41","native-lifecycle","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/media_controls.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6d9b11283cc470faafd045d91a10c36a1d4913ac7f6feb55a6805773575bdff7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/mod.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6f1f79cf52e665c7fd51f9f780ceac9792dae1d3204ee3b0483699aa5dade483","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/registry.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3b6f3f7e51baf18976c28f202e09ed20b2db1c7c5fe3b5da70e9a9b101f8dc0f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/taskbar_preview.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8a30562c13bf5d3c66f13c1d3210f30f342b94aeb7f21f3f4d69e8b748a0490a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/tray_board.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a3287cc126e6b61e508a6db101dee9ef020b13cbdeeb3266766ddf837798338a","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/window_icons.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","63bbaa244728a2fb4bd53ad5c35f7ff4b95790e70358d47c34ae704ea79d4a4e","ui-shell | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/platform/windows_window_icons.rs:138 [UTF8-LF sha256=bc430351f14d15d6559e6f1dd8a593329c1e05cf7661278856d959b9ab539f6b; anchor=pub fn apply(] | desktop/src/ui/shell.rs:1167 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=desktop.set_icon(&icon)]","Read the complete current donor at 5a6961ce. Adapt its actual owned HICON cache, alpha icons sized for window DPI, both ICON_SMALL/ICON_BIG slots, subclass protection against framework overwrites, WM_DPICHANGED refresh, and WM_NCDESTROY disposal. The selected peer artwork now reaches both taskbar and caption through the existing synchronize_context owner. | Retain both actual hidden-window lifecycle tests: real Win32 icon slots, borrowed-handle survival, replacement/disposal, DPI sizes and true-color bitmaps. Inline the complete taskbar_preview.rs::bitmap dependency function (361..393), without importing media preview behavior. Diagnostic logging uses stderr because Pakar has no log dependency.","","","desktop/src/platform/windows_window_icons.rs:209 [UTF8-LF sha256=bc430351f14d15d6559e6f1dd8a593329c1e05cf7661278856d959b9ab539f6b; anchor=fn hidden_window_keeps_both_icon_slots_and_releases_only_owned_handles()] | desktop/src/platform/windows_window_icons.rs:310 [UTF8-LF sha256=bc430351f14d15d6559e6f1dd8a593329c1e05cf7661278856d959b9ab539f6b; anchor=fn application_icons_use_true_color_alpha_bitmaps_at_each_native_size()]","","Both real Win32 hidden-window icon tests and shared branding checks passed. Confirm actual taskbar appearance after deploying the updated Rust executable; pinned launcher artwork and stable application grouping are unchanged.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/windows_media_session.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","69366849a21c8a2520839da95aa7ad6a6fdd5e740ee082b6bbad5b153c3402e0","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/windows_quick_actions.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","35f6de708a0e402f6958a4d8feeead5037b42174286050ddc98c494d4173e4cb","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","equivalent-behavior","complete","desktop/src/platform/windows_quick_actions.rs:15 [UTF8-LF sha256=432e49b73bdd263fd21de74cdded3de2115605f203f4f3a455e1e2d8553cc0a3; anchor=pub const WINDOWS_QUICK_ACTIONS]","Actual typed action/resource catalog, equality traits, explicit negative resource-index selection, Preferences, Exit and generic Toggle fullscreen. Controller actions share the launch/IPC dispatcher and resource compiler.","Play / Pause, Previous chapter, Next chapter, Mute / Unmute media quick actions [not-applicable]","Play / Pause, Previous chapter, Next chapter, Mute / Unmute media quick actions: Pakar intentionally has no mpv playback, chapters or media volume. These would call removed media business methods. Connect, device settings, refresh, workspaces and About are real controller navigation actions instead; generic fullscreen is retained, not misclassified as media-only.","desktop/src/platform/windows_quick_actions.rs:69 [UTF8-LF sha256=432e49b73bdd263fd21de74cdded3de2115605f203f4f3a455e1e2d8553cc0a3; anchor=fn controller_shell_actions_have_unique_native_resource_ids]","","Visible Windows Jump List clicks remain a manual acceptance gate; typed launch forwarding and resource uniqueness are tested.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/windows_shell_icons.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e1d8793f8f1697f2030bc407f51e48cab4063964c051f2e21d1f60ae3349732a","ui-shell | windows-desktop | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","equivalent-file","complete","desktop/src/platform/windows_shell_icons.rs:45 [UTF8-LF sha256=e1d8793f8f1697f2030bc407f51e48cab4063964c051f2e21d1f60ae3349732a; anchor=pub fn shell_icon_ico]","Byte-identical actual Phosphor rasterizer, centered glyph coverage, all seven ICO resolutions, bottom-up BGRA, DWORD-aligned AND masks and explicit directory offsets. Pakar build.rs keeps it for semantic quick-action assets; application PE/window/tray artwork now uses the shared master and actual Pealayer branding conversion.","","","","","User-configurable icon packs and runtime state-icon transitions are a separate unresolved integration; retaining the generator does not implement that editor.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/platform/windows.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b7e27d61d8031367e34c4cd05c2fdc8720f7dfd9ec19acc49fc64414109cf178","tray-tooltip | native-lifecycle | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/preferences_contract.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1a688a178041f8966ac2b4533b303b7caf0db098f952cb1b7ca5eb2354428c00","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/process_control.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","46fe50bc7942e3c1540284ad2d4dd31ae96f0390f3acc84174090aa23fc5241f","windows-startup","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/remote_location.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d4269d2f5c975dc1b6a49c796b1a28eebde6c1fc5eff5fe1a69d387c3666c459","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/binary_udp.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e28bf66583055cbab547955584617d3a85d5597ede6288ef830bbc680100e9b6","transport-convergence","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/41","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/discovery.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a707a76b8424353a304ec28e344e467e89823b81c1f4dca321ec3b7060069c6c","bridge-repeater | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/platform/lan_discovery.rs:27 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=pub struct Advertiser] | desktop/src/platform/discovery.rs:174 [UTF8-LF sha256=126098720cf4b0d91a74e7147b41954f2361960f4ae7d210896f8c762ae24fd3; anchor=pub fn ssdp_locations]","Entire source read. Actual mdns-sd registration/browse/monitor, socket2 reusable UDP, bounded candidate queue/workers, SSDP/MNDP codecs and expiry registry adapted. Replace parked immortal lifetime with stop-owned daemon/threads; reject auto hostname suffix on NameChange and publish failure. Actual API-port metadata used in Dart too.","Pealayer cross-product public enrichment/identity merging and full native adapter-change recovery [pending]","Pealayer cross-product public enrichment/identity merging and full native adapter-change recovery: Do not discover unrelated media servers as compatible Pakar board APIs or claim generic Pealayer RPC. Dynamic interfaces and multi-NIC/IPv6 acceptance remain pending; source fixture is not router/firewall proof.","desktop/src/platform/lan_discovery.rs:755 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=fn bridge_mndp_uses_explicit_application_port_not_guessed_port80] | desktop/src/platform/lan_discovery.rs:774 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=fn bridge_ssdp_requires_source_location_binding_and_unique_headers]","","Issue #2: Pealayer cross-product public enrichment/identity merging and full native adapter-change recovery. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/download_media.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","68ea8ace5793a45084d88be37e6168b9eb70d4a483d79b73b52b7af6a261be8e","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/fs_api.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","85d1e8f3c21f2d09b5ea5380cd6c680fbe3d639b0cf13f3c36d2b573b75348e7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/fs_locations.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e87720c0c3ea7af933a0234b0458b804af13bc49c912714eb488dadd3afc3cb7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/media_stream.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","11ee485001d35b573c41d9535c80e03201160c159217f65be1d68f4add6a8386","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/mod.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","056b428dc44237011e4f299b9dc1f5c53161627368dab78b38e596bfb39f41e6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/thumbnails.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","07e3cd2307f1dc9eb0ca58d2d6358f9485d1ebd9d8acbb33cab50d4ef2be7c20","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/udp_client.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3dcf43190a9448abdb78a0d1de243ccd4eab1dcea5db81ba1a8c2c99c569929b","transport-convergence","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/41","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/udp_codec.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f5a2fbe61a20083008012112aad2e2f1ed6bc191f8b27d4ade4df4d0c9984f20","transport-convergence","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/41","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/server/web_assets.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","61c1dc863eefcd78d07ea0320b372bb6b5c4a4bb0437fb1e1f267a67ad7d0505","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/startup.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9baf7b0fdb1a6c7953c951dd3fa915228e27d6e7323774d176d77e36fe472649","windows-startup | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/subtitle.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f88a9b9586b78fadecbb23d45f25717f4a1e43d132430fe8af9a8b14b9355a35","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/about.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c1108051b5cdb102a07f2e1c7763f27da1538965f4ffddc220db3cf2f8757f2d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/action_customization.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d987e725d54a9bc695edacea9fc737ceab26f5ce42763328204f97fa17c67624","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/audio.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c4adc41d29cb236e2f599c384b24f69f0c01244b8c6fb0548d819bd7433333ef","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/board_info.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ab1c99e674e902e37626963e2dd5cf7d993965334411d5e33dafd1ea2bf79e51","board-silent | device-context | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","desktop/src/capabilities.rs:7 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=pub struct Manifest] | desktop/src/ui/shell.rs:1062 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn synchronize_context(] | desktop/src/ui/device_settings.rs:23 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=pub(crate) fn available(] | docs/DEVICE-CONTEXT.md:84 [UTF8-LF sha256=3d7c4a2b05e71ed13fc0f048d852c84d31b52cb1cf63e76180591a6f17a22fe8; anchor=## Exact reuse and remaining useful code] | desktop/src/board_silent.rs:128 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(]","Reread all 1280 lines through EOF. Prior authoritative overview/capability/front-panel adaptation remains; shared dropdown dependency is now imported, but full typed board settings and ACK consumers remain pending. | Numeric display controls are independent of Text; peer title follows acknowledged name and lost capabilities cancel Table work. | Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes.","TABS/draw persistence; overview typed board/profile/protocol/build/EEPROM identity; optional_row/yes_no [pending] | settings/settings_grid/setting_control/checkbox_setting/slider_setting/enum_combo/bit_checkbox/relay_mask_editor [pending] | capability_badges/capability_column_count/capability_pill/state_badge/unavailable and responsive tests [pending] | FRONT_PANEL_KEYS/key_icon fixed K1-K4 previous/next/decrease/increase [not-applicable] | front_panel_key_button and acknowledged menu/key/layout readback [pending] | seven_segment_preview, section/row drawing [replaced] | DropdownUiExt / dropdown::ComboBox board enum selector integration [pending]","TABS/draw persistence; overview typed board/profile/protocol/build/EEPROM identity; optional_row/yes_no: Existing settings/dialog owners retained; complete typed PCController identity/profile/readback and persistence/localization tests require a real adapter. Current manifest is not that universal adapter. | settings/settings_grid/setting_control/checkbox_setting/slider_setting/enum_combo/bit_checkbox/relay_mask_editor: Full EEPROM draft/write/readback, menu/reset/reboot and relay/PWM/RF/LCD/macro editors remain useful pending contracts. Current driver absence hides them but does not certify generic helpers imported. The Silent checkbox is now adapted into actual native/Web/Flutter Preferences with full-record preservation and ACK/readback; the remaining editors and broader donor field set stay pending. | capability_badges/capability_column_count/capability_pill/state_badge/unavailable and responsive tests: Availability semantics adapted; entire donor badge geometry, localized empty states and responsive/keyboard consumer tests remain unverified. | FRONT_PANEL_KEYS/key_icon fixed K1-K4 previous/next/decrease/increase: Our board has nine shift-register/ADC keys; four hardcoded identities would be false. Matching future adapters can advertise them. | front_panel_key_button and acknowledged menu/key/layout readback: Nine-key state exists, but full remotely navigable front-panel/menu/key commands need per-board descriptors and donor ACK tests. Incompatible labels do not justify dropping reusable command helpers. | seven_segment_preview, section/row drawing: Existing Pakar seven_segment/dialog primitives own preview and geometry. A duplicate renderer would fork styling; fresh peer gates wrap the current owners. Native paint acceptance remains pending. | DropdownUiExt / dropdown::ComboBox board enum selector integration: The tracked shared dropdown module is now fully read and imported, with native consumers and donor tests. This does not implement every generic consumer contract in this file: render-rate policy, workspace/language/direction actions and complete board EEPROM enum ownership remain independently pending. Native execution and visual acceptance are reported separately.","tests/web_context_test.mjs:168 [UTF8-LF sha256=a76a645ffaca445ca0c4ec835a3e577f781b7f05a0f88d14ca326f303b2cdf02; anchor=Native wiring is source-checked only] | desktop/src/capabilities.rs:605 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=fn no_profile_or_individual_ack_means_no_controls] | tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=e9c8ad97498076d6d7d84531b8558e18c2251aa1e4e0dce2d8b21918eb4c1e54; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of []","","Typed PCController adapter, donor tests and native runtime proof remain #10/#3/#6. No whole-file equivalence or application superiority claimed. | Shared dropdown dependency now has a complete-read comparison; preserve remaining generic consumer contracts and verify native runtime without claiming whole-file parity. | Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/color_picker.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fe2bf96c968d83874903f5d06085775f5787cf24467fb0c7be3fcf53077c1aa4","native-dropdowns","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","parity-gap","complete","desktop/src/ui/color_picker.rs:25 [UTF8-LF sha256=3a42e1d960fab77e1496899d7c708882f5db1ece1e92c01bd3192bc3e9eef0d5; anchor=pub fn remember_color(] | desktop/src/ui/color_picker.rs:243 [UTF8-LF sha256=3a42e1d960fab77e1496899d7c708882f5db1ece1e92c01bd3192bc3e9eef0d5; anchor=pub fn accent_picker(] | desktop/src/ui/preferences.rs:445 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=super::color_picker::accent_picker] | desktop/src/ui/i18n.rs:198 [UTF8-LF sha256=0f06c9f2f84e5710fe5bbea7a83221c0c527e61ba52ab0b63ee032974ced6739; anchor=""Recent colors""]","Lamp-background checkpoint scoped rereview of configure_language/palette_tr/recent_row, current accent_picker consumer and Recent colors translation. Board-palette face preference stays separate from accent picker; recent/session colors, validated draft and localized palette labels are unchanged. Current preference/i18n hashes rebound without claiming pending color-picker parity. | Reread all 550 current donor lines through EOF. Actual session-only12-color MRU deduplication, recent/shared swatches, integrated HEX-field swatch, full-width Custom choice, independently anchored palette/validated temporary HEX draft and prior donor tests remain adapted. The newer integrated Custom expansion/density behavior is pending; current production accent consumer is not a complete Preferences contract. | Scoped hover/grid checkpoint rereview: donor configure_language, palette_tr and recent_row (lines 5-77) still route Recent colors through translation; current Pakar Recent colors/Shared colors/Choose color labels remain intact. The current target changes add first-wins grid labels, not color-picker behavior. Refreshed this target hash after reading those exact functions/labels; the earlier full-file review and all pending omissions remain historical and unchanged. No new palette runtime acceptance is claimed. | Preferences geometry checkpoint reread complete actual src/ui/color_picker.rs through EOF and compared the unchanged accent_picker consumer and its RGB-string draft ownership. The fixed body/footer host retains the same semantic swatches, recent session colors, full-width Custom row and separately anchored validated HEX palette. System-accent ownership and the donor's newer one-popup Custom expansion remain explicit gaps; refreshing the Preferences target does not certify them.","palette_contents baseline/draft ownership and integrated color_dropdown one-popup Custom expansion, dynamic screen-height clamp/growth and explicit arrow-key opening [pending] | Pealayer asset path, session ID and product-specific shared-colors heading [replaced] | Full System accent mode and shared native/Web/mobile Preferences contract [pending]","palette_contents baseline/draft ownership and integrated color_dropdown one-popup Custom expansion, dynamic screen-height clamp/growth and explicit arrow-key opening: Fully reread all 550 current donor lines through EOF. Pakar still uses its previously imported independently anchored Custom palette/validated HEX draft. Shared dynamic density and geometry are now imported and tested; the newer single-popup expansion, screen clamping and explicit opening behavior still require the real palette baseline/draft owner before replacing the working popup split. | Pealayer asset path, session ID and product-specific shared-colors heading: Uses the actual already imported shared palette asset, Pakar context ID and localized generic headings without disk persistence for recent colors. | Full System accent mode and shared native/Web/mobile Preferences contract: This source module is imported, but the current persisted RGB-string consumer is not Pealayer dynamic OS-accent mode or cross-surface preferences ownership. The selected Preferences Accent branch was inspected; that entire dependency file is not certified by this review.","desktop/src/ui/color_picker.rs:376 [UTF8-LF sha256=3a42e1d960fab77e1496899d7c708882f5db1ece1e92c01bd3192bc3e9eef0d5; anchor=fn accent_custom_row_opens_separate_palette_without_mutating_on_open()] | tests/native_dropdown_test.mjs:1 [UTF8-LF sha256=c8ac060ff9ab0355f45d68b1cd503c208155632423a262f93f800249ba922662; anchor=Wiring/provenance checks]","","Import the full applicable shared Preferences contract and System accent ownership across surfaces; execute native behavior tests and capture the deployed palette. Source guards are not runtime or visual evidence.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/control_bar.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","56d1f904a4ef361d72819616bdf5384b79f6e2aee610bea4b6ef757d57d79608","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/control_density.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","690a964825638da4272550f389a948ad62b5947bad03df8aaee60de49c1325ed","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete","desktop/src/ui/control_density.rs:7 [UTF8-LF sha256=d5e8b6ae76c101f6473297f4305061ca8b5d83a7e1f4137850383a66b9b1ff6c; anchor=pub fn configure(style: &mut egui::Style, density: UiControlDensity)] | desktop/src/config.rs:38 [UTF8-LF sha256=b84801a85e31a44b2691bd5f6ccefea0106d799952b0fb61e2d6162ee11b9414; anchor=pub enum UiControlDensity] | desktop/src/ui/preferences.rs:447 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=from_id_salt(""control-density"")] | desktop/src/ui/dropdown.rs:36 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=crate::ui::control_density::paint_chevron] | desktop/src/ui/color_picker.rs:162 [UTF8-LF sha256=3a42e1d960fab77e1496899d7c708882f5db1ece1e92c01bd3192bc3e9eef0d5; anchor=crate::ui::control_density::height(ui)]","Lamp-background checkpoint reread all 97 current donor lines and current AppConfig enum plus Preferences density consumer. Optional semantic face changes paint only; density, font growth and zero-expansion policy are unchanged. Inspected config/Preferences references rebound, not new donor-wide acceptance. | Read all 97 donor lines through EOF. Imported the single 24/28/32/36-pixel density policy, large-font growth, zero widget expansion, open chevron painter and choice tick painter. Pakar's persisted Preferences field now configures global text fields, dropdown triggers, popup choices and color fields through this shared owner. | Reread all 97 current donor lines and reviewed current Pakar configure plus production-helper interaction regressions. The imported zero-expansion policy now also fixes all widget-state stroke widths and radii to the inherited inactive geometry; Pealayer 5b3d5c150d714a3f951378867791b06855155094 hardware_action_button demonstrates why recoloring inherited stroke width and retaining the Button font matters after egui frame margins are computed. This extends the exact donor invariant to stock buttons and semantic helpers, including zero-stroke menu scopes. Root canonical native Test checkpoint reports 121 ui:: filtered tests passed, zero failed; tests exercise hit rectangles and painted caption origins through hover/press/focus/selection/disabled in both themes, palettes, every density and 1.0-2.0 scales. Native screenshot/deployed-host acceptance remains pending.","Donor singleline_text_edit(ui, text) without RTL alignment [replaced] | Donor color_dropdown row in the density fixture [replaced]","Donor singleline_text_edit(ui, text) without RTL alignment: Pakar preserves the donor's Button font, dynamic minimum height and zero vertical margin while retaining its required Persian/LTR input alignment. The focused density matrix exercises that production helper. | Donor color_dropdown row in the density fixture: Pakar's current color consumer separates the dropdown trigger and custom palette popup; the test covers its real shared dropdown trigger, custom row and HEX field instead of adding a dormant donor-only API.","desktop/src/ui/control_density.rs:88 [UTF8-LF sha256=d5e8b6ae76c101f6473297f4305061ca8b5d83a7e1f4137850383a66b9b1ff6c; anchor=fn inputs_combos_color_triggers_and_menu_rows_share_density_in_both_themes()] | desktop/src/ui/button_geometry_tests.rs:146 [UTF8-LF sha256=4985dc82110f0948c5153b5e9b7b472054b0f62d10a8e2dbb6a38a664848a6a1; anchor=fn button_hit_slots_and_caption_ink_survive_every_interaction_state()] | desktop/src/ui/button_geometry_tests.rs:151 [UTF8-LF sha256=4985dc82110f0948c5153b5e9b7b472054b0f62d10a8e2dbb6a38a664848a6a1; anchor=fn semantic_actions_preserve_inherited_zero_stroke_menu_geometry()]","","","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/controls.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f5211d73c38438f9cff2543ac234965a8dabd26f4a532fb8b8ecf51248fc0a56","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/ui/cell_table.rs:368 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn find_field(] | desktop/src/ui/cell_table.rs:394 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn table_helper(] | desktop/src/ui/cell_table.rs:1108 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn cell_context_menu(] | desktop/src/ui/shell.rs:2030 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn draw_table(]","The native-table owner fully read actual C:/Users/David/AppData/Local/Programs/Pealayer/source/Pealayer/src/ui/controls.rs through EOF in two bounded reads, including history/blame. Adapt draw_elapsed_editor's fixed text-editor slot and centered vertical alignment (originating change 9ea94c09), draw_contextual_transport_nudge's exact allocation and centered glyph, volume_slider_widgets' stable value lane, and transport_context_menu's shared action dispatch/gating. Pakar find_field, table_helper and cell_context_menu use these patterns without importing media commands. | The table's cell/background/keyboard menus share one action path with capability, connection, pending-command and lost-lock checks; visual row/column selection, inverse/copy, diagnostics and view options remain contextual. Normal selection/status help stays muted, actual cautions/errors use semantic treatment, and the helper lane does not resize with its contents. grid_canvas/visual_line and all-80-cell staggered fit are new Pakar spatial algorithms, not claimed donor table code. | An actual native framebuffer after the first build exposed centered helper text and a 520px Find width cap. The follow-up uses a leading-edge vertically centered helper galley, a single reserved helper lane, full responsive Find width and pixel telemetry in the existing footer. The strengthened helper test checks exact text left edge/vertical center; a new Find-row test rejects a fixed width cap. Initial test/build success did not establish final visual acceptance; final source must be rebuilt and recaptured separately.","Playback transport, elapsed timecode, seek and volume commands [not-applicable] | Remaining generic control configuration, input ownership and complete donor runtime test matrix [pending]","Playback transport, elapsed timecode, seek and volume commands: The table controls MCU-owned cell state and has no media playback domain. Only reusable geometry, contextual action routing and semantic helper treatment were adapted. | Remaining generic control configuration, input ownership and complete donor runtime test matrix: A complete source read does not establish all-controls parity. This pass maps the exact listed functions to table consumers; other useful generic configuration and cross-platform gesture/focus behavior still require applicable consumer reconciliation and installed tests.","desktop/src/ui/cell_table.rs:1774 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn find_row_fills_responsive_panel_without_a_fixed_width_cap()] | desktop/src/ui/cell_table.rs:1709 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn table_canvas_contains_every_staggered_cell_and_focus_padding()] | desktop/src/ui/cell_table.rs:1727 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn visual_context_selection_matches_rows_columns_and_reordered_ids()] | desktop/src/ui/cell_table.rs:1739 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn table_actions_are_gated_by_route_capabilities_selection_pending_and_lock()] | desktop/src/ui/cell_table.rs:1751 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn find_icon_is_centered_inside_stable_editor_slot()] | desktop/src/ui/cell_table.rs:1802 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn table_helpers_reserve_height_and_warn_only_for_actual_cautions()] | desktop/src/ui/shell.rs:394 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn table_scene_fits_small_dock_and_zooms_at_pointer()]","","Issue #3: execute the canonical native tests and inspect actual desktop table/menu screenshots and pointer/keyboard behavior. Source guards and simulated snapshots are not installed-board or physical acceptance.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/dialog.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8a396d67862578f8727e43a952e82120b20c9c582ebcc5366ab0968ba8f704d8","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","desktop/src/ui/preferences.rs:364 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=let action_height = super::control_density::height(ui).max(dialog::ACTION_HEIGHT);] | desktop/src/ui/cell_table.rs:725 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn manager_selector(] | firmware/esp/src/WebUi.h:183 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=/* Fixed manager slots:] | desktop/src/ui/effect_controls.rs:66 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=pub fn mode_picker(] | desktop/src/ui/panel_details.rs:161 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=pub fn correction_rules(] | desktop/src/ui/panel_details.rs:348 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=pub fn network(] | desktop/src/state_appearance.rs:52 [UTF8-LF sha256=567e65fa7d3e0e7ad7ef508b7944c0f861b376fd348031dd105ad2df94ece5eb; anchor=pub fn controls(] | desktop/src/minigame.rs:151 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn bounds(]","Lamp-background/hover correction retains actual navigation_control and stable_toggle fixed allocation, centered text and inside-stroke contract, reread directly in this scoped pass. Rounded/semantic circle/hexagon faces optionally use exact board-owned state RGB with contrast-selected ink; unknown stays neutral and sampled six-pixel frames stay unmodified. Shared hover edge strengthens contrast instead of replacing state edge with darker generic stroke. Selection/focus identity and hit geometry remain stable. Painter/contrast tests are source proof pending execution/capture. | Read all 952 donor lines through EOF. navigation_control's fixed allocation, clipped centered text and inside-stroke painting are adapted to manager_selector. Compact cell/row/state slots use the existing shared neutral animated cell_surface; state-dependent Button Frames cannot resize their text/content geometry. Selected widget metadata is retained explicitly. | Current complete 1236-line donor and complete mapped Pakar dialog.rs were reread by the status/front-panel agent; historical bounded geometry, inside-stroke navigation, equal action sizing, RTL adjustments, numeric modifier/clipboard/wheel and scrolling mappings remain intact. This is source comparison, not native test execution. | The root/native agent fully reread the same current 1236-line donor and mapped Pakar dialog helpers. EffectControls and StateAppearance now use actual section/action/setting-row helpers and reserved choice geometry. A fixed-role board creates no mode card or spacer, while first-wins reset remains independently live-gated. PanelDetails supplies responsive observed network cards and styled ordered correction drafts with square row actions and bounded virtualized mapping; narrow text wraps and long values truncate with tooltips. These are additional scoped consumers, not all dialog/modal behavior. | The final panel pass adds measured, accessible single-line feature-chip slots after an actual Hardware framebuffer exposed collapsed vertical labels. The shared setting-row brightness consumer now isolates an in-progress pointer draft by current peer, boot, route and connection epoch, otherwise reading the live observation on USB and Wi-Fi. Release or keyboard emits one intent; owner loss, Escape, lost focus or a missing panel frame cancels the draft. These are controller-specific safety/layout adaptations of the reused controls, not newly claimed donor numeric-control equivalence. | Preferences footer checkpoint reread the complete actual 1236-line src/ui/dialog.rs at C:/Users/David/AppData/Local/Programs/Pealayer/source/Pealayer. Existing imported action-button, navigation and scroll-column helpers remain reused. Preferences reserves trailing Save/Cancel slots before clipping status rather than allowing a leading long status to consume action width; native and embedded hosts share this layout. The added actual-egui geometry regression exercises resize, both text directions, regular/comfortable density, short and unmatched categories, long status, bounded action painting and unchanged drafts. No helper-process/focus-modal or full numeric-control parity is claimed. | 2026-10-29 Simon settings: specialist read all1236 actual dialog donor lines through EOF after inspecting setting_row/navigation/action helpers before edits; secondary dropdown source also fully read. Retain imported setting_row and detail-choice geometry for an optional bounded additional-steps field. Only explicit picker click applies current Pakar Config::defaults (3,5,7 at300/120ms); painting/reopening preserves user edits and wiring/boot/timer policies, and an unadvertised optional growth field is never invented. Inline tests cover bounds, visibility, explicit-only defaults and exact readback. These are Pakar game rules, not donor business logic; installed gameplay and wider generic dialog parity remain open. | 2026-10-29 native game-settings audit: root reread all1236 actual donor dialog lines and646 dropdown lines at unchanged recorded raw hashes. Retain existing section/setting_row/detail-choice geometry and keyboard-aware ComboBox. Replace stock Toggle selectable-values, add readable output predicates and numbered board-catalog entries. Known explicit game changes apply current engine defaults only to advertised rule fields, preserving wiring/device policies/unknown fields/same-mode edits. Contextual numeric editors have stable field IDs, unused controls are hidden, and painting output rows never reconstructs or drops optional JSON. All17 focused native game tests and5 shared-dropdown tests pass; installed ASUS behavior and wider donor parity remain open.","navigation_control's 80px minimum, left-aligned icon/title/metadata slots and selected bg_fill tint [replaced] | singleline_text_edit/workspace_overlay_layer/preferred_host/centered_default_rect/bounded_geometry/opaque frame/action buttons/action rows/navigation detail/section/compact_row/setting_row/scroll_column/fit_scroll and their donor tests [pending] | numeric_stepper/numeric_adjustment/adjust_numeric/numeric_slider_wheel/parse_numeric_paste/receive_numeric_paste/numeric_context_menu and seven pointer/paste/wheel tests [pending] | Current stable_toggle, fixed-slot close_button, confirmation_modal AlertDialog focus restoration/top-modal Escape/non-destructive backdrop, inline_caption_edit and density-aware singleline_text_edit [pending]","navigation_control's 80px minimum, left-aligned icon/title/metadata slots and selected bg_fill tint: A compact cell needs a centered number in 32x28; row/action slots are 96/104x28. The user requires neutral shared selection, not a tinted navigation side rail. Fixed text positions and inside strokes are preserved; existing side-rail helper remains unchanged. | singleline_text_edit/workspace_overlay_layer/preferred_host/centered_default_rect/bounded_geometry/opaque frame/action buttons/action rows/navigation detail/section/compact_row/setting_row/scroll_column/fit_scroll and their donor tests: Existing imported dialog helpers and the newly mapped effect/network/correction/state-appearance consumers are present. This scoped pass does not certify every call site or host/resize/action/localization test; full generic consumer and test reconciliation remains issue #3 work. | numeric_stepper/numeric_adjustment/adjust_numeric/numeric_slider_wheel/parse_numeric_paste/receive_numeric_paste/numeric_context_menu and seven pointer/paste/wheel tests: Helpers already exist in the imported module; bounded input geometry, paste ownership, wheel tail suppression and context behavior need their actual donor runtime tests restored and controller settings coverage. Hover selector acceptance is not numeric-control parity. | Current stable_toggle, fixed-slot close_button, confirmation_modal AlertDialog focus restoration/top-modal Escape/non-destructive backdrop, inline_caption_edit and density-aware singleline_text_edit: Density-aware singleline_text_edit is adapted, but the generic stable_toggle, fixed-slot close_button, confirmation-modal focus/top-modal Escape/backdrop and inline-caption behavior still need complete consumer/test reconciliation. Current custom Preferences/device dialogs are not certified equivalent to those donor helpers.","desktop/src/ui/cell_table.rs:1950 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn hover_strengthens_existing_cell_edge_without_replacing_selection_identity()] | desktop/src/ui/cell_table.rs:1978 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn opted_in_semantic_shapes_use_exact_fill_without_moving_the_hit_slot()] | desktop/src/ui/cell_pixels.rs:292 [UTF8-LF sha256=547feb8158f8436ce6b3664dd90fcd59affdcce21dc7f9be273d2945e7424da6; anchor=fn pixel_preview_hover_preserves_rgb_and_fixed_outline_width()] | desktop/src/ui/cell_table.rs:2102 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn manager_hit_slots_text_and_wrap_never_follow_hover_or_stroke_width()] | tests/web_cell_table_test.mjs:12 [UTF8-LF sha256=ac7e5a9d0b7af5bcacad0949c10e4dc9d08377364c05495593585883b566d6b1; anchor=Manager must not allocate state-dependent selectable Frames] | desktop/src/ui/effect_controls.rs:472 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn fixed_role_board_allocates_no_mode_card_or_spacer()] | desktop/src/ui/effect_controls.rs:512 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn choices_keep_equal_geometry_when_hovered_selected_or_disabled()] | desktop/src/ui/effect_controls.rs:484 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn reset_remains_available_for_a_single_first_wins_mode_only_when_live()] | desktop/src/ui/effect_controls.rs:417 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn game_press_requires_explicit_applied_mask_and_live_admission()] | desktop/src/ui/effect_controls.rs:303 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn brightness_drag_retains_draft_across_observations_and_commits_once_on_both_routes()] | desktop/src/ui/effect_controls.rs:343 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn brightness_cancel_disconnect_and_owner_changes_never_commit_old_gestures()] | desktop/src/ui/effect_controls.rs:391 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn brightness_keyboard_commits_once_and_unknown_observation_remains_non_mutating()] | desktop/src/ui/panel_details.rs:466 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=fn feature_chips_wrap_as_whole_slots_without_vertical_labels_or_overflow()] | desktop/src/ui/panel_details.rs:610 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=fn network_and_corrections_stay_bounded_and_passive_in_narrow_panels()] | desktop/src/ui/panel_details.rs:529 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=fn scoped_action_rows_fit_narrow_cards_and_keep_wide_rows_compact()] | desktop/src/ui/panel_details.rs:589 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=fn ethernet_uses_the_board_link_up_observation()] | desktop/src/state_appearance.rs:337 [UTF8-LF sha256=567e65fa7d3e0e7ad7ef508b7944c0f861b376fd348031dd105ad2df94ece5eb; anchor=fn appearance_cards_wrap_within_docked_panels_without_sending_on_render()] | desktop/src/state_appearance.rs:255 [UTF8-LF sha256=567e65fa7d3e0e7ad7ef508b7944c0f861b376fd348031dd105ad2df94ece5eb; anchor=fn unavailable_connection_disables_appearance_and_preview_without_hiding_them()] | desktop/src/minigame.rs:1306 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn minigame_simon_growth_is_bounded_and_visible_only_in_sequence_settings()] | desktop/src/minigame.rs:1324 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn minigame_simon_defaults_apply_only_on_explicit_mode_change()] | desktop/src/minigame.rs:1359 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn minigame_growth_readback_must_match_requested_value()] | desktop/src/minigame.rs:1057 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn minigame_every_mode_selection_resets_rules_but_preserves_wiring_and_device_preferences()] | desktop/src/minigame.rs:1188 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn minigame_settings_all_modes_render_without_commands_or_draft_mutation()]","","Execute and record current native panel/painter geometry tests, then capture/deploy through guarded workflows. The earlier cache-budget blockage is historical, not asserted current. Source/DOM-double or native offscreen tests are not installed visual or physical acceptance. | Complete the named generic dialog call-site/test reconciliation in issue #3; no whole-file behavioral equivalence or whole-project superiority claim.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/dropdown.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","134f1613df05c9db44f8ccd178981a8eca4fb6c254ced6466229afca66b40ee9","native-dropdowns","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","scoped-improvement","complete","desktop/src/ui/dropdown.rs:398 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=pub trait DropdownUiExt] | desktop/src/ui/cell_table.rs:763 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn cell_order_controls(] | desktop/src/ui/connection_controls.rs:90 [UTF8-LF sha256=02bbb46d280c606868f0f18220cb092c0dca2e07f9b06aa31bee1e4f4625ec65; anchor=pub fn draw(] | desktop/src/ui/preferences.rs:443 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=super::dropdown::ComboBox::from_id_salt(""theme"")] | desktop/src/ui/device_settings.rs:151 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=super::dropdown::ComboBox] | desktop/src/ui/shell.rs:2976 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=super::dropdown::ComboBox] | desktop/src/ui/effect_controls.rs:11 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=pub fn backend_picker(] | desktop/src/led_backend.rs:39 [UTF8-LF sha256=34380845ae7616e7d2ae6718f0bc3ff20c2ef36380c7a3374ed9e1f394cb5978; anchor=pub fn finish_network(]","Lamp-background checkpoint scoped rereview of actual ComboBox::show_ui/dropdown_style/menu_ui and unchanged imported module. Preferences theme/density and shell transition selectors retain shared geometry, keyboard/selection registration and closed-menu ownership. Workspace checkbox does not replace those selectors. Only inspected consumer hashes are rebound; earlier complete-read provenance remains historical. | Reread all 646 current donor lines through EOF against the retained target. Actual focus owner, enabled/selected entries, search focus, Arrow/Home/End/Enter navigation, disabled skipping, inside focus stroke, nested menu framing and closed-popup cleanup remain imported. Dynamic density, chevron, non-closing inline expansion and the navigating guard for unrelated popup editors are now imported too. | Current exclusive-transport slice reread all646 donor lines again. Unified connection draw uses actual menu_ui/DropdownUiExt enabled/selected/focus registration, one lifecycle action, lazy selected-USB OS enumeration and closed-popup cleanup. Old dual-popup proof anchors were replaced with real new contextual/lifecycle tests, not kept as fictitious surviving tests; runtime execution remains separate. | Revalidated original-byte donor SHA134f1613 at unchanged revision5a6961ce after fully reading all646 donor lines, the entire control_density dependency and the retained target plus native_dropdown wiring test. Dynamic density, chevron, inline expansion and the newer navigating guard are imported with focused native tests; no production visual acceptance is claimed. | Native box-workspace checkpoint scoped rereview: donor ComboBox/show_ui, dropdown_style, menu_ui focus ownership, choice_with_close and DropdownUiExt were compared with the unchanged imported dropdown module and current shell consumers. The new key_boxes canvas delegation retains existing melody/menu dropdowns. Fixed full-row allocation, inside focus stroke, Button font, temporary density restoration and enabled/selected keyboard registration remain in use. Only the changed shell target hash is refreshed here; historical complete donor review is not recertified by this scoped pass. Native build and visual capture remain separate. | Runtime LED transmitter checkpoint reuses the fully read actual donor ComboBox/DropdownUiExt, not a second widget. effect_controls.rs renders a compact setting row from advertised compiled choices with observed active backend, pending/disabled state and explicit driver/storage errors, never an optimistic selected value. led_backend.rs is new Pakar transport logic, not claimed as donor code: one mutation, bounded same-board/boot observation-only completion, persisted/requested/active/readiness checks and no uncertain-write replay over HTTP, WebSocket or USB. | Preferences geometry checkpoint reread the complete current actual src/ui/dropdown.rs through EOF at the canonical Pealayer source path and compared the theme, density, language, direction and compact-category consumers. Theme, language and direction expressions are unchanged; the new narrow Preferences category selector uses the same ComboBox/DropdownUiExt focus owner and inside-stroke rows. No duplicate dropdown implementation or optimistic configuration write was introduced; only this reviewed Preferences target is rebound. | Native-table owner compared the current complete-read donor with cell_order_controls and replaced its stock Shape selector with the existing imported ComboBox/DropdownUiExt. Enabled/selected registration, full-width keyboard choices and closed-popup ownership now match the shared selector; the donor relay_style.dart was also compared for semantic styling but no Flutter sizing code is falsely attributed as a Rust import.","Pealayer active-dropdown ID [replaced]","Pealayer active-dropdown ID: Product-specific context key renamed to Pakar. No generic helper or donor assertion removed.","desktop/src/ui/dropdown.rs:470 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=fn dropdown_arrows_seed_focus_skip_disabled_commit_enter_and_cancel_escape()] | desktop/src/ui/dropdown.rs:549 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=fn dropdown_search_keeps_text_focus_until_arrow_enters_choices()] | desktop/src/ui/dropdown.rs:673 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=fn dropdown_color_rows_are_full_width_equal_height_and_hover_stable()] | desktop/src/ui/dropdown.rs:445 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=fn from_label_keeps_locked_egui_trigger_identity()] | desktop/src/ui/connection_controls.rs:266 [UTF8-LF sha256=02bbb46d280c606868f0f18220cb092c0dca2e07f9b06aa31bee1e4f4625ec65; anchor=fn one_contextual_control_lazy_usb_scan_and_busy_guard()] | desktop/src/ui/dropdown.rs:616 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=fn dropdown_unregistered_editor_retains_arrow_keys()] | tests/native_dropdown_test.mjs:1 [UTF8-LF sha256=c8ac060ff9ab0355f45d68b1cd503c208155632423a262f93f800249ba922662; anchor=Wiring/provenance checks] | desktop/src/ui/effect_controls.rs:235 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn backend_control_is_observation_only_without_an_explicit_choice()] | desktop/src/led_backend.rs:78 [UTF8-LF sha256=34380845ae7616e7d2ae6718f0bc3ff20c2ef36380c7a3374ed9e1f394cb5978; anchor=fn accepted_request_is_not_applied_driver_or_persistence()] | desktop/src/led_backend.rs:103 [UTF8-LF sha256=34380845ae7616e7d2ae6718f0bc3ff20c2ef36380c7a3374ed9e1f394cb5978; anchor=fn network_completion_observes_once_without_replaying_write()]","Preserves all current donor dropdown behavior while adding the locked egui from_label trigger identity for existing labeled settings and actual connection-control keyboard ownership with busy-port rejection. Clears texture ownership before native assertions to avoid a second panic masking a failure. Native execution and production visual acceptance remain separate from source wiring.","Installed native Output-panel visual acceptance and real USB/Wi-Fi switching in both directions with power-cycle persistence remain pending; native source/loopback tests do not prove optical output or full application parity.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/effects_library.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a485362a0ad275426ef20768233b5b80b1633f896750bb62ed374d7b964f2b73","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/elegance_theme.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8d11f915ccf56e5ab67232ceac7432051437484d1faecacabab62ec5403d63bd","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete","desktop/src/ui/elegance_theme.rs:23 [UTF8-LF sha256=a494def22553b0c21b4bb9b2f786f9d117b26ed163b2a254f0ec43f3f979556f; anchor=pub fn sync_elegance_theme(ctx: &Context)]","Read all 321 donor lines through EOF. Pakar retains the actual host-style-preserving Elegance adapter: palette caching, opacity, WCAG 4.5:1 filled-action correction, typography, radius and spacing derivation are unchanged. All three donor tests are now imported and execute against Pakar's real configuration owner.","Pealayer AccentColor and configure_native_appearance/configure_main_window_style test setup [replaced] | pub(super) set_source_palette visibility [replaced]","Pealayer AccentColor and configure_native_appearance/configure_main_window_style test setup: Pakar's canonical config::apply owns the same persisted RGB accent, system/light/dark theme selection, palette application, global styles and Elegance source palette. Tests call that production owner instead of adding stale compatibility types or a second appearance path. | pub(super) set_source_palette visibility: Pakar's config module is outside ui and requires crate visibility; the function remains non-public outside the crate and its behavior is unchanged.","desktop/src/ui/elegance_theme.rs:160 [UTF8-LF sha256=a494def22553b0c21b4bb9b2f786f9d117b26ed163b2a254f0ec43f3f979556f; anchor=fn elegance_tracks_live_theme_and_accent_without_changing_either_host_style()] | desktop/src/ui/elegance_theme.rs:231 [UTF8-LF sha256=a494def22553b0c21b4bb9b2f786f9d117b26ed163b2a254f0ec43f3f979556f; anchor=fn elegance_filled_actions_have_readable_white_ink_without_recoloring_focus()] | desktop/src/ui/elegance_theme.rs:269 [UTF8-LF sha256=a494def22553b0c21b4bb9b2f786f9d117b26ed163b2a254f0ec43f3f979556f; anchor=fn elegance_section_cards_are_opaque_compact_and_width_bounded()]","","","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/error.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1f62031276eaf7720a344f41cd0a920a92418bcf816f4012efc3fd6a6626b0c9","error-management","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/four_d.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0fc72e60c8ca9d876be5cfd1a7523878381c4aa0d6aa2297e2c9e948ced19e18","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/group_picker.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d7652450b26d97c79d4fa871da4203d210b4e76a1602af3c66537e03d6dc090b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/hardware_control.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1e20dcdd968c61fd97722f71db1c902bba92529823e85a0db4bdaa4361a756d9","device-context | ui-shell | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/i18n.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","811a48221c47c903c1d70ca904ead90a7a6b7f5ee0ba9a5f26a7e60dd30a75c3","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","desktop/src/ui/i18n.rs:6 [UTF8-LF sha256=0f06c9f2f84e5710fe5bbea7a83221c0c527e61ba52ab0b63ee032974ced6739; anchor=pub(crate) fn configure_ui_fonts] | desktop/src/ui/dialog.rs:18 [UTF8-LF sha256=854b8e1ca332650ad9964cb3e36f6a6304607502e953fa1bdf660bafb00f117f; anchor=pub fn singleline_text_edit] | desktop/src/ui/preferences.rs:448 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=AppLanguage::Persian] | docs/PERSIAN-PARITY.md:48 [UTF8-LF sha256=d1f873fb589b406316d77e9ca2fcaf652fe8773b1534063504fc1ab516b506da; anchor=## Exact source-to-target mapping]","Lamp-background checkpoint scoped rereview of logical-Unicode visual_text, script/input-alignment and directional layout helpers. Two application-owned preference strings have Persian translations; board names, protocol values and sampled data stay untranslated. Current preference/i18n hashes rebound, not whole-dictionary parity. | Actual donor platform/UI face loading, Vazirmatn and Phosphor registration, application dictionary, identity-preserving visual_text, script detection, input alignment and horizontal/vertical direction helpers retained and wired into real native controls. | Monospace Persian fallback and preference-driven priority refresh added without discarding later widget font registrations. Actual donor contextual glyph test adapted to both families; saved Unicode and peer identifiers never manually reversed. | Native control/grid checkpoint scoped rereview: donor visual_text, contains_arabic_script, input_alignment, layout/vertical_layout and logical-Unicode/alignment tests were compared with current singleline_text_edit and changed primary action styling. Input alignment still follows logical text/direction with centered Button-font geometry; action labels remain localized with explicit Button font. New key-box application-owned translations do not translate peer identifiers or reverse text. Font installation and shaping/font-retention tests remain intact. Updated current target/proof hashes after examining these portions, without claiming a new complete-file donor read or build/capture acceptance. | Preferences geometry checkpoint reread complete actual src/ui/i18n.rs through EOF at canonical Pealayer revision 5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad. Persian/System/English selection and independent automatic/LTR/RTL direction controls remain identical, with logical Unicode, native shaping and the retained bundled Vazirmatn path. The footer now reserves actions on the appropriate trailing edge, with clipped status in its remaining lane; its regression covers both directions. Untranslated application-management copy, named emphasis/font-family preferences and deployed Persian visual acceptance remain open, not resolved by a consumer hash refresh.","configure_preferred_fonts/install_ui_fonts UiFontFamily cache, normal/monospace font-family preferences, named pealayer-status-strong and pealayer-status-mono-strong emphasis faces, newer generic hardware/effects/status dictionary additions [pending] | Media playback, cue/timeline reveal and keyframe-specific dictionary keys [not-applicable] | Manage folders, Manage folder, New folder, Expand folders, Collapse folders, Move to folder, Delete folder, Confirm delete, Channels will be moved to Ungrouped, pending folder change and attached-board folder configuration copy [pending] | Separate ttf_parser coverage assertions and exhaustive native surface translations [pending]","configure_preferred_fonts/install_ui_fonts UiFontFamily cache, normal/monospace font-family preferences, named pealayer-status-strong and pealayer-status-mono-strong emphasis faces, newer generic hardware/effects/status dictionary additions: Fully reread all 1665 current donor lines through EOF. Pakar retains its existing registry-preserving language font installation and both-family Persian fallback; it does not yet expose these font-family preferences or named status emphasis faces. Generic hardware/action/status translations still need actual corresponding Pakar consumers and localization tests; only media/timeline-specific copy remains excluded. | Media playback, cue/timeline reveal and keyframe-specific dictionary keys: They describe explicitly excluded media business; no corresponding controller surface exists. No generic UI/tooling capability is excluded on that basis. | Manage folders, Manage folder, New folder, Expand folders, Collapse folders, Move to folder, Delete folder, Confirm delete, Channels will be moved to Ungrouped, pending folder change and attached-board folder configuration copy: Generic grouping behavior is useful but not yet integrated with actual board cell/group contracts. No fake folder actions or completion claim; retain on issue #4 for real grouping and localized acceptance. | Separate ttf_parser coverage assertions and exhaustive native surface translations: Avoid introducing a duplicate font parser dependency: actual renderer glyph/contextual and font-retention tests pass in 8849ab8 Windows CI after headless output repair. The run completes 114 passed/1 unrelated menu-label failure; no abort. Additional Unicode, production rendering, device-settings and status/transport copy remain unaccepted.","desktop/src/ui/i18n.rs:1559 [UTF8-LF sha256=0f06c9f2f84e5710fe5bbea7a83221c0c527e61ba52ab0b63ee032974ced6739; anchor=fn contextual_persian_in_labels_and_monospace_inputs] | desktop/src/ui/i18n.rs:1513 [UTF8-LF sha256=0f06c9f2f84e5710fe5bbea7a83221c0c527e61ba52ab0b63ee032974ced6739; anchor=fn changing_language_preserves_widget_fonts] | tests/localization_test.mjs:42 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=Peer text identical to a dictionary key]","","Inspect real deployed Persian inputs/menus/dialogs and finish application-copy/generic grouping parity. Actual 8849ab8 font-retention/shaping tests pass, but full native release remains open with one menu-label assertion; local cache budget remains enforced.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/icon_catalog.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0f62f471bc1a6fd3a1f0af3b03df11cd2a6f5a47f3acc0735dea7fd356c45c96","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/icons.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cd56a5849a0be621d8472b440c9cbac8b91bcaf603d228cb6148bba1eb554fc9","native-dropdowns | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","parity-gap","complete","desktop/src/ui/icons.rs:581 [UTF8-LF sha256=cd5fe34a628b22220e9be47bf4de262e5e8eeec8e7c045f6dde76414c511a40b; anchor=pub fn searchable_workspace_icon_picker(] | desktop/src/ui/shell.rs:4404 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=icons::searchable_workspace_icon_picker] | desktop/src/ui/menu.rs:7 [UTF8-LF sha256=80c2a5130e97fd8dfe62206034a48347b691fe06bb65998049937afeee37f602; anchor=pub fn submenu(] | desktop/src/ui/key_boxes.rs:56 [UTF8-LF sha256=eb5a980c1b2cf7498e43bf79510603dec52cd5e922f29cf0bcbb81d5d56b89b8; anchor=fn context_menu(]","2026-10-27 scoped submenu rereview: actual icons::submenu Phosphor right_text(CARET_RIGHT) and SubMenuButton implementation imported into desktop/src/ui/menu.rs and consumed by the key-box Selection and Panels menus. The existing complete-file receipt is not promoted to full application parity. | Lamp-background checkpoint scoped rereview of actual searchable_workspace_icon_picker and shell workspace picker call: same presets, stable stored name, fallback, localized search and shared native picker remain. New IPC preference does not change icon behavior; only inspected shell consumer hash refreshed. | Fully reread all1190 current donor lines through EOF. Production Phosphor vocabulary, stable names/kind fallback, searchable list/grid picker, UTF-8-safe match highlighting, bounded popups and disclosure/submenu helpers remain retained. New catalog/density/localized-title/fixed-header-slot behavior is separately pending, not certified by the prior eleven tests. | Actual donor regression tests restored: eleven tests, including interactive egui-frame search/select/reopen, both themes and popup width. | Scoped hover/grid checkpoint rereview: donor searchable_workspace_icon_picker (lines 620-647) and current Pakar draw_workspaces consumer preserve named presets, localized searchable picker and saved workspace icon selection. The key-box panel delegation does not alter that consumer. Refreshed the shell target hash after reading the actual call site; this is a scoped rereview, not a new complete donor-file review or deployed/native visual acceptance.","control_icon_catalog with icon_catalog.rs complete1500+ repertoire and new alias tests; translated_icon_name/localized search and preset title tests; searchable_icon_button_sized/with_slot and fixed_header geometry test; density chevrons [pending] | every_native_icon_editor_uses_the_shared_searchable_picker donor-only editor path list [replaced] | DropdownUiExt, dropdown_choice, register_choice and dropdown::ComboBox in searchable icon pickers [replaced]","control_icon_catalog with icon_catalog.rs complete1500+ repertoire and new alias tests; translated_icon_name/localized search and preset title tests; searchable_icon_button_sized/with_slot and fixed_header geometry test; density chevrons: Pakar retains its prior Phosphor presets/search/list/grid helpers, not the expanded donor catalog or new localized title/density/fixed-slot consumer contracts. icon_catalog.rs remains an independently pending dependency; do not copy unavailable presets or claim the new tests imported merely by reading this file. | every_native_icon_editor_uses_the_shared_searchable_picker donor-only editor path list: That assertion references Pealayer media/4D editor files not present in this product. Replaced only its call-site assertion with Pakar's actual workspace editor; the other ten tests were imported. This does not excuse missing generic editor features elsewhere. | DropdownUiExt, dropdown_choice, register_choice and dropdown::ComboBox in searchable icon pickers: Actual donor search-focus registration, list choices, custom grid registration and lifecycle wrapper are imported against the fully tracked dropdown source. Product context IDs are adapted; all eleven existing icon tests remain. Native execution is separate proof, and UI-wide picker consumer parity remains pending.","desktop/src/ui/icons.rs:839 [UTF8-LF sha256=cd5fe34a628b22220e9be47bf4de262e5e8eeec8e7c045f6dde76414c511a40b; anchor=fn pakar_workspace_editor_uses_the_actual_shared_searchable_picker()] | desktop/src/ui/key_boxes.rs:771 [UTF8-LF sha256=eb5a980c1b2cf7498e43bf79510603dec52cd5e922f29cf0bcbb81d5d56b89b8; anchor=fn box_clicks_reuse_selection_and_secondary_menu_never_actuates()] | desktop/src/ui/icons.rs:968 [UTF8-LF sha256=cd5fe34a628b22220e9be47bf4de262e5e8eeec8e7c045f6dde76414c511a40b; anchor=fn icon_picker_search_click_filter_select_and_reopen_work_in_both_forms()]","","Imported compact/control picker helpers are not all used by current panels; UI-wide application/action parity needs separate file reviews. | Shared dropdown dependency now has a complete-read comparison; preserve remaining generic consumer contracts and verify native runtime without claiming whole-file parity.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/layout.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d60b1913e9f5beb1417ef0951ccaadcdf89cd555a32279c3e6c70f14a94a3e17","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/layout/channel_folders.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","eb19245ab455a5eaee074f6e242ae9894f3d1dcabdf5d4be9396f9a70af63863","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/media_inspector.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4a7045dfb8499d83ccaa3c21d7a9684b3fccebfcb616efbd3ecbccacff9f53a0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/media_track_properties.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","df7757898953048d45cd51ad3c7da3d6eb76abb008c08f20f374b7b01bb0aa39","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/media_tracks.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bf883e6c5a330304782a7e0fc1052b07f8df83091add1957fae4c018bf092a82","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/menu.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a0196878c7b76b898d0a5791b122181d9045d3fbbe9f56de52bc43242edf2d9d","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/ui/menu.rs:15 [UTF8-LF sha256=80c2a5130e97fd8dfe62206034a48347b691fe06bb65998049937afeee37f602; anchor=pub fn top_menu_button(] | desktop/src/ui/shell.rs:1426 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=menu::top_menu_button(ui, crate::ui::i18n::text(""File"")] | desktop/src/ui/connection_controls.rs:90 [UTF8-LF sha256=02bbb46d280c606868f0f18220cb092c0dca2e07f9b06aa31bee1e4f4625ec65; anchor=pub fn draw(] | docs/NATIVE-MENU-COMPARISON.md:32 [UTF8-LF sha256=7319a38240f9c23a43f5a18c2f20d05b0c9d5ff273cf0e8f28b2ba98aa1aabd8; anchor=## Exact donor menu mapping and remaining decisions]","Actual top_menu_button body imported with only application state ID/public visibility adaptation; all four production menu headings use active-menu sibling hover switching. | Actual Button::shortcut_text idiom replaces space-padded primary labels in all six shortcut rows; separate right-aligned muted atoms are supplied by the same egui 0.36.2 dependency. Existing dispatch/Phosphor submenu retained; user-requested height policy unchanged. | Earlier independent WebSocket/USB popup adaptation is superseded by the user-required single selected Wi-Fi-or-USB dropdown/lifecycle. Retained actual selector persistence, manual OS hardware paths, lazy factual enumeration and explicit Connect/Disconnect; no Both mode or automatic fallback. Complete donor readiness and fixed endpoint geometry remain pending. | Current complete 883-line donor and full mapped Pakar menu.rs were reread by the status/front-panel agent. The actual top-menu helper and six shortcut_text consumers remain retained; this does not implement the newly added endpoint trigger.","TrackMenuState, track_menu_state, format_track_label; video/recent/close/media info/folder/timeline and Audio/Subtitles/Chapters blocks; track_menu_is_contextual_to_media_and_discovered_tracks and test_format_track_label_variations [not-applicable] | draw persisted application_shortcuts and Edit configuration action [pending] | draw ordered_workspace_profiles/active selection/reset save acknowledgment [pending] | draw Help Language/Direction/Keyboard Shortcuts menus [pending] | estop_button, draw_estop_release_dialog and draw shared-latch readiness/hide cluster [pending] | draw connection requested/connecting/connected status/manual discovery and remote connection/browser/download actions [pending] | DropdownUiExt selected workspace/language/direction entries and new unified dropdown lifecycle [pending] | Current header_endpoint_combo fixed 154-pixel clipped trigger/full 240-pixel popup and density/font/disabled-hover geometry tests [pending]","TrackMenuState, track_menu_state, format_track_label; video/recent/close/media info/folder/timeline and Audio/Subtitles/Chapters blocks; track_menu_is_contextual_to_media_and_discovered_tracks and test_format_track_label_variations: These require media tracks, chapters, video/timeline state or a media undo stack expressly excluded from Pakar. Their disabled Undo/Redo placeholders are not functional controller actions. Generic config-folder/device information actions remain pending separately. | draw persisted application_shortcuts and Edit configuration action: Current fixed accelerators match dispatch but are not the donor's validated persisted rebinding model. Restore parser/dependencies/non-media tests and controller action ownership; shortcut color/alignment does not certify rebinding. | draw ordered_workspace_profiles/active selection/reset save acknowledgment: Manager exists but inline ordered active-profile selection/state and immediate reset persistence are not restored. Requires profile identity/persistence acceptance rather than labels alone. | draw Help Language/Direction/Keyboard Shortcuts menus: Existing English/Persian preference lacks complete System language and Auto/LTR/RTL/configurable bindings contracts. Nonfunctional entries must not be shown as completed features. | estop_button, draw_estop_release_dialog and draw shared-latch readiness/hide cluster: Generic vector control, authoritative readiness, release confirmation/cancel/skip preference and synchronized remote release remain useful safety imports. Remove only media pause; adapt actual hardware latch contracts and tests. | draw connection requested/connecting/connected status/manual discovery and remote connection/browser/download actions: Pakar has connection/typed actions and firmware tools, but full donor lifecycle/readiness/authenticated endpoint adaptation is not compared or accepted. Media remote browser cannot be blindly substituted for firmware management. | DropdownUiExt selected workspace/language/direction entries and new unified dropdown lifecycle: The tracked shared dropdown module is now fully read and imported, with native consumers and donor tests. This does not implement every generic consumer contract in this file: render-rate policy, workspace/language/direction actions and complete board EEPROM enum ownership remain independently pending. Native execution and visual acceptance are reported separately. | Current header_endpoint_combo fixed 154-pixel clipped trigger/full 240-pixel popup and density/font/disabled-hover geometry tests: Pakar now has one unified method trigger and selected-method details, not independent route popups. It reuses240px popup choices but not the donor154px endpoint trigger/dynamic-density geometry assertions. Compare actual long-text/font/scale layouts before claiming geometry parity; no duplicate or pretend-ready control should be added to match labels.","desktop/src/ui/menu.rs:75 [UTF8-LF sha256=80c2a5130e97fd8dfe62206034a48347b691fe06bb65998049937afeee37f602; anchor=fn shortcuts_are_separate_muted_right_aligned_atoms_in_both_themes()] | desktop/src/ui/menu.rs:198 [UTF8-LF sha256=80c2a5130e97fd8dfe62206034a48347b691fe06bb65998049937afeee37f602; anchor=fn sibling_hover_switches_only_an_already_open_menu_and_clears_closed_state()] | tests/native_menu_test.mjs:12 [UTF8-LF sha256=8d7540f4c8abd4a39414d18cd3bedc70bbb8ab05af4077c206a4ce11beea6a01; anchor=actual donor helper must match after application ID/visibility/whitespace adaptation] | tests/native_render_lifecycle_test.mjs:31 [UTF8-LF sha256=655bb0a62d3144718b1b13d350fb7e416006b6c468e7e1445bbd2ebcb7c946dc; anchor=const compact=source=>source.replace]","","Restore remaining useful generic menu contracts above against actual dependencies; see exact function-level mapping in NATIVE-MENU-COMPARISON.md. Native CI paint/pointer tests and running-app visual acceptance are separate from source guards. | Shared dropdown dependency now has a complete-read comparison; preserve remaining generic consumer contracts and verify native runtime without claiming whole-file parity.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/mod.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a12993c8ee9d578b72197d2bef9a3e173472d3bd2e22d46511d98339099c96f7","localization | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/monitor_controls.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","058ed468407494461a2153a042c9fee80d89b24851c1469e7a45efc30ff79f0b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/motion.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e9ac14b42fcdc0d1411373bbcdd330560a2a58ac1c4a3b6cccb6ad40662c249b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/open_url.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e5b7ede0460080e1f08fba0aa7ea8455e81f0e41c15de8ace675d9dd7a9904ad","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/palette.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c169db6a61b79ebb2ce00f0ca442305eefeea7b34740720a2cdf6424d6fef85d","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/ui/palette.rs:36 [UTF8-LF sha256=3d04f723252650661f9fdacd2e1929f3ad28fac4cd3dc40720bca32eac4f3a7c; anchor=pub fn apply(]","Native semantic visual-role mapping and actual palette JSON; appearance geometry is not overwritten. | Reread all 166 current donor lines and reviewed current Pakar apply and new production-helper geometry tests. Retained actual semantic palette roles/catalog while completing active/open widget colors so egui stock white two-pixel pressed chrome cannot override the fixed-border color-only policy traced to PCController f2260e30525de82a95b00adddd2ebb3eda8d8443 and a304c3ec366b0e9c11634526587ee9e5575acdff. Widget corners/expansion are now explicit shared chrome; window geometry remains untouched. Pealayer 5b3d5c150d714a3f951378867791b06855155094 inherited-stroke/Button-font correction is exercised through the real semantic helpers, including menu zero-width inheritance. Root canonical native Test checkpoint reports 121 ui:: filtered tests passed, zero failed. Shared-preferences parity and runtime/human acceptance remain open.","WebAppearanceState and donor native/Web shared-preferences assertions [pending] | Donor default Native palette [replaced]","WebAppearanceState and donor native/Web shared-preferences assertions: Pakar lacks the shared native/Web preferences contract. These are useful generic requirements, not media business logic; omitting them cannot be justified as superior. | Donor default Native palette: Pakar chooses Studio as its product default. Both palettes remain available; this is a preference decision, not a measured improvement.","desktop/src/ui/palette.rs:121 [UTF8-LF sha256=3d04f723252650661f9fdacd2e1929f3ad28fac4cd3dc40720bca32eac4f3a7c; anchor=fn donor_surface_text_roles_and_geometry_are_preserved_in_both_themes()] | desktop/src/ui/button_geometry_tests.rs:146 [UTF8-LF sha256=4985dc82110f0948c5153b5e9b7b472054b0f62d10a8e2dbb6a38a664848a6a1; anchor=fn button_hit_slots_and_caption_ink_survive_every_interaction_state()] | desktop/src/ui/button_geometry_tests.rs:151 [UTF8-LF sha256=4985dc82110f0948c5153b5e9b7b472054b0f62d10a8e2dbb6a38a664848a6a1; anchor=fn semantic_actions_preserve_inherited_zero_stroke_menu_geometry()]","","Embedded Web consumes the same JSON catalog through a stale-generation check. Complete mobile catalog use and live native/Web preference broadcast/readback; pure donor host-resolution tests do not prove connected-host synchronization.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/peer_browser.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bb917e1b1f8f191f327732916611feb3d118cb36832db167a4277b48d71a81b8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/preferences.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1fa2482a389fee84c79eef3d69ad8cc0ecb922c319fd222219af3e90d7e6f965","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","desktop/src/ui/preferences.rs:365 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=egui::Panel::bottom(ui.id().with(""preferences-footer""))] | desktop/src/ui/preferences.rs:67 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn sync_connection_owner(] | desktop/src/ui/preferences.rs:96 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn sync_status_owner(] | desktop/src/ui/preferences.rs:315 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn connection_summary(] | desktop/src/ui/device_settings.rs:54 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=fn avr_page(] | desktop/src/ui/shell.rs:2909 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=pub(super) fn draw_led_settings(]","Lamp-background preference uses existing Workspace editor and actual imported saved/current/preview baselines, explicit Save and Discard. Parent agent reread all 2308 donor lines; evidence pass independently inspected donor draft lifecycle and current Workspace/Save/Discard consumers. Optional setting defaults false for existing profiles, serializes without other changes and is enabled for requested user only through guarded app-local IPC. Open Preferences blocks remote application rather than overwriting drafts. Roundtrip and preview/discard tests are source proof, not device/deployment claims. | Fully reread all2308 actual donor lines through EOF, including draft lifecycle, helper ownership, control rendering and tests. Pakar retains saved/config/previewed baselines, live preview, dirty close confirmation and rail/body/footer layout; this is a narrow adaptation, not complete Preferences equivalence. | Adapted actual PreferencesDraft::sync_external_appearance triple-baseline merge to sync_connection_owner. External selected method/enabled/endpoint/user/port update all three baselines while preserving unrelated dirty edits. Preferences now shows only the selected method's summary and delegates clean drafts to the single canonical connection dialog; unrelated Save cannot restore stale connection owner fields. | Status-bar pass extends that same live-owner triple-baseline mechanism with sync_status_owner: visibility, normalized order and leading/trailing placement update saved/current/previewed Preferences baselines without committing or discarding unrelated appearance edits. A footer change therefore survives a subsequent Preferences Save or Discard. The regression covers clean and dirty drafts; source coverage is not an installed-runtime claim. | Adapt the existing donor draft separation and clean-navigation rule to a contextual Preferences Board tab for every acknowledged device, not only buzzer boards. Device settings opens only after PC preferences are saved/discarded; no MCU draft is copied into AppConfig. The LED settings page invokes the actual shared LED controls rather than a duplicate engine or link-only placeholder; USB settings header shows its selected port only. | Preferences footer checkpoint fully reread the actual 2308-line donor at C:/Users/David/AppData/Local/Programs/Pealayer/source/Pealayer/src/ui/preferences.rs, with matching original-byte hash and revision 5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad. Adapt draw_preferences_editor's bottom-panel-first then CentralPanel allocation, the compact category selector below 560px, and the native host's 12px top/side but 2px bottom margin. Remove the guessed 260px body minimum; short viewports scroll the rail/body within real available space. Reserve Save/Cancel before truncatable status so long status text cannot displace actions. Keep all seven Pakar categories, capability gating, search, draft baselines and explicit save/discard behavior. This is geometry/draft preservation, not helper-process or full typed-Preferences parity.","NativePreferencesController helper process/HWND ownership, independent exit wake/watch, owned chrome and peer-active embedded authority [pending] | External ConfigFileWatcher90ms debounce, shared server config authority and complete dirty external-file conflict merge [pending] | preferences_contract typed sections/groups, content-derived responsive rows, inline checkbox and ChoiceSlider/MultiSelect/numeric-step controls, density/font/motion parity [pending] | Config-file open/copy/edit/folder menus, complete reload/import/export ownership, timed footer feedback and full save/preview failure lifecycle matrix [pending] | Playback/track/subtitle/history/media-association options and mpv audio refresh [not-applicable]","NativePreferencesController helper process/HWND ownership, independent exit wake/watch, owned chrome and peer-active embedded authority: Pakar uses its existing deferred egui viewport rather than the donor helper process. A matching appearance or native-dialog option does not establish owner-window, helper-exit cancellation or focus/chrome equivalence; import only after actual process/interop dependencies and host lifecycle tests are compared. | External ConfigFileWatcher90ms debounce, shared server config authority and complete dirty external-file conflict merge: The actual triple-baseline algorithm is adapted to live connection, workspace and status-bar owner fields. Other persisted/external fields and watcher/readback lifecycle are not covered by this change and must not overwrite unrelated drafts. | preferences_contract typed sections/groups, content-derived responsive rows, inline checkbox and ChoiceSlider/MultiSelect/numeric-step controls, density/font/motion parity: Existing Pakar controls implement only part of the donor editor. The full typed-contract dependency and dynamic layout/control tests were not imported in this slice; no all-controls or visual parity claim. | Config-file open/copy/edit/folder menus, complete reload/import/export ownership, timed footer feedback and full save/preview failure lifecycle matrix: Basic import/export and dirty Save/Discard behavior already exist, but do not implement the donor's complete picker/config authority, transient status and helper-exit matrix. Generic file-picker/control mechanisms remain useful, not excluded media business. | Playback/track/subtitle/history/media-association options and mpv audio refresh: The requested controller is explicitly mpv-free and has no media playback domain. Generic preference lifecycle, navigation, picker and rendering mechanisms remain independently pending rather than excluded with those options.","desktop/src/ui/preferences.rs:759 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn preferences_footer_stays_at_the_bottom_in_both_hosts_and_short_pages()] | desktop/src/config.rs:397 [UTF8-LF sha256=b84801a85e31a44b2691bd5f6ccefea0106d799952b0fb61e2d6162ee11b9414; anchor=fn cell_background_preference_is_opt_in_and_roundtrips_without_other_changes()] | desktop/src/ui/preferences.rs:918 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn lamp_background_preview_and_discard_preserve_saved_configuration()] | desktop/src/ui/preferences.rs:942 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn external_connection_owner_updates_all_baselines_without_losing_unrelated_drafts()] | desktop/src/ui/preferences.rs:996 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn status_bar_changes_survive_preferences_save_or_discard_without_erasing_drafts()] | desktop/src/ui/preferences.rs:1012 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn connection_summary_is_contextual_and_dirty_preferences_cannot_open_another_editor()] | desktop/src/ui/preferences.rs:889 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_settings_navigation_preserves_unsaved_application_preferences()]","One connection owner instead of conflicting Preferences editors, while preserving unrelated drafts and the donor's triple-baseline merge mechanism.","Compare/import the pending generic helper/controller/config-watcher and typed-control dependencies, then verify native visual/navigation/focus and dirty concurrent-owner behavior in the installed app. Guarded Rust tests are not live USB or human acceptance.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/pwm_policy.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6d71c9813920b32dc833c90648f005d4a0687478627afe4c2edf302af7c971ed","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/remote_location.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","55cacd2e22833a71c5b4717c51854823d15f0ea01eed44c96c8a1edad82460ea","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/rf.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c5fb24f320b3a230bdf183d5a362e5ad83d86e422643c944bdc32d22ff2d96f3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/seek_preview.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0500fdc35824e3a1acdca90e5953ecf4eb9c2db7065c63d2324cc963a4ec6957","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/status_bar.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e407025a1ee959230634f8350de20d58432313d6dd0f734ada735b8fc9fec4db","status-rgb | device-context | ui-shell","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","desktop/src/ui/status_bar.rs:409 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn item_menu(] | desktop/src/ui/status_bar.rs:36 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=impl<'de> Deserialize<'de> for Items] | desktop/src/ui/status_bar.rs:296 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn layout_plan(] | desktop/src/ui/status_bar.rs:186 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=pub struct Progress<'a>] | desktop/src/ui/shell.rs:891 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn save_status_bar_preferences(] | desktop/src/ui/shell.rs:1653 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=let firmware_progress = self.firmware_observation().filter(|p| p.active);] | desktop/src/ui/connection_controls.rs:90 [UTF8-LF sha256=02bbb46d280c606868f0f18220cb092c0dca2e07f9b06aa31bee1e4f4625ec65; anchor=pub fn draw(] | docs/CONNECTION-CONTROLS.md:1 [UTF8-LF sha256=002ee046e9c206a4cc241ad2b9033971b4933959d8e14f43958848403879f21d; anchor=# Front-panel transport dropdowns] | firmware/esp/src/WebUi.h:2566 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=function statusRgbOutput] | desktop/src/status_rgb.rs:46 [UTF8-LF sha256=3dbe61cf121e44b14fe047427fbe9d0b8e60735baa445ad3116310560631965e; anchor=pub fn retain(] | mobile/lib/status_rgb.dart:52 [UTF8-LF sha256=458f867c97d38107b37fc399dfc55f1ad2f786ce5e236a9a9b2c048d0b4fbfd0; anchor=class StatusRgbPreview]","Current complete source read through EOF independently by the status/front-panel and network/UI agents; selected target changes reviewed again during evidence integration. Actual per-item hide context menus, persistent visibility choices, bar-level restore menu and small truncating message labels remain adapted. Transport controls remain usable offline without claiming hardware readiness. | Actual status_led_display_color direct emitted RGB semantics, circle radius6, hover metadata/copy-color/hide menu and no-double-dimming test adapted into native status bar. The original20x22 donor slot is now adapted to a stable28x24 control in the compact30px Pakar bar, preserving the emitted RGB contract rather than implying exact geometry copying. Web uses the same authoritative observed channels, individual availability/output and fresh-peer guards; no locally reconstructed status animation. | Added compact physical RGB observations across native/Web/mobile without full-workspace refresh: exact board/boot, output validity and monotonic RGB revision gate each update. Observed RGB never renews the whole board lease, alters selected cells or replays old animation. Native and Flutter dedicated settings/preview modules require explicit board observations, persisted ACK/readback and safe onboard-pin confirmation; generic donor custom profile/cue editors remain pending. | Status-bar checkpoint reread all1737 actual donor lines through EOF at the recorded5a6961ce revision and exact original-byte hash. Adapt render_widget/text_widget/slot_width and item_menu/group_menu to eight contextual Pakar widgets: connection, observed physical RGB, hardware, network, measured update progress, events, message and Preferences. Fixed-height inside-only strokes and bounded caption slots keep hover/focus and changing counts/text from shifting controls; narrow widths collapse labels and move actions to a keyboard-owned overflow rather than wrapping. Persian labels and RTL placement use the existing imported localization and dropdown owners. | Adapt the donor's independent normalized order/visibility/leading-trailing configuration. Custom Items deserialization preserves all sixteen combinations of the original four boolean preferences; the new network widget inherits a hidden legacy telemetry preference, then becomes independently controllable. Unknown or duplicate order IDs are normalized without losing known widgets. Per-item menus provide move earlier/later within the selected side, place at start/end, hide and restore; direct pointer drag-and-drop remains a separate unported feature. | Project one existing firmware_observation into the footer: current peer/boot-owned phase and measured bytes, with a finite optional fraction. Unknown or prepare/verify progress is not fabricated from elapsed time, and reaching100percent is not a completion verification claim. The status renderer consumes passed-in cached observations only and performs no device, network, process or filesystem probes. Explicit Save is coalesced to one returned action; shell persistence changes only status_items in the saved AppConfig after draw, preserves unrelated drafts/dock layout and surfaces failures without claiming Saved. The live requested view remains in RAM on a save error.","current_status_message update-manager priority and OSD lifetime; fullscreen exclusion; workspace selector [pending] | draw_hardware_status board_ready/coordinator/active_transport distinction and telemetry voltage/current/temperature/warnings [pending] | prepared_timeline, media-rate/fps mode, hardware timeline revision/feedback; estop_active label [not-applicable] | Pealayer hardcoded connection dot RGB [replaced] | UI render-rate toggle/context policy, dropdown-backed FPS menu, dividers/fonts/value ranges/chart history and complete host/download operation inventory [pending] | Pointer drag-and-drop across anchored groups and drag-out-to-hide [pending]","current_status_message update-manager priority and OSD lifetime; fullscreen exclusion; workspace selector: The new bar has localized/RTL fixed-slot actions and real firmware progress, but does not import the donor's transient OSD lifetime, fullscreen exclusion or interactive workspace selector. Existing workspace controls elsewhere are not proof of this footer-specific behavior. | draw_hardware_status board_ready/coordinator/active_transport distinction and telemetry voltage/current/temperature/warnings: Pakar peer freshness/ACK gates and actual S3 physical RGB mirror now exist, but generic coordinator, sensor and warning inventories still need actual adapters before display. Native dropdown live indicators and local pixel-writer acceptance are not independent physical measurement. | prepared_timeline, media-rate/fps mode, hardware timeline revision/feedback; estop_active label: Prepared media/timeline playback is expressly excluded from this mpv-free controller. No E-stop contract is acknowledged by the current pair; reusable latch safety remains tracked in menu comparison, not fabricated as present. | Pealayer hardcoded connection dot RGB: Pakar connection presentation uses current command-route authority, contrast-aware light/dark success colors and shared neutral/error visual roles; physical RGB is a separate measured-output widget, never a locally synthesized connection animation. | UI render-rate toggle/context policy, dropdown-backed FPS menu, dividers/fonts/value ranges/chart history and complete host/download operation inventory: Independent widget ordering/visibility and current board firmware progress are now implemented; measured UI/LED render-rate selection, bounded sensor history, user metric limits and the complete host/download manager inventory remain useful unported contracts. Do not add fake telemetry, initialize a service during paint or label media-FPS exclusions as completing generic performance monitoring. Native execution and visual acceptance remain separate evidence. | Pointer drag-and-drop across anchored groups and drag-out-to-hide: Move earlier/later, leading/trailing placement and hide/restore are available through persistent keyboard-accessible menus. The donor's original-render drag ghost, pointer grab offset and drag-out affordance are not implemented by those menu operations and are not claimed as parity.","desktop/src/ui/status_bar.rs:781 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn rgb_requires_observed_output_and_does_not_double_dim] | desktop/src/ui/status_bar.rs:571 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_legacy_visibility_migrates_all_combinations_without_reviving_telemetry()] | desktop/src/ui/status_bar.rs:586 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_order_normalizes_unknown_duplicate_and_malformed_entries()] | desktop/src/ui/status_bar.rs:604 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_placement_menu_click_moves_group_and_saves_once_without_panicking()] | desktop/src/ui/status_bar.rs:629 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_connection_and_rgb_require_current_route_not_cached_peer_or_websocket()] | desktop/src/ui/status_bar.rs:650 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_measured_progress_distinguishes_unknown_zero_and_completion()] | desktop/src/ui/status_bar.rs:668 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_progress_and_focus_use_visible_accent_with_actual_dark_app_palette()] | desktop/src/main.rs:5915 [UTF8-LF sha256=a0c7410e1acbc534c2aa514610ecb48a2706cf605bd19681f461360e00909c3a; anchor=fn status_bar_startup_message_respects_disconnected_and_selected_route()] | desktop/src/ui/status_bar.rs:701 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_real_egui_slots_stay_single_row_in_narrow_rtl_and_scaled_views()] | desktop/src/ui/status_bar.rs:726 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_telemetry_changes_preserve_slot_bounds_and_never_request_save()] | desktop/src/ui/status_bar.rs:741 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_buttons_dispatch_click_and_keyboard_without_passive_actions()] | desktop/src/ui/status_bar.rs:763 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_overflow_retains_capability_gated_actions_and_arrow_keyboard_access()] | tests/interface_settings_test.mjs:46 [UTF8-LF sha256=102d6c411b732bad8106dd09358da3df3989d1140aa77c87a884c8072c66c6f3; anchor=Actual emitted RGB is not brightness-scaled again] | desktop/src/status_rgb.rs:157 [UTF8-LF sha256=3dbe61cf121e44b14fe047427fbe9d0b8e60735baa445ad3116310560631965e; anchor=fn compact_rgb_updates_only_the_matching_peer_and_newer_rgb_not_hardware_clock] | mobile/test/status_rgb_test.dart:70 [UTF8-LF sha256=908b1d6f4f4832dea297e0e36b9ab87500754569b595938d3cecfb95870bb61f; anchor=physical RGB is observed not synthesized or double dimmed] | tests/connection_controls_test.mjs:1 [UTF8-LF sha256=e3e741ccd20dcb88698a0a7cd6767b8f05921cc344e182e96a3104d6743dcc68; anchor=Source wiring guard only.] | desktop/src/ui/connection_controls.rs:378 [UTF8-LF sha256=02bbb46d280c606868f0f18220cb092c0dca2e07f9b06aa31bee1e4f4625ec65; anchor=fn lifecycle_is_one_explicit_action_and_disconnect_retains_port()]","","Native migration, progress, fixed-geometry, input and Preferences-owner checks passed (15 status tests plus the isolated viewport guard); final release framebuffer captures were inspected for connected, disconnected, warning and progress states. Candidate staged at executable SHA25602505274f29498991b2f9e693274f73e4b4cbe7b44738d1d03e2a547e3e00aab. Installed-runtime and human acceptance remain open; isolated fixtures do not prove live board health or physical RGB. Restore remaining generic status lifetime/readiness contracts in issues #3/#10. | Shared dropdown dependency now has a complete-read comparison; preserve remaining generic consumer contracts and verify native runtime without claiming whole-file parity.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/subtitles.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3617ac13b09591572d635550d0dac359e505e6768d1e010ec29ddf26a35e9c70","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/timeline_toolbar.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","99f5d7b079024850b5f7e38543c3e8c70f56d309d72ae4308f7e8c95f67235d4","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/toasts.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","30d4ff8c9a30b783f9513a3508787e9ca233881bb3a9bda2e1b9f9cd1bc9c989","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","scoped-improvement","complete","desktop/src/ui/toasts.rs:4 [UTF8-LF sha256=c6dee228dbe78715b11711d60db187601a7d116499677ea8e6499ddb4e69e5e7; anchor=pub fn draw(ctx:]","Actual donor root-only overlay: four newest messages, severity icons and semantic palette roles, bounded width, scrollable text, title, dismiss and deadline-driven repaint. The current optional details disclosure and localized label are imported unchanged in behavior.","interop::get_live_config() accessor [replaced]","interop::get_live_config() accessor: Pakar owns the same live palette through config::live(). The OS-native notification route is separate; adding an explicit in-app enable preference does not remove the donor overlay when enabled.","desktop/src/ui/toasts.rs:53 [UTF8-LF sha256=c6dee228dbe78715b11711d60db187601a7d116499677ea8e6499ddb4e69e5e7; anchor=if let Some(detail) = toast.details.as_ref()] | desktop/src/messaging.rs:199 [UTF8-LF sha256=57e357298d9dd8ae515a21bd13a4959ef77e684b345aed02da9dab818f5a204c; anchor=fn concise_notification_retains_bounded_original_diagnostics()]","Retains the donor overlay and detailed disclosure while adding Pakar's explicit in-app notification preference, concise user-facing failure summaries, bounded technical details, and separate privacy-safe Windows notification delivery.","This native overlay mapping is not shared Web/TUI message-delivery parity.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/video.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ec5937789cd5c0cc0daf1f717898a0bffce330756760a1c84b7e8202e7166860","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/ui/workspace_profiles.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","410d274f51e5e7db7ce81582d36166a97240b097e993cec5fee8707a95183e2f","cell-assignments | connection-resilience | ui-shell","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","mobile/lib/output_panel.dart:27 [UTF8-LF sha256=3cf8895bbbdfc82cb7f4c12ed8e1895623099975722753d5dc722d3eb7ebe9c3; anchor=class OutputPanel] | assets/web/feature-workspaces.js:108 [UTF8-LF sha256=13a51897342b90e6d328d84da0c7272fd6f909fb84996de23a164bb48feb88fa; anchor=function diagnosticWorkspace(value)] | web/index.html:2489 [UTF8-LF sha256=aa518a96eea2dd7d787cb0a31d5191c78886e2e31605eda64458a0cea728835d; anchor=function workspaceDiagnosticDraft()] | mobile/test/output_panel_test.dart:411 [UTF8-LF sha256=b75b25f46b391a84c0400f08361c4c520e2fda547e95f8b9030078f7f281e317; anchor=Output order is bounded, durable and independent of table selection] | mobile/lib/table_workspace.dart:13 [UTF8-LF sha256=02445683146ff2b3bdca50bfa8d1aa1dedb94261c361613fdb545e7ca4f7c83e; anchor=class TableWorkspace] | mobile/lib/main.dart:897 [UTF8-LF sha256=814e5944b0f27d21f2005ff4bfa8e391dc5721435e25f9c40ccf2c934090a7db; anchor=Future _saveWorkspaces()] | desktop/src/capabilities.rs:78 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=pub struct Presentation] | desktop/src/ui/shell.rs:1062 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn synchronize_context] | desktop/src/ui/layout.rs:245 [UTF8-LF sha256=b5cf537aa8ff41c7302ed081a9c5d0821af271c3042b447cceb3fec8a9d70300; anchor=presentation_context()] | desktop/src/native_workspace.rs:158 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=pub struct Store] | desktop/src/config.rs:201 [UTF8-LF sha256=b84801a85e31a44b2691bd5f6ccefea0106d799952b0fb61e2d6162ee11b9414; anchor=pub native_workspaces] | mobile/lib/table_workspace.dart:268 [UTF8-LF sha256=02445683146ff2b3bdca50bfa8d1aa1dedb94261c361613fdb545e7ca4f7c83e; anchor=class FrontPanelWorkspace] | desktop/src/workspace_layout.rs:6 [UTF8-LF sha256=e7682600d1c90ee1805b3f70838d934bfd23de795ae50fa69599c034c88906db; anchor=pub struct WorkspaceLayout]","Complete live donor read through EOF at matching original-byte hash. Adapt the actual stable-ID profile_choices/draw ownership rule to board-keyed Flutter workspaces, rather than connection-attempt keys or telemetry-dependent widget lifetime. User selection/search/effect/indicator choice and both scroll axes survive transient leases, reboot, explicit reconnect and bounded background UI-cache restoration; snapshots never persist a command, authorization or observed device state. | Reread the same complete live donor at unchanged SHA256 for the Android screen-off regression. Actual user changes now notify a bounded debounced UI snapshot writer, including indicators, multiple selection, transition, Find/selection, activity and both scroll axes. One ordered coalescing writer prevents late old saves, skips identical snapshots and permits retry after failure. Reattachment uses the latest actual offsets rather than stale scroll-end PageStorage values. Healthy sockets remain open across backgrounding; a silent pre-suspend socket gets a 750 ms read-probe recovery without resetting the workspace or replaying commands. Colour actions and selection controls are separate ordered rows. | Actual stable-ID workspace ownership adapted to immutable board identity rather than mutable friendly names or current telemetry. Retained route/board/boot-scoped ACK-only panel inventory is presentation, never live hardware authority. Native dock, selection, menus and measured panel extent survive transient lease/capability loss; new peer/boot/explicit disconnect revalidates appropriately. | Reread complete unchanged donor. Native durable board/application sessions now store sanitized dock/active tabs, egui scroll/collapse memory, unified selection/find/cursor and safe front-panel drafts, bounded16 records, equal-snapshot skips,1s sampling/debounce and5s minimum save interval. Flutter extends its existing ordered350ms/2s writer with front-panel, diagnostic and public settings drafts; reconnect requires fresh identity/readback and never restores pending actuation. Native capture/apply_workspace_profile and config structs were additionally reviewed as function slices only, not certified whole-file reads. | Reread complete unchanged workspace_profiles.rs and actual canonical restore/reveal, capture/apply function slices in donor layout.rs/app.rs (those whole files remain uncertified). Native WorkspaceLayout now separates the durable full dock and explicit hidden-panel intent from its capability-filtered projection. Reconnect/partial ACK/reboot cannot save omitted panels as user closures; missing legacy defaults recover once, explicit close-all persists, reveal restores semantic sibling/split slots and unfolds ancestors. No missing ACK grants a control lease. | Reread complete workspace_profiles.rs and scoped layout.rs card/drag/tab sections (whole layout.rs remains pending). OutputPanel extracts scene, LED output and rainbow from TablePage using the same live callbacks. Stable scene/output/diagnostics card IDs and explicit handle-only Arrange reordering persist through the existing board-owned workspace writer. Diagnostics opens the existing guarded PixelDiagnosticPage; no duplicated command engine or startup actuation. Table selection, cell transitions, mapping and scroll ownership remain unchanged. | The complete unchanged workspace_profiles.rs was reread and its original-byte hash verified again. Pakar WorkspaceLayout separates topology edits from active/focus/collapse/scroll view edits by stable Panel identity, preventing focus changes from reconstructing hidden Events/Streaming branches. This is a controller-specific improvement of retained workspace ownership, not a newly certified whole-file donor layout/app import. | Complete unchanged donor reread and live hash verified for canonical Web diagnostic persistence. Adapt stable board/application workspace identity plus the actual Flutter PixelDiagnosticWorkspace constructor/snapshot slice (mobile/lib/pixel_diagnostic.dart SHA256 c5143cb176678151bc81273fbd7ebe7d666d9a145f400efc65ac1a8e7ecb817c). Cursor, group choice, color and effect/timing drafts enter the EXISTING debounced workspace writer only on deliberate local changes; live observations never schedule writes. Reload/reboot restores a visibly local draft, never pending operations, observations, revisions or automatic commands. Invalid numeric text is retained as bounded draft text, not accepted wire data. Other boards/applications stay isolated. | Reverified unchanged stable-ID workspace donor and extended the existing canonical Web workspace owner to pixel-tool presentation: map view/open/numeric filter, Advanced disclosure and expanded rule fingerprints. No new storage key/writer. Fingerprints distinguish duplicate rules and only match freshly verified canonical rules; changed unmatched rows remain closed, never reconstructed as config. Board/application identities isolate presentation through reboot/reload. Equal snapshots and late programmatic toggle events do not write; existing owner-transition fallback retains sanitized presentation without storing secrets, rules, observations or pending commands. Actual module/core tests verify restore, zero extra requests/mutations, duplicate/changed-rule behavior and no passive writes. Expanded rendered/touch/RTL and full workspace-manager parity remain open.","draw workspace manager metadata CRUD, icon picker, profile reordering and overwrite/restore menu commands [pending] | All donor profile dialog/tab presets, media-specific panels and workspace action parity [pending] | Unsaved native privileged network/cloud/AVR form drafts [pending]","draw workspace manager metadata CRUD, icon picker, profile reordering and overwrite/restore menu commands: Useful generic workspace-management UI remains an open donor import. This regression repair adapts stable identity and user-state ownership only; it does not certify the native/Web workspace manager, add a replacement profile editor or copy egui widgets into Flutter. | All donor profile dialog/tab presets, media-specific panels and workspace action parity: Stable identity and transient-layout preservation are a scoped adaptation, not all donor profile editor/defaults/import-export UI. Media-only panels remain outside this controller; generic profile actions still need exact comparisons. | Unsaved native privileged network/cloud/AVR form drafts: They remain intentionally invalidated on peer revocation until durable public-only patches can be rebased against fresh baseline/secret ownership. General per-peer workspace controls and safe presentation drafts are persisted; this is not all editor-draft parity.","mobile/test/workspace_lifecycle_test.dart:528 [UTF8-LF sha256=537941477dab0a2460cf42aab9220a7baf8d1aecf36eb140b21179674985071e; anchor=Workspace follows board identity] | tests/web_feature_workspaces_test.mjs:321 [UTF8-LF sha256=e02d06ce8ffcd53f00ecbb4524396aebe31d9035bb6e575b10fc47cca4eb1a7a; anchor=Live observations do not trigger durable writes] | tests/web_workspace_test.mjs:124 [UTF8-LF sha256=e35df2215cf2802e9e58896204d4c44dbb12225411a7c511808f47af9679d7cf; anchor=A not-yet-attached feature owner preserves the existing scoped draft] | desktop/src/capabilities.rs:442 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=fn presentation_retains_only_prior_acks_without_reviving_live_authority] | desktop/src/capabilities.rs:504 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=fn measured_panel_height_preserves_scroll_only_for_same_board_panel_and_width] | desktop/src/native_workspace.rs:425 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=fn workspace_roundtrip_preserves_unified_selection_drafts_and_scroll_without_authority] | mobile/test/workspace_lifecycle_test.dart:135 [UTF8-LF sha256=537941477dab0a2460cf42aab9220a7baf8d1aecf36eb140b21179674985071e; anchor=Front-panel] | desktop/src/workspace_layout.rs:355 [UTF8-LF sha256=e7682600d1c90ee1805b3f70838d934bfd23de795ae50fa69599c034c88906db; anchor=fn reconnect_and_reboot_restore_splits_active_tabs_and_hidden_choices] | desktop/src/workspace_layout.rs:457 [UTF8-LF sha256=e7682600d1c90ee1805b3f70838d934bfd23de795ae50fa69599c034c88906db; anchor=fn focusing_with_hidden_events_and_streaming_retains_custom_slots_after_restart()] | desktop/src/workspace_layout.rs:514 [UTF8-LF sha256=e7682600d1c90ee1805b3f70838d934bfd23de795ae50fa69599c034c88906db; anchor=fn view_only_collapse_and_tab_scroll_do_not_rebuild_hidden_splits()] | desktop/src/workspace_layout.rs:535 [UTF8-LF sha256=e7682600d1c90ee1805b3f70838d934bfd23de795ae50fa69599c034c88906db; anchor=fn actual_split_and_tab_order_edits_still_persist()] | mobile/test/output_panel_test.dart:502 [UTF8-LF sha256=b75b25f46b391a84c0400f08361c4c520e2fda547e95f8b9030078f7f281e317; anchor=Single-mode table has no empty Scene and hidden cards keep their saved order]","","Actual Android installation, background/process pressure, Wi-Fi/router loss and human layout/selection acceptance remain open. The newer prior APK was staged but not installed because no authorized ADB target was available; never attribute its source checks to the running phone. Complete generic workspace-management imports separately; source fixtures are not phone deployment or donor-wide parity. | Issue #10/#3: runtime visual/scroll acceptance and remaining generic workspace dialog/action parity remain open. | Installed native restart/reconnect/scroll and Android process-pressure/human acceptance remain separate from serialization fixtures. Native window geometry and full named workspace manager CRUD remain pending.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","src/update.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","909e8aa4f903d1a8a63589fd2e371d77ff7b8c6c6bcb3fc9949609ab55440652","client-app-updates | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","desktop/src/client_management.rs:278 [UTF8-LF sha256=29d4d38c2785187fe4ec71ba04dd8d297d4f3ec4a8161cf84fcd6b16336d87d1; anchor=pub fn newer(] | desktop/src/client_install.rs:273 [UTF8-LF sha256=d6088c3223ee29219a4b1048d7aa5d35d03f1906e371039dd7032145e9f87186; anchor=pub fn helper(] | desktop/src/ui/preferences.rs:115 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn app_management(]","Actual download_update / prepare_self_update / run_update_helper / inspect_executable / create_update_file adapted into streamed SHA256/PE validation, explicit current-user managed marker, pinned PID/path/helper journal and graceful-exit/health receipt. | Preferences geometry checkpoint reread the complete actual donor src/update.rs through EOF at C:/Users/David/AppData/Local/Programs/Pealayer/source/Pealayer, revision 5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad. Compared the current app_management consumer and clean-draft dispatch: download progress still uses received/expected bytes, Apply requires a managed installation and verified package, and active application/draft guards remain. The consumer is identical to its previous implementation after ignoring whitespace and optional trailing commas; only its parent body/footer geometry changed. No installer, rollback or runtime acceptance is inferred from rebinding this Preferences reference.","Donor-wide installer/recovery/platform acceptance outside this self EXE slice [pending]","Donor-wide installer/recovery/platform acceptance outside this self EXE slice: Force-kill and automatic deletion of rollback are deliberately not copied: a live editor or unverified new process must remain recoverable. Media/libmpv, archive/GitHub extraction, interactive TUI console inheritance do not apply to this GUI raw same-origin executable. Generic signed installer/removal inventory, unattended uninstall and true two-new-version helper/Windows-session/OS acceptance remain pending. Preference UI uses actual existing Pakar donor widgets; no full donor GUI parity is claimed.","desktop/src/client_management.rs:875 [UTF8-LF sha256=29d4d38c2785187fe4ec71ba04dd8d297d4f3ec4a8161cf84fcd6b16336d87d1; anchor=release_policy_checks_numeric_build_semver_platform_origin_and_integrity] | desktop/src/client_install.rs:556 [UTF8-LF sha256=d6088c3223ee29219a4b1048d7aa5d35d03f1906e371039dd7032145e9f87186; anchor=journals_bind_all_transaction_paths_and_parent_without_shell_commands]","","Issue #7: live secure enrollment, release/telemetry/command receipt and safe replacement proof separated from source fixtures; Android foreground-only and self-uninstall local/OS-consent boundaries remain.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","test-data/jellyfish.mp4","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ac5a1796476da2e218fae4cccfd4a4bc2747593a41b50aedc60e5e19a1bf2b7a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","test-data/synthetic_23fps.mp4","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","de62a75ac5852cb4e981325862a7ad4222b40acb1864cde2efa0383a7fb134f3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/cli_forwarding_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","777039867acb8f0bc8aaa12da0efbd846abfc62f0612054e1b9b1a6fdeb940a7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/config_persistence_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e06205e3e023e47e8a8c646e881044ce967e793628f7d52159fbbdf589a6f0d7","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","desktop/src/native_workspace.rs:48 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=pub struct Snapshot]","Completely reread actual test. Adapt fresh-session serde roundtrip and persisted layout/state assertions to the actual native board/application workspace store, using actual egui ScrollArea state and DockState. No media dependencies or per-test temporary-directory cleanup copied.","Donor playback/media config fields [not-applicable]","Donor playback/media config fields: The requested controller is mpv-free; this fixture maps reusable persistence assertions, not media runtime restoration.","desktop/src/native_workspace.rs:515 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=fn same_peer_reboot_restores_only_its_workspace_and_other_peers_cannot_inherit_it]","","Actual installed GUI restart/scroll acceptance and complete unrelated configuration field coverage remain open.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/curve_record_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2ee2dede9ad3ee2d685312f6ac0a5f9f7263670b3a95f77649b332cf2b45ceeb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/curve_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cbd24f0c9e347cfd7b34a7f0f12613618aefd6257c65c703c1eee458e8fb455a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/frame_accurate_scrubbing_tests.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d3ecb033a7e8b11a068754e00a8b90863f30885c5c5e760934f2d4986f6479b7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/frame_cache_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3877b3522622201def1443861202c4f02749b9a4c1c173f235b66b8146cfef29","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/hardware_affordance_integration_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4205e42676753cf2c2d20401cf85c1c1b88bf59e075056ef8fbabbb41d8db2d8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/hardware_target_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","79b66a0f1703f550a7cedcc6f9be9321c63e38013b4593f1bb6505958f054f3f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/i18n_surface_audit_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","504768bc9cf2fda32a8dab8b0f50d573c74e45001734f45c7ff3120f36333f63","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","tests/localization_test.mjs:86 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=Adapt Pealayer tests/i18n_surface_audit_test.rs]","Actual donor known-raw-caption prohibition and required localized-boundary audit pattern adapted to real shell menu captions, not renamed timeline/media files. Added peer text exclusion and reversible placeholder/language tests.","Literal media cue/keyframe/player forbidden-string fixtures [not-applicable] | Complete native/Web raw-caption audit coverage [pending]","Literal media cue/keyframe/player forbidden-string fixtures: Pakar has no those media surfaces; substituting their filenames would manufacture coverage. Controller-specific boundaries and font assets are tested instead. | Complete native/Web raw-caption audit coverage: The current test protects selected imported boundaries; it is not exhaustive. Remaining native settings, transport/status and dynamic Web copy are explicitly pending, and native Cargo tests are blocked by cache budget.","tests/localization_test.mjs:67 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=for(const key of]","","Expand ownership audit as each real controller surface is translated; execute actual native renderer tests and acceptance instead of treating source guards as runtime proof.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/input_capture_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d7e003ecafc9cd965b0963bb3866b86764628b692642f9e9a8cd9b1fb7f6cf2e","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/interop_tcp_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e4ed01fc9532fad073323a5d3b20ebcd838b0ef274378fe4a046f0f2c5acf687","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/live_recording_engine_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e4f40539cd883a11b7d6d7aff89c1209b2042e6ab70740661a895cc0d5288e99","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/live_recording_sim_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6699d1778fbde46416561e36b5604da8ee4ebafb2c306393a548c55ac8300bd8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/pccontroller_host_integration_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8c0639a897b8a2c42a64c27350129fa30d961c9068fde1f0cb0e11e462c2b4dd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/pccontroller_virtual_board_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","823d4aaca1eaa819baefe428a574465a475f2468c83c92d6d2003a90dbb1fcfc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/playback_end_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0c7b8fdedd18bc22e469561e5575ea9685118571ca0d6fc1cf4fe2564b5aaf0d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/protocol_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bf0f30732dbe7121b0b7fe05e41a40c906676952248772f9f2470e835573127e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/sim_integration_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","782b8f3b1d07adbd11433a58c4300ea6ba9ec97b0a684bc0fd02afc91352c56a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/timeline_clip_controls_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","724313f6084f5ec1fb7792510c8697656b1f84c45a797722d0c2c56402eb47fd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/timeline_history_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b6be37afc414db4dd351d2fe17e2baae9e2d03900428986d9883db6df857cca6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/timeline_pointer_regression_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f39ceaeb531b75a705bc4304af2382f8819ae702ba9efd9cec13b402379c5178","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/timeline_selection_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4c00459b42d63b00da11f2b883da000a5edd0ee96313a4cecdf6b54b9b1e44e5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/timeline_smooth_seek_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fb3feab626048b10ff419da691c3ea4acb60c8ceee46497f1c4ec1d883072a8c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/timeline_ux_integration_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6e61b457c44fe83a82543d32b1634eee41958e123b0786dbc70319992d76ba1f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/web_media_explorer_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","60562dd0e2d9ac77cddabeb9989a5df0c19bc4fd84d6da80f86dedfee50d1044","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/web_workspace_parity_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e139ed7b0a4cc63360d3dcaeb139a62212ec7c105f297bf104727d4de3bca207","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/windows_shell_suite_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3f1f8f7709dd7b0e9dad2c58d1b345e9a7b054bb1bcfbcff9c6aede6598791c6","windows-desktop | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/platform/windows_notifications.rs:201 [UTF8-LF sha256=71f2254825ba2b16d83696ce0e0cf74ec7c95eedda5f60e1c3d167826693ec1a; anchor=assert!(Hook::new(42).is_err())]","Actual Preferences action/resource catalog is validated; invalid HWND registration rejects rather than claiming success; owner exclusion is tested. Live notification acceptance and shown-callback evidence are recorded independently.","Playback-duration error/paused percentages and Play/Pause thumbnail/tray labels [not-applicable] | PealayerApp::default and media playback_time/duration/is_paused assignments [replaced] | ensure_shell_initialized retry and repeated shell-lifecycle acceptance [pending]","Playback-duration error/paused percentages and Play/Pause thumbnail/tray labels: The tests model removed video playback, not device transfer progress. Pakar uses indeterminate taskbar activity only for a real pending settings/maintenance request; inventing a media percentage would publish false progress. | PealayerApp::default and media playback_time/duration/is_paused assignments: Pakar is an executable-only mpv-free controller; creating the donor media engine is inappropriate. Actual controller IPC/live smoke and direct invalid-HWND tests exercise its own lifetime instead. | ensure_shell_initialized retry and repeated shell-lifecycle acceptance: Tray creation failures are visible and close-to-tray cannot hide an app without a tray, but complete root-taskbar initialization/retry and Explorer restart acceptance are not covered by the current tests.","desktop/src/platform/windows_notifications.rs:196 [UTF8-LF sha256=71f2254825ba2b16d83696ce0e0cf74ec7c95eedda5f60e1c3d167826693ec1a; anchor=fn utf16_limits_preserve_complete_surrogates_and_termination]","","Add root-taskbar lifecycle/reinitialization and hidden-window/tray/notification-click acceptance without fabricating successful HWND installation.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tests/workspace_dock_test.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a16b32bd03351aceeb30ac49a36e3eca449f5821f220a4b0f012da839c02ac61","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tools/udp-probe/Cargo.lock","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c289c509b2b921d35ba8c0462f6dbeaaa56dbac7a7251ba55e144a9c808ae7b7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tools/udp-probe/Cargo.toml","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f858cc7851e7420766fc92cfbf16b227e7e310a420b6613ac0297bb790c9e770","build-storage","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","tools/udp-probe/src/main.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9b84d8376fbbb0e6664902e11649628076893c125a14b13894321af1e3a1efb5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","utilities/downloader/build.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","81416102abc1c98057fcef07dd48c042c124af776834b7bbaa244129017daf87","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","utilities/downloader/Cargo.toml","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f0e259a02e751f0c59a8efcc2ae0fbcecc794028976658656663bbcd90caf122","build-storage | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/9","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","utilities/downloader/src/icon.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","228fcf16796c2cc5522b1936f61adc0e63c78e6b55440c293d35759aa7ab6d2b","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","utilities/downloader/src/main.rs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f7e12741e59ef13e16977088f84290902c74b346fda3397d682e08a0c5daa11f","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/.gitignore","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6c7d15d2ab1a0b51ebcae7e88b9ad01f0713d0833bc2dbe8f3bcc7a81b66b344","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/alert.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b07538fbd4900d6f758e5f6b2d16fbd183ffe84acb1d8519a6764139de680703","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/app.css","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f8f0d47e6e8942d1fb760c23689d501116e5908c53e97732c32b5a1c0cf5377a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/app.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6d6caabfdc23a82d54f52fc568a00fecac729659762b83cb4ef82ec35ef3c426","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/ArrowDownOutlined.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","01717b1b9451af22c924b8a7dc1633bb91eeeabc1c4393c2f9a8be5d0722e576","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/ArrowUpOutlined.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e75a8d7c4982c88df005615536c8311f8b93794f8b73efd3abbf8fa8a06939ac","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/card.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","12aad43fe00cef0b0e92cb9b54c320e86d87527a49b019ff4a7f4f17e6067427","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/ColorPicker.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fa6c6866a01e13ea489d4baae0a76ec5b8cd1f6f7885c904f6681d669e8551d5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/DeleteOutlined.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d4cd4fb8ddf9cc971fab52435a4b41a5f1ba5a90a1fd1af6e48e1f7d3461bed4","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/DownloadsTab.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9ee793db7741fc5b36a8efa75d9524782ef7653fc3e7507fc72467fd0cf46512","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/dropdown.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","54fb75ef1b5b835ee89880c959d004a95509842be75c5af4343b8ad725c2f387","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/EffectsTab.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4c352fa9a96c2a27aa21b61cc83f93e48b41ff6d756bbc9a9c94a5a18ed43657","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/ElapsedTimeInput.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7d4ea5049b467942ab0c43d814873da069f67a68643e4c07bc3d1ed25aaf186d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/ExpandOutlined.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f64d920a1ce1c8b8770d666eb2cfcd66d378e8fea869d11707c9b219d49c71e1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/GroupSelect.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9d5cb0e66eda56b2d0fd2f2f696ce74039d3f49d89993b40892930eb3d87c5a5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/Hack-Regular.ttf","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","15f55cc0c85a2988d2b4b3a8cdb5d77fdfbaf319e1bb5309d725db9818fb7125","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/HardwareTab.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","76768b6f076bcb4f67079b4fdf61a6f87cddadff4e0994e9c9df16ee93526aec","device-context | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/jsx-runtime.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d410783b3a5ba8380dc1b40f9cf0f9b052e2134b675b293468b85e7920ffe4a6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/MediaLibraryTab.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d3712a312bd94b090d15dc5b8ff71fa48b1cc8094efc58ee18b95595ae2b19d7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/MelodySelect.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7dfcfbc0fe8a251b0250e5f3fb4b19f8e7f1a4278fcfef1efae10754d214dd9b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/modal.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f67cb934b902a3e1d44f58714b65f5addf39c02cc3049f8dc7adb266abc9541d","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/PauseOutlined.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b7b4127ef8cbe96c9eac0bbdb60d8b65b3c6e520026c5ecea32fa57fa44f0202","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/PlayCircleOutlined.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6d83ec599a168fb8b58b00152f1f45d392e042460ec7bc22196373778a571eab","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/PlayerInfoTab.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","91242af7e19ca254beb5ab24e7c4071a8eeee672312cedc1f980eab4e00cac6f","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/popconfirm.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","774c74060e8697e3b34d1594ee8d8a3969b4ba0c67ae93290d7df952af2a3656","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/popover.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a0b147935952f2184aea8176230edf5d5e62e988e19b39fd2b5959b0e503d4d5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/PreferencesTab.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5f7f920c79751ab401ff0368e3b2190bdb5594d5f801e59f6a14be3faa960408","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/progress.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","606fac2567e285d6cd7629e60721ee65eff902d5b577d838a88b4e8b0b74c0e1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/PushpinOutlined.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","02b3d34998b678e692c60f382071ba978740c0305390b72b9ecf958b6a03b20d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/RemoteControlTab.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ea828c74b997b6327781a3b93d0775389dc8604212866500a155f5722c4d0d97","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/rolldown-runtime.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bbf7c5086ae414dc3f33777e3eebf16ea8631325b8bb4690d25091c03567f31a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/row.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d1b7b30bb0b59eb6077fefcb0ebba86f1fca01c69ec5951c05ada564611d37b0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/SafetyCertificateOutlined.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0b68ee4a6d33279d75fec6bf6d098fbe2b8d61db7d566f6658fd89a1986c7523","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/ServerFilePicker.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","eab91b5ec3359a502b92ee36bebfae06504c5b49f018b79412ca01c730207334","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/slider.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0712cad991b7ac82e0505b189cd12128f5e5fef757ad8fbce1523cec3047a7fe","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/StepRepeatFields.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","756ba53a5cc2d83236b558cc1dbe4fa18790c28ea6a3e50b1406937dafa3b19f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/StopOutlined.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9c95cf72ea5426451d58e69c16e6f7893580dd491eb46bb017a0e88dbd7be6bb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/StudioTab.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c3106d00368ab6e4fe7162c5818b729a6714c1bd77424221759141fdb385f97e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/style.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9f8e35dcf49cbc1eebe7baaa52efbcea0e8e0e42f42f032547b6d1ba01b0143c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/table.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","92eae8acd50a7ed34371b5f1faa1971e0d72d38f525ad365104d9382fbaa790a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/typography.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b2e1b277e0abeaf5f951cb37438976fb4c811dbfd6a935b9a30e96915aa0f270","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/Ubuntu-Light.ttf","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","80307b8da7649aa4ee4d484b232140e3ce1ec0ca093073d3c53c8f5a5ced7a70","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/useBreakpoint.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","dd431cf4d5a90e59cdb77f7e3ffda0980cd180cdd8173874086389b59459cf2d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/assets/Vazirmatn-Regular.ttf","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b69fd4c680b8f3f225feabcc655a2c585d97627b8f5f5c0f9985e894069f3a56","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/font-licenses/Hack-LICENSE.txt","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/font-licenses/Ubuntu-LICENSE.txt","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/fuji-loader.css","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fcf8940e88af0c833b6ea4a46b2ad49f5b0aa189a4d5cd9ca6e5df68df412075","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/fuji-loader.svg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9bb6239258823f43190e54a61e1e68cd8a812b13c6c84548923391d902f5a770","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/index.html","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e51ccb29a0275314b9dfd4fbe623a5c7f5d0b042bb731fcddc76f3fe8b506e11","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/manifest.webmanifest","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4d4ca66ac2ae23d9e5354770f653b27de599a5a7a654194cc6fe883a9d3cebd3","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/pwa-build.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","afd4a7ed45f6045ece111e522a95edaca90665ca503df2560fbb44870db13bfb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/dist/sw.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d4d21189e509a280ece2be65ca553fc23ba0ef81b2d4db7ca89caaf154c2d4e9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/index.html","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","dd206cd22260a94270df444c3bd85b87defa2ac0ac580298eaf38282c527d7bc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/package-lock.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d26dd09dbd787e87f520cca00437e2a64623ace6704e42669d03227269827008","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/package.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","49eb339b9d40c5b97e943098e62e8c99b913b2d81093db123f6901d6e54ca032","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/public/font-licenses/Hack-LICENSE.txt","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/public/font-licenses/Ubuntu-LICENSE.txt","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/public/fuji-loader.css","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","fcf8940e88af0c833b6ea4a46b2ad49f5b0aa189a4d5cd9ca6e5df68df412075","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/public/fuji-loader.svg","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9bb6239258823f43190e54a61e1e68cd8a812b13c6c84548923391d902f5a770","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/public/manifest.webmanifest","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4d4ca66ac2ae23d9e5354770f653b27de599a5a7a654194cc6fe883a9d3cebd3","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/public/sw.js","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","dd8e3de59caed2ca4c833ff91d9a703659df6c22f6cffec668f065445ef705e5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/appearance.test.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","35f269e9463e49dbc41572683ca374be8674a93e0e97c84240838d34dc950ddc","web-presentation | ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","equivalent-behavior","complete","tests/web_appearance_test.mjs:1 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=First four tests port the actual Pealayer]","All four actual donor contract tests ported: Neutral helper default, preference merge without unrelated-field loss/resolution leakage, host/offline theme/accent and repeated native event/explicit-theme handling. Additional shipped-code tests cover all palette roles, cancel/apply, contrast, identical-write skip, media events, malformed storage, cross-tab updates and session-only storage failure.","volume:37 unrelated media setting fixture [replaced] | Direct TypeScript test import [replaced]","volume:37 unrelated media setting fixture: The unrelated value is endpoint:http://ledboard.local instead. Its preservation and original-object immutability assertions are retained; no actual test contract is removed. | Direct TypeScript test import: Tests import the actual adapted JavaScript functions; browser tests additionally execute the shipped embedded source, avoiding a separate mock appearance engine.","tests/web_appearance_test.mjs:30 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=live host theme events leave System preference unchanged]","","Test execution proves module and simulated browser contracts, not connected native event transport or physical hardware.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/finalize-pwa.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","03b8218465ac00bc76476c092c0e9ca377c1a17b0685cbced621ba30f845a1c3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-application-parity.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e95fece5a25f594af94067f6ad7099acdaa3446541c4b22528ec7f4afab068e7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-channel-folders.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","606b1984d74bbbfe7959fa06ceb7a0bb73ca4b51cb2d1912f29ebae5003dc106","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-clipboard-urls.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","7dec1674871c4314fd96c6ffea00ace39c5cf64205b1fcc9306a08a822e27915","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-control-bars.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f6ab881e6e42472a6fdca5cfd4f29b75512d5eceaa9fd7a06e98d488908a3782","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-controller-errors.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","132f8b76d5ff244220215cffc89247c2c30d0e3d7e1aadc62251f3e44fba1e9e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-cue-authoring.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f74996c2f5d6c993422fa6daabab9beddee9f58ef028e8d28afa6dccc56945a5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-file-locations.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c03b418256de95d4f1f4409be9d3827c6e5ddaba55f40dc4b9d19e2c221b3e65","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-hardware-availability.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c451251acb4aa2119b623d4d5e2236d0562ac1efd28b61661b89771d0ec7ce91","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-media-controls.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c501cdc527ff4acfbec10dc1dc288f2c3024adb3b1f321d750510a201286df35","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-messaging.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","12923b9cf8fda68b787f498fe404a50c994767bd2d8ddbdce0ea6cd49da0a841","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-os-media-session.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0ae2a410eefd275bfacbcda9e818dffac4fd5d05b15eeda5e4778985d7d4cccc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-preference-files.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b0ae70aa9a7b438d7638d502b7c2fb88d5cd36a96866c7b62810638efd40c480","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-pwm-card.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4a017549641975eb6950e9dc65b8283e48a3519c7559cd2d25edf0256cd3af05","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-pwm-policy.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","306128ce16cd3c513011f1b00d97ca91a895aac4dd3a02dc1bb5f06e767a627c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-pwm-push.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","25977a0374aebf1cd4902821f147c8beff1507bcb42e674a261f5d3fd29edd40","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-responsive-layout.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","377d208dec92440cb6926a37f9ab972d4aa5802e722e57159155fe75d228ff86","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-rf-binding-names.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","73f8d706dbe1a2887c604aee943f40e9019f442a0cd66e1fd40d316ace9597a1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-rf-presentation.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ac608cf7ea0a9c4584f8b30524dfb918dcf7d6725694c5c9aa5425b6623277ff","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-rf-reception.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","335cc560ac9bef2a3b15c45bb7dc5a3cd0c8e826095a723a0122fc6cfe525968","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-rf-saved-layout.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","15ddfb5b28df49746d7eb047f9a74a8e035d03331b8eae644fbac124017388f9","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-seek-preview.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2514659886740dff8be645f1bb023bd3b0f8267af8c20a24f1c88a96ce034bcd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-status-widgets.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5f47f526959f03b797b97f139e12f945da9fa90a35ca85ea868e8f108a018469","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-timecode-editor.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","174d70e5179a2c9ab16b5222b362d1cdd0e06ccf74fe6b5583bdd4acdcec977e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-timeline-time.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","116d104838a6b92ad681c74ead549145939b3092188a589b5ecec04d7953ce54","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-timeline-wheel.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0ccd79835b40396046793606fc261ecae1965682e71be1f52f6a5ab27a7aa239","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/test-web-assets.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","460d22166373d030da9fa3070db467300fb9091d1f1c5b324b5530217b4c5a33","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/scripts/verify-pwa.mjs","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","abb3897421e75dd842f5cbeddf4bf57577dce7abed6453f76a8100990f0c8394","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/App.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ba2d7a35e2f887ec556b681cca24aaa6f263295208cbc80678bc248b61949845","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","firmware/esp/src/WebUi.h:2475 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=function createWorkspaceStorage] | assets/web/device-settings.js:93 [UTF8-LF sha256=28b490c94a63c0b55df4cac22405b02d9ef43725ee08d5e9e3cc418ae8df5492; anchor=function settingsObserve] | assets/web/workspace-studio.js:9 [UTF8-LF sha256=c5c4b999f9fb7ca6011b9193a1ded10ed293bba8b53d9c861ad1ea4c108a15f4; anchor=function studioRoute(]","Completely reread matching actual donor. Import/adapt readStoredJson/persistJson pending-map/timer/pagehide and per-surface scroll patterns into immutable board_id+application.id workspace storage. Selection/find/focus, presentation/panels, public drafts, settings navigation and scroll restore passively; equal writes skip, blocked storage retains in-memory state, and changed fresh settings keep their conflict baseline. | Reread App.tsx through EOF for actual surfaceFromLocation/setActiveTab/followLocation. Adapt the allowlisted fragment, same-path/query history update with equal-write skip, and hashchange/popstate listeners into the EXISTING Studio workspace owner. Explicit links wait for acknowledged panels rather than unhiding capabilities, and do not rebuild card/draft owners or issue commands. Generic browser-tab localStorage fallback was not duplicated; existing peer-scoped workspace persistence remains authoritative.","Cached player/runtime state, media navigation and React/Ant Design surface ownership [replaced] | Cross-origin browser workspace migration and full donor multi-surface navigation [pending]","Cached player/runtime state, media navigation and React/Ant Design surface ownership: Adapt generic persistence to embedded DOM ownership with a workspace-only allowlist; no playback engine, stale live authority, modes/cells, notifications, boot identities or pending command replay. | Cross-origin browser workspace migration and full donor multi-surface navigation: Allowlisted controls/diagnostics/effects/hardware/api/all fragment selection is adapted. Modal-only Network/Firmware settings still use their existing guarded dialog and are excluded from new deep links until draft-safe modal history is implemented. Cross-origin workspace migration/export/import and per-surface scroll parity remain pending; no broad App.tsx parity claim.","tests/web_workspace_test.mjs:94 [UTF8-LF sha256=e35df2215cf2802e9e58896204d4c44dbb12225411a7c511808f47af9679d7cf; anchor=Repeated reconnect cannot silently accept the changed baseline] | tests/web_workspace_routes_test.mjs:34 [UTF8-LF sha256=0f59c85fa0bb31a6d39d02a8fd950abbb5ccba7bf8c68c30890b34f2ea03c41d; anchor=URL never enables an unacknowledged panel]","","Browser layout/actual reconnect/reboot and physical LED acceptance remain open; DOM doubles are not visual/device proof.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/appearance.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b521c20a1f10e6f818978bcb09948c689b74caaf72df18bdec56f2f566f8db58","web-presentation | ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","assets/themes/appearance.js:4 [UTF8-LF sha256=62a7ebba994ad44f4e2d647bb97684aac9b563104f3f707b43573289e514ecdd; anchor=export function mergeAppearance] | tools/generate-web-appearance.mjs:33 [UTF8-LF sha256=e57a615bf5134b718d6df7b644e56faced0c0ef73e8662cf8cb06c05e23e59b4; anchor=replaceBlock('// BEGIN SHARED APPEARANCE'] | firmware/esp/src/WebUi.h:10 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=// BEGIN SHARED APPEARANCE]","Fully reread current source through EOF. The five previously adapted helpers remain in the target: mergeAppearance, resolvedAccent, resolvedAppearanceTheme, accentForeground and paletteName. Existing theme/palette/accent host resolution and luminance semantics remain; newer animation/density/font preference fields and font CSS helpers are explicitly pending, not claimed imported. | Generated into the shipped WebUi.h with the shared palette asset; --check rejects stale embedding. Browser preferences dialog validates theme/palette/accent, protects drafts, handles storage failure and cross-tab/System events without device writes or repetitive identical storage writes.","ui_animation_mode, ui_control_density, ui_font_family, monospace_font_family merge fields; ControlDensity/controlDensityHeight 24/28/32/36 geometry; uiFontCss and monoFontCss [pending] | AppearanceState TypeScript interface and generic T return annotation [replaced] | Connected host AppearanceState broadcast/native-Web shared preference path [pending]","ui_animation_mode, ui_control_density, ui_font_family, monospace_font_family merge fields; ControlDensity/controlDensityHeight 24/28/32/36 geometry; uiFontCss and monoFontCss: New current donor behavior was fully read during mobile-network build preflight. Existing embedded target does not consume these client preferences and does not bundle PealayerUbuntu/PealayerHack; copying their font names would imply unavailable assets. Add actual shared settings/asset support and cross-client tests before claiming parity. | AppearanceState TypeScript interface and generic T return annotation: ESP serves standalone JavaScript, not a TypeScript/React build. Browser-facing enum/color validation rejects untrusted stored values. New fields/helpers are separately tracked pending rather than silently dropped. | Connected host AppearanceState broadcast/native-Web shared preference path: Pure functions accept host state and tests preserve donor semantics, but standalone browser controls are browser-local today. No actual native appearance event/readback transport is integrated in this pass; System fallback is labeled browser-local.","tests/web_appearance_test.mjs:22 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=System theme and accent preserve donor host resolution] | tests/web_appearance_test.mjs:66 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=dialog draft/cancel never changes]","","Implement native/Web/mobile shared preference transport and live authoritative host events, while keeping device parameters separate from client appearance; verify multi-client broadcast/readback.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/channelFolders.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","066d9f8abd055555673bc44d2f7d8716e104bca9747e949abfcd9d9f4855196f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/clipboardUrls.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f851b796fbe24ae4d94cb583e4fa0c2851e983db67804d80acfe80e69da11dc4","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/ApplicationStatusBar.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","94b9cdc6d28346bb7ae591d6d0a0ec3dd910b47471c6bb3df868582784ea99d4","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/ColorDropdown.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","49d37654faab5033df04954456d0fe980571ccbc66478caaab7007dae1b8c151","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","mobile/lib/color_picker.dart:50 [UTF8-LF sha256=8d1b4206d9b99bf4067df432e0147fdfc7fe67f60c6dab83ceb04478de2560c2; anchor=class _ColorPicker]","Read the full donor. Retained a single focused picker, bounded scrollable content, named presets and keyboard-focusable controls, with session recents shared across callers. Flutter dialog owns Cancel/Apply and returns a color rather than inventing another state or transport owner.","Ant Design popup positioning and DOM refs [replaced] | Donor directional-arrow preset roving navigation [pending]","Ant Design popup positioning and DOM refs: Flutter dialog focus and bounded scrolling provide the corresponding modal behavior without DOM-dependent code. | Donor directional-arrow preset roving navigation: Flutter retains standard focus traversal; exact directional preset navigation has not been ported or verified.","mobile/test/appearance_live_test.dart:26 [UTF8-LF sha256=77e70b48b5faf8f8ed73ccb5711b0c0ae12889e11d09870780d47a1d1c6a6b13; anchor=testWidgets]","","Issue #26: verify desktop keyboard and installed tablet/phone picker ergonomics; no claim of complete donor parity.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/ColorPicker.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","024fdabb482a714c38a91d0dde5d0be11486b20859a019f4fbc2d3dd34295022","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","scoped-improvement","complete","mobile/lib/color_picker.dart:33 [UTF8-LF sha256=8d1b4206d9b99bf4067df432e0147fdfc7fe67f60c6dab83ceb04478de2560c2; anchor=Future showLedColorPicker]","Read the complete actual donor before implementation. Adapted preset selection, uppercase RGB representation and twelve deduplicated session recent colors into the shared Flutter picker used by semantic state appearance, temporary test color and game group overrides. An explicit Apply commits the local picker choice; Cancel makes no command or recent-color write. | Added sixteen named LED swatches, HSV hue/saturation/brightness controls, validated optional hex entry, fixed circular hit targets and semantic labels. The picker itself owns no connection or persistence; existing peer-bound command/readback and game Save paths remain authoritative.","react-color ChromePicker and Ant Design runtime [replaced] | Media-effect onChangeComplete callback [replaced]","react-color ChromePicker and Ant Design runtime: Flutter uses native Material controls and HSVColor; embedding a second JavaScript UI runtime adds no useful color semantics. | Media-effect onChangeComplete callback: An explicit local Apply hands the value to the existing device-owner command path, avoiding accidental board changes while dragging a color slider.","mobile/test/appearance_live_test.dart:26 [UTF8-LF sha256=77e70b48b5faf8f8ed73ccb5711b0c0ae12889e11d09870780d47a1d1c6a6b13; anchor=testWidgets]","Named LED presets and accessible HSV channel controls replace hex-only editing while explicit Apply avoids unintended hardware commands during dragging.","Issue #26: candidate source/widget verification is not installed Android touch or physical color acceptance.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/ControlBar.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cbd6ebc09cbf23e4958c4d1979974d3e856f2096bcc2dcfd1556c5ef4c45cafd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","web/modules/components.js:98 [UTF8-LF sha256=200e38d3a70594f6f2463b03bc74df53cc10e17e8d2264c7851c200d9beff7d4; anchor=const actionIcons=] | assets/web/application-utilities.js:47 [UTF8-LF sha256=20744bfcfc0968df0205a46aeb3bdd513b205f0f91796b168dd99dcb16fdbbf1; anchor=function refreshLabels(]","The Web owner fully read actual C:/Users/David/AppData/Local/Programs/Pealayer/source/Pealayer/web_ui/src/components/ControlBar.tsx. Adapt its explicitly mapped contextual action/icon identities and separate localized captions to the existing controller actionIcons/controlIcons and semantic caption refresh. No transport, ACK or capability authority is replaced by the presentation pass; existing handlers and disabled state remain attached to their original controls.","Media transport, track selectors, playback volume and timeline-specific actions [not-applicable] | Complete shared toolbar customization, drag/context layout authority and draft/ACK lifecycle [pending] | Rotating/glowing decorative action treatment [replaced]","Media transport, track selectors, playback volume and timeline-specific actions: There is no corresponding media domain in the controller; generic control identity is retained independently. | Complete shared toolbar customization, drag/context layout authority and draft/ACK lifecycle: The named action/icon/caption adaptation does not establish equivalence to the donor's full customizable control-bar model or its layout persistence/input ownership. | Rotating/glowing decorative action treatment: Stable glyphs and reduced-motion-safe treatment avoid recurring visual distraction or suggesting command progress where none is observed.","tests/web_control_presentation_test.mjs:34 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Existing action handlers survive hydration] | tests/web_control_presentation_test.mjs:93 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Semantic caption updates reuse the stable label slot]","","Issue #3: complete generic toolbar customization/ownership parity and installed input/visual acceptance without adding media business.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/DesignerFieldLabel.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ed527ea04c4dc8e9f51e755c0dc92b8cd9a71a414b2fbcfbaba96e97cd7916a7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","web/modules/components.js:99 [UTF8-LF sha256=200e38d3a70594f6f2463b03bc74df53cc10e17e8d2264c7851c200d9beff7d4; anchor=const controlIcons=] | assets/web/localization.js:43 [UTF8-LF sha256=fc7a39cae41e490fba858a8c7129abf0a7064811c486ddf9ba1b115b79e7c0fb; anchor=function renderUiText(]","Read the actual complete canonical Pealayer field-label component. Its explicit field-to-icon dictionary, decorative aria-hidden glyph and separate translated copy inform the controller's explicit action/control icon dictionaries and stable label hydration. Unknown peer-provided text is not classified by translated spelling; SVG remains independent of the localizer's owned label. This is a focused icon/caption adaptation, not a claim that all designer fields exist in Pakar.","Media/timeline-specific field dictionary entries [not-applicable] | Complete generic field-label coverage across all controller settings [pending]","Media/timeline-specific field dictionary entries: Only actual controller actions receive mappings; unrelated media designer labels are not fabricated. | Complete generic field-label coverage across all controller settings: This pass binds current action/control icon and caption consumers. Full settings-field inventory and installed translated field layout remain additional work.","tests/web_control_presentation_test.mjs:55 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Peer-provided copy is not guessed as an application action] | tests/web_control_presentation_test.mjs:41 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Language switching cannot erase decorative SVG]","","Issue #3: reconcile remaining applicable setting labels and inspect real responsive/RTL field alignment.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/downloads.css","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5301e1a83619229834082effbc6078f4fb4cd2bae0940695a9df68ae198e0b78","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/DownloadsTab.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6586e81dfa2de5e7e5dc71bd21e153e027e137c6f03dfb8aa6335efe5b0e5c60","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/EffectGroupDialog.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","8c90f7a85286efada6d5a1e24212a03dd1ae14e51bea1767f8d195a538ec8f80","ui-shell | preferences | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","assets/web/feature-workspaces.js:383 [UTF8-LF sha256=13a51897342b90e6d328d84da0c7272fd6f909fb84996de23a164bb48feb88fa; anchor=async function reloadCorrections(] | web/modules/components.js:135 [UTF8-LF sha256=200e38d3a70594f6f2463b03bc74df53cc10e17e8d2264c7851c200d9beff7d4; anchor=function dialog(] | assets/web/application-utilities.js:116 [UTF8-LF sha256=20744bfcfc0968df0205a46aeb3bdd513b205f0f91796b168dd99dcb16fdbbf1; anchor=initialFocus:search] | assets/web/pixel-groups.js:58 [UTF8-LF sha256=24abe18fbf1f11fe248f2f1ac5fe6b7149014be1290fae0f8b3bef59c256e617; anchor=async function reloadGroups(]","Read the full donor through EOF and verified live bytes match the inventory. Adapt the retained local-draft modal, explicit localized cancel/commit actions, separate semantic icons and destroy-on-dismiss lifecycle through Pakar's existing WebUI.dialog; no second UI runtime or connection owner is introduced. | The canonical Web correction Reload confirmation also follows the actual Flutter PixelCorrectionsPage.reload guard: Cancel/close keeps edits, approval reads only the original peer, duplicate prompts are suppressed, and disconnect/capability loss/peer change/disposal dismiss the pending decision. Missing dialog support fails closed. This scoped comparison does not certify every EffectGroupDialog feature. | Reread the full donor for its explicit localized actions, auto-focused editor and destroy-on-dismiss behavior. Existing HTML dialog now links its description for assistive technology, accepts localized close labels and deliberate initial focus, focuses Cancel for correction discard and search for the command palette, serializes asynchronous footer actions, restores disabled states after failures, and retires late callbacks after dismissal. No duplicate modal runtime, connection owner or board command was added. | Pixel-group Reload now reuses this same modal with localized title/close and Cancel focus, following the actual Flutter correction reload guard. Cancel retains the draft, approval performs only the existing peer-pinned read, duplicate prompts are suppressed, and peer/boot/capability loss or disposal retire the decision. Missing shared dialog support fails closed without discarding edits.","React/Ant Design Modal runtime [replaced] | Effect-group name/original_name save and media-group mutation [not-applicable] | EffectIconPicker searchable icon presets and live group-name/glyph preview [pending]","React/Ant Design Modal runtime: Reuse Pakar's existing native HTML dialog with focus restoration and shared branding rather than loading a duplicate framework into the onboard build. | Effect-group name/original_name save and media-group mutation: This correction reload reads saved board configuration; it must not mutate media effect groups. | EffectIconPicker searchable icon presets and live group-name/glyph preview: Generic icon-picker behavior remains useful for configurable app elements. This narrow reload dialog has no editable icon/name and does not imply that picker has been imported or its dependencies reviewed.","tests/web_feature_workspaces_test.mjs:118 [UTF8-LF sha256=e02d06ce8ffcd53f00ecbb4524396aebe31d9035bb6e575b10fc47cca4eb1a7a; anchor=Only one confirmation may own the editor] | tests/web_dialog_test.mjs:53 [UTF8-LF sha256=63745a228e1e9748f7d8eb89c7f1a3eaa4f4e1e5d34b6fe5f6805c03e668552d; anchor=Only one asynchronous action owns the dialog] | tests/web_feature_workspaces_test.mjs:390 [UTF8-LF sha256=e02d06ce8ffcd53f00ecbb4524396aebe31d9035bb6e575b10fc47cca4eb1a7a; anchor=Only one group confirmation owns the draft]","","2026-10-27 desktop browser verification reproduced approval losing focus while Reload was disabled. Both correction and group confirmations now retain the existing async dialog owner through the read; delayed-read tests verify the trigger is enabled before close and stale approval stays inert. Actual correction Reload restores focus, Escape preserves drafts, and Cancel receives initial focus. Expanded map/filter/cursor numbering and persisted filter were also inspected. Phone/tablet/Persian RTL, real board reads and group-dialog rendered acceptance remain open.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/EffectRecorder.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","60f0592a17464e82aef7d96ad391648fb72add8dea3b07bdb74727934863176c","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/EffectsTab.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1e05d85e102ccf8fe8a1b928d9d948a0818d7c2a69e29e1ceaec9e94d0e1fa84","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/ElapsedTimeInput.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3486788299c7d562735fc9e9dbabe5c803349a360279197fbcecf85dd92a7519","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/FileLocationSelect.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4d8f2b5cecca02476322d171ad04a8e9bc28055947fd2035620ae1d6c8be3530","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/FujiLoader.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e1ffd53b29e78aa7153c7a22f0282a5a9d7a2c559832f45e21ffa323d265e7a4","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/GroupSelect.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","14bdd722273e5b80603ecf1f3ae3ac92176c5be49f97edeb8ad82d7595335931","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/HardwareFolders.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","a3114bf641485cedaf16bf79b07cff271708bb1e6dd187ce41df5cae4da42b8a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/HardwareTab.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","66b453097073e72ead2fc89f36056371509557d43bcd0053299cc1e99f304712","device-context | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/HeaderBar.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","ad53ee284d969054f69b65e8447a313498b5928eae0aed2564e95f8c71e70d04","application-identity | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","tools/generate-branding.mjs:3 [UTF8-LF sha256=816544b2525d3c9210a586b8c2c5d59ed6c51fab8ca4bda27fbf2edbdd451367; anchor=Pakar embeds it for the standalone ESP surface] | mobile/lib/header_controls.dart:17 [UTF8-LF sha256=fdbae404068b75de261d1add7d5768e1b6844272ddfe4edb1b92b338f6cf4f87; anchor=class HeaderLayout] | mobile/lib/main.dart:767 [UTF8-LF sha256=814e5944b0f27d21f2005ff4bfa8e391dc5721435e25f9c40ccf2c934090a7db; anchor=Future _openConnection()] | firmware/esp/src/WebUi.h:399 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=] | docs/BRANDING-PARITY.md:60 [UTF8-LF sha256=0bfa8122dc9d6034551304f2fed472ddebcff170e14a23f63011177aab75d2d3; anchor=## Explicit unfinished useful code and reasons] | firmware/esp/src/WebUi.h:3078 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=function renderApplicationIdentity] | assets/web/device-settings.js:120 [UTF8-LF sha256=28b490c94a63c0b55df4cac22405b02d9ef43725ee08d5e9e3cc418ae8df5492; anchor=function settingsCanClose()] | docs/INTERFACE-CONTRACT.md:8 [UTF8-LF sha256=37a0aec859267e0fd62b546ffc044eaa02ae04d2f9a298c5d94a5c24c803cb1b; anchor=## One catalog, distinct transport and platform adapters]","Actual resolved-artwork img/alt binding adapted to standalone header/login, replacing diamond and font fallback. | Firmware name/title/artwork binding replaces fixed header branding; stale/disconnected peer resets title/header/favicon/touch artwork and validates bounded inline PNG. | Actual retained Modal/draft lifecycle adapted to grouped device settings; separate same-instance WebSocket actions preserve HTTP refresh and reject obsolete socket callbacks. Native Draft/SecretEdit/Write validation/readback semantics are reused. | Current 223-line donor was fully reread. Existing shared artwork/draft mapping is retained; accessible Enter/Space connection-pill activation, responsive overflow copies and capability-specific browser controls are not implied by that mapping. | Flutter header review: adapted the donor retained connection modal and responsive overflow behavior using the existing SettingsPage/ConnectionDraft owner. The whole status icon/text opens that modal without issuing commands; Material InkWell supplies keyboard activation. HeaderLayout stores allowlisted ordered/visible actions in existing coalesced workspace preferences, keeping overflow permanently recoverable. Refresh is stale-only in the toolbar, not a game reset. Link/unlink/cancel icons describe the action. PCController workspace_chrome.dart and unified/preferences.dart were also fully reread for stable touch targets and persistence. Browser-wide omissions remain open.","Header collapse; arbitrary remote connectionTarget/draftTarget endpoint modal; localization/RTL [pending] | capability-aware Dropdown install/update/share/fullscreen/notifications/haptics/audio/wake-lock cluster [pending] | Current keyboard-activatable connection-pill, collapsible action overflow parity and capability-aware web-feature preference switches [pending]","Header collapse; arbitrary remote connectionTarget/draftTarget endpoint modal; localization/RTL: The new grouped device-settings modal and same-instance WebSocket dropdown are not arbitrary remote endpoint selection or localized navigation. Standalone-device origin/auth and preferences adapters still need porting and tests. | capability-aware Dropdown install/update/share/fullscreen/notifications/haptics/audio/wake-lock cluster: Requires actual WebPlatform integration and ownership/permission tests; not excluded media business. | Current keyboard-activatable connection-pill, collapsible action overflow parity and capability-aware web-feature preference switches: Pakar must adapt actual endpoint lifecycle, capability/permission detection and keyboard semantics rather than presenting nonfunctional shortcuts. Shared static artwork and device-settings drafts do not provide these generic browser/header behaviors.","mobile/test/header_controls_test.dart:100 [UTF8-LF sha256=db7a6c884949c426561569544a4a17e1be668e6f599a920ffe56f0f3a65539d9; anchor=Header customization saves and restores without changing board state] | mobile/test/status_bar_layout_test.dart:93 [UTF8-LF sha256=52cb9e5aef5b21cb81477077b515c21c5108b075168eb410ce5617ba9614e447; anchor=Entire connection status icon and text open connection, errors stay inspectable] | tests/branding_test.mjs:12 [UTF8-LF sha256=c39528379a8b6e97561e0e0deb5e435a182f75bce2b385780c7b9ee853455fbb; anchor=actual Pealayer icon_data_from_bytes import] | tests/web_identity_test.mjs:40 [UTF8-LF sha256=c4824a7923009f8698e0cde21c1d693609d1af98f55c47dbc20a140293a576be; anchor=Actual Web application identity] | tests/interface_settings_test.mjs:33 [UTF8-LF sha256=102d6c411b732bad8106dd09358da3df3989d1140aa77c87a884c8072c66c6f3; anchor=Failed saves preserve the draft]","","Complete generic omissions and missing editors named in INTERFACE-CONTRACT.md; native/mobile/deployed acceptance remains open.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/MediaLibraryTab.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","853eacc37f9d53ba900b17682062c320711eef4f560b1474150a7912abc7d43a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/MediaSurface.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","251fe24c5946d813beacf8760e063e32fcb9978a6fe350890d5967576c4ce35d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/MediaTrackSelectors.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0eb6fd5d33db144dab7204131e6f0472bf1a0a3d446af4161c81189e68b64587","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/MelodySelect.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c82b79b849c6bc72ce8079dbf089630e2c44bb7305300c11c01477b1cac50782","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/NumericValueControl.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6f1e99cd5ae8ef0bae30d43a86f22a22371c6543498c5d8938e486cff151d218","pixel-group-layout | pixel-workbench","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","mobile/lib/pixel_corrections_editor.dart:115 [UTF8-LF sha256=7b307453c53c084f22bb5e3845b43ba56e34a83633447b36041c4b1facad64c5; anchor=class PixelCorrectionNumberControl] | assets/web/pixel-groups.js:44 [UTF8-LF sha256=24abe18fbf1f11fe248f2f1ac5fe6b7149014be1290fae0f8b3bef59c256e617; anchor=function create(options)] | assets/web/feature-workspaces.js:299 [UTF8-LF sha256=13a51897342b90e6d328d84da0c7272fd6f909fb84996de23a164bb48feb88fa; anchor=function stepped(] | assets/web/command-transport.js:63 [UTF8-LF sha256=829ced127abe461595384f58822a18dc1e8e5388a6907bca945d566d53fe1e73; anchor=if(path==='/api/led/diagnostic')] | assets/web/studio.css:122 [UTF8-LF sha256=4d87d4cc97b3a53b2144912cd0c123ebc21b9b7677bdb02e6901a6c695e36e22; anchor=.studio .mapping-pixel>.mapping-dot] | assets/web/controller-copy.json:300 [UTF8-LF sha256=441c7b489b0e5b683da61cd667f9251d3542e0be57b1abb2e0780497455a0b22; anchor=Rule preview]","Correction-editor owner read the complete donor. Adapted bounded +/- stepping, disabled endpoint controls, named numeric fields and typed-value validation into the existing Flutter theme; no additional styling framework or duplicate settings owner. | Per-group pixel sizing additionally adapts the bounded +/- stepper, local numeric draft and explicit commit to the existing DOM Web controls. Physical address ranges preview cumulative counts without writing the board; save uses revisioned ownership and exact readback. The complete donor was reread for this addition. | Reread the complete donor for Web correction per-row pixel and signed-offset steppers. Adapt bounded one-pixel +/- and disabled endpoints, input labels and local-only draft edits using existing shared icon buttons, with fixed square geometry. Approximate rule labels reuse the actual Flutter pixelCorrectionSources/pixelCorrectionAddress projection, respecting preceding enabled rules, current physical spans and logical permutation; stale/missing layouts fail closed. | The Web per-rule cursor action reuses the same bounded local draft control and actual Flutter selectedDiagnosticPixel/importPixel semantics. Copy the selected output slot only, not projected raw/lit source; an unsent diagnostic selection remains authoritative over newer live observations until following is requested. Missing/invalid capability or cursor disables the action; captured row/model/owner checks reject late retired callbacks. No preview/diagnostic/configuration command or clipboard runtime is added. | Reread complete NumericValueControl and actual PCController pwm_control at their inventoried hashes. Hardened the existing Web group bounded editor: a reproduced old-session reset callback removed a new peer's row. Group inputs, +/- and Use default now require captured peer/boot, model, render generation, row identity and current nonbusy ownership. Same-peer redraw and old-boot retained callbacks are regression-tested; edits remain local until explicit Save. | A second reproduced regression replaced a cleared count with its previous5 after structural redraw. Following the reread donor's owned-draft/validated-commit split, Web group rows now retain typed strings across redraw and peer return, mark aria-invalid and block Save in both UI and command callback while invalid. Explicit +/- recovers from last valid value; only normalized numeric overrides enter the board contract and verified Save retires drafts. | Reread the complete bounded donor for correction-row safety too. Reproduced a cleared correction pixel reverting to1 after Add rule; pixel/offset typed drafts now survive reorder/redraw/peer return with model-level Save validation and numeric-only payloads. Every row toggle, kind, numeric input, step, cursor, reorder and delete requires its original peer/model/rendered row identity. Stale callbacks cannot alter replacement rows; valid Save/readback remains explicit. | For local preview, read the full existing Flutter pixel_corrections_editor.dart and actual PixelCorrectionsPage.mappingPreview method. Reuse the existing port of pixelCorrectionSources in an explicit Applied/Draft wire-map selector: applied data stays board-provided, drafts project ordered enabled rules locally, invalid text clears the projection, view choice remains peer-model scoped, filtering sends no requests, and closed maps do not build hidden tiles. No board request, preview lease, write or duplicate renderer/transport is introduced. | The same bounded numeric/local-draft controls now expose board-owned diagnostic timing/brightness under a capability-gated Advanced section. Actual full Flutter pixel_diagnostic.dart, complete commandPacket function and current firmware command/PixelDiagnostic/receipt contracts were read. Editing sends nothing; explicit Show uses shared typed WS-first transport and exact option/revision readback plus published-frame observation. One pinned read may settle pending publication, never a mutation replay. All off forces global clear/solid defaults independently of invalid overlay/effect drafts. | Reread complete unchanged NumericValueControl, PCController PwmSetpointControl and complete current Flutter pixel_corrections_editor.dart, plus observedRgb/mappingPreview function slices in pixel_corrections_page.dart (page file SHA256 392cc722fcfcf4731c6ef8880d31d26ba52a4a926be32f8b415669e42a9513a0; not a whole-page read claim). Adapt PixelCorrectionDiagram into the existing Applied/Draft Web map: fixed32px circles, wire numbers above, projected source numbers inside, crossed black slots, neutral dashed unavailable RGB and luminance-selected text. Actual LedGrid pixelFrameJson/presentation slices establish published_ as pre-correction scene data. RGB requires current peer, completed published frame, exact capacity, valid numeric/hex fields and matching acknowledged group topology. Color updates reuse circles without structural redraw or new polling/subscriptions/commands. Expanded browser/RTL/touch acceptance and per-rule focused-window diagrams remain pending. | Verified unchanged Pealayer NumericValueControl source and reread actual Flutter operationOption/PixelCorrectionDiagram function slices. Reuse operationOption's clamped six-slot window and prefix-through-current-rule projection in optional collapsed Web row disclosures; actual enabled/global flags remain authoritative for this local projection. Main map and compact row windows now share mappingPixel/paintDiagram and existing observed RGB validation, not duplicated engines. Descriptions include black/remove/positive-negative shift semantics with Persian copy. Invalid current/prior numeric drafts clear dependent previews, late retired disclosure callbacks are fenced, live RGB retains nodes, reorder carries expanded presentation state and no previewOpen field enters canonical saves. Browser expanded/RTL/touch and rich operation-menu parity remain open. | 2026-10-29 game-settings audit rereads the complete unchanged NumericValueControl and EffectGroupDialog plus current mobile typed command producer. Keep typed finite/bounded validation and explicit draft commit: Web transport now admits the boot/display/timer fields already exposed by its form, validates first/last and booleans, and preserves WS-first same-request receipt ownership. Unknown fields and invalid types still fail before sending; isolated transport/DOM tests cover controls. This fixes actual command coverage rather than weakening rejection or claiming live hardware acceptance.","React/CSS execution and media-value callers [replaced] | Custom fine/coarse modifier step configuration and clipboard context menu [pending]","React/CSS execution and media-value callers: Flutter or Pakar's canonical DOM owns rendering. The bounded-control interaction is adapted rather than embedding a second framework; pixel addresses and signed offsets replace media-value domains. | Custom fine/coarse modifier step configuration and clipboard context menu: The pixel-count editor uses bounded integer one-pixel steps and explicit reset. Donor custom modifier steps/clipboard menu were read but are not yet imported; this is a scoped sizing feature, not complete NumericValueControl parity.","mobile/test/pixel_corrections_editor_test.dart:145 [UTF8-LF sha256=ab953eb195c5f8ba3c086666c2f5a7444bccd7d2fb03433c2434d412a8aedeb4; anchor=void main()] | tests/web_feature_workspaces_test.mjs:407 [UTF8-LF sha256=e02d06ce8ffcd53f00ecbb4524396aebe31d9035bb6e575b10fc47cca4eb1a7a; anchor=Retired group row callbacks cannot mutate replacement draft] | tests/web_command_transport_test.mjs:59 [UTF8-LF sha256=14e3581c9d9289f2059c9f23f4de5bcd4ff803e813f7c9db062ca0408e4b671f; anchor=captured.composite,'overlay'] | tests/web_control_presentation_test.mjs:96 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Pixel circles retain fixed square geometry] | tests/web_feature_workspaces_test.mjs:42 [UTF8-LF sha256=e02d06ce8ffcd53f00ecbb4524396aebe31d9035bb6e575b10fc47cca4eb1a7a; anchor=Rule window includes its prefix, not later rules]","","Rust correction editor does not yet expose these new per-row/preview controls; no cross-client parity claimed.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/PlaybackButton.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","10b2c97e2b85d1f5390790992b53a8250dc49847ce0c4b1679f5928e30b9fe5a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","assets/web/application-utilities.js:37 [UTF8-LF sha256=20744bfcfc0968df0205a46aeb3bdd513b205f0f91796b168dd99dcb16fdbbf1; anchor=function setControlCaption(] | web/index.html:3274 [UTF8-LF sha256=aa518a96eea2dd7d787cb0a31d5191c78886e2e31605eda64458a0cea728835d; anchor=function renderAssignmentTools(]","The Web owner fully read the actual canonical Pealayer component. Preserve its authoritative-snapshot action meaning, disabled unknown/unavailable state and matching icon/label/accessibility rather than optimistic click-state toggling. Existing cell ACK/capability gates remain authoritative; state-caption refresh uses the existing semantic state model and stable label slot. Selection by lost/won identity remains correct even when a user changes the configured RGB color. | Only canonical Pealayer web_ui/src/styles.css lines 77-102 and 521-552 were inspected as styling dependencies, SHA256 2d08f0129a28e29b55a137c708b9296d5282bd0aaffb6c2fdba6b9d5cf16462d. Fixed borders, optical glyph alignment and restrained tonal states were adapted; the whole stylesheet is not certified read.","Play/Pause media command and React/Ant component runtime [not-applicable] | Full cross-surface unavailable/focus/hover/runtime acceptance and unreviewed CSS sections [pending]","Play/Pause media command and React/Ant component runtime: The board application has no media player; only authoritative state and visual/action identity are adapted into its existing DOM model. | Full cross-surface unavailable/focus/hover/runtime acceptance and unreviewed CSS sections: Source assertions do not certify installed browser state changes or every donor style. Current optical layout and peer-state checks remain separate acceptance gates.","tests/web_control_presentation_test.mjs:87 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Selection follows lost semantic identity even when its configured color is green] | tests/web_control_presentation_test.mjs:93 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Semantic caption updates reuse the stable label slot]","","Issue #3: inspect installed semantic action state, keyboard/accessibility and all responsive sizes; no claim of completed donor Web application parity.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/PlayerInfoTab.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3d771590a1e6b5392ed8f294068a26ee5403284808eab786eca6caeaf3eff2a7","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/PreferencesTab.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","30a63cc1db61a46346c2d4c30ce011dc74081a8a6da2e29853e56d39811a0de1","mobile-settings | localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","mobile/lib/device_settings_page.dart:18 [UTF8-LF sha256=b187bcc1ed640dc8b7052ce03c4f36a840289396f8908dbc77b967190eb9e9ee; anchor=class DeviceSettingsPage] | mobile/lib/device_settings.dart:413 [UTF8-LF sha256=0c10e5c712bae2b4fe2f706326115ee703f07e426a64a50728c09575efb71e9a; anchor=class DeviceSettingsSession] | mobile/lib/led_backend_control.dart:9 [UTF8-LF sha256=4769c24f714e241c5acb41987f5cbefef35681a86fbcda40c92ffb7db934c33a; anchor=class LedBackendControl] | mobile/lib/led_backend.dart:5 [UTF8-LF sha256=ccea33fd885d514027e622061bf55daf4d0c3564f977529b9956c6df42d57491; anchor=class LedBackendState] | web/index.html:2641 [UTF8-LF sha256=aa518a96eea2dd7d787cb0a31d5191c78886e2e31605eda64458a0cea728835d; anchor=function renderLedBackendControl(anchor){] | web/index.html:2612 [UTF8-LF sha256=aa518a96eea2dd7d787cb0a31d5191c78886e2e31605eda64458a0cea728835d; anchor=function waitForLedBackend(]","Actual contract-driven sections/selected-section navigation, grouped labeled typed controls, contextual options, retained draft on section changes, descriptions, load/save status and reload adapted to Flutter DeviceSettingsPage using the existing shared Pakar catalog. Tablet uses a searchable navigation rail; phone uses wrapping section chips. Actual Phosphor repertoire supplies verified icon codepoints. | Actual valueAtPath/updatePaths structured settings ownership adapted to separate public drafts and secret actions. DeviceSettingsSession uses the fully read canonical Pakar native/Web validation, observe/conflict and positive acknowledgment/exact public readback workflow rather than generic optimistic UI success. In-memory secrets never enter saved client preferences; one POST body per explicit operation, no mutation replay. | Runtime LED transmitter checkpoint reread all563 donor lines and verified SHA30a63cc1. Adapt actual contract-derived select options, field-scoped saving state and external-observation refresh to Flutter LedBackendControl/LedBackendState and the single canonical Web selector. Only the intersection of advertised compiled choices is offered; selection reflects actual driver telemetry and renderer mode stays independent. Replace updatePaths optimistic save with one correlated mutation and same-peer requested/active/readiness/error/persistence observation. WebSocket events settle the result; configured bounded HTTP fallback reads never replay the mutation. This is a scoped mechanism adaptation, not a direct TSX component import or full PreferencesTab parity.","updatePaths optimistic autosave to /api/config and playback.preference_set [replaced] | Ant Design components and ServerFilePicker transport [replaced] | AccentColorPicker, color swatches, appearance live preview, NumericValueControl steps/defaults, multi_select rich options, replacement_list add/delete, Collapsible groups, ServerFilePicker and refreshAudioOutputs two-stage option refresh [pending] | tr(locale, ...) complete control/description localization [pending] | timelineWheelPreferences merge, playback audio-output RPC and media-extension preference consumers [not-applicable] | Current ColorDropdown custom/accent popup, discrete choice_slider indexed preview/commit and NumericValueControl persisted per-field adjustment steps [pending]","updatePaths optimistic autosave to /api/config and playback.preference_set: These are Pealayer state/RPC contracts, not Pakar persisted board endpoints. Password replacement and network restart require explicit confirmation, positive accepted/updated ACK and exact public readback. No optimistic physical save success or automatic write replay. | Ant Design components and ServerFilePicker transport: Android Flutter cannot import TSX/Ant Design components directly. Actual section/group/control logic is adapted to Material controls with the shared Studio palette, Vazirmatn and verified Phosphor glyphs. Mobile firmware now uses the fully read ServerFilePicker selection/ownership contract with native Android SAF; exact mapping and remaining generic consumers have their own comparison row. | AccentColorPicker, color swatches, appearance live preview, NumericValueControl steps/defaults, multi_select rich options, replacement_list add/delete, Collapsible groups, ServerFilePicker and refreshAudioOutputs two-stage option refresh: Device Wi-Fi/cloud/identity/access editors are implemented, not the entire application preference framework. Generic appearance, collection editors, defaults/step controls, reusable file picking and dynamic options remain useful and require actual client/device capability contracts and tests before importing their controls. | tr(locale, ...) complete control/description localization: Vazirmatn is loaded and the actual RayanLamp digit map normalizes numeric fields, but the new settings copy is English. Full mobile locale/direction must be audited and rendered before claiming Persian preference parity. | timelineWheelPreferences merge, playback audio-output RPC and media-extension preference consumers: Timeline/cue/media playback business was explicitly excluded from Pakar. Their generic dynamic-option and file-picker mechanisms remain pending above; they are not excluded as media business. | Current ColorDropdown custom/accent popup, discrete choice_slider indexed preview/commit and NumericValueControl persisted per-field adjustment steps: Current 563-line donor was completely reread. These generic typed controls are not in the mobile device settings implementation; shared appearance controls, structured batch changes and keyboard/locale acceptance must be imported with their dependencies instead of claiming the earlier section/group adaptation covers them.","mobile/test/device_settings_test.dart:307 [UTF8-LF sha256=f9887ced8439ac531c05348bc39f5ab7344c6386eade342d18809a50a2741751; anchor=Settings write $behavior: one POST] | mobile/test/device_settings_page_test.dart:409 [UTF8-LF sha256=41f54cfc79f980609f2c5b117534f0f054c3633627dcbefa170ef31493569ea2; anchor=Acknowledged $route handoff after old view closes] | mobile/test/capture_test.dart:195 [UTF8-LF sha256=9363580ff944f31aa581ed3e2eb1e882fade4cfcb22bdd218bc26af0fd7bb222; anchor=Capture must never issue a device mutation] | mobile/test/led_backend_test.dart:55 [UTF8-LF sha256=9f7ffb5cba172f4dd6f837ad2de1bfea3bcdf01bfa46779e0ffebc1af84d8ccf; anchor=Backend ACK is not applied state, and failure or unsaved choice never verifies] | mobile/test/led_backend_test.dart:193 [UTF8-LF sha256=9f7ffb5cba172f4dd6f837ad2de1bfea3bcdf01bfa46779e0ffebc1af84d8ccf; anchor=Backend control fits narrow view with errors and does not offer absent drivers] | mobile/test/led_backend_transport_test.dart:15 [UTF8-LF sha256=baf04d8697b6029abad475b4ae564bc9e052ec74cc4e1433d80365991ce372a3; anchor=WebSocket backend handoff] | tests/web_led_backend_test.mjs:93 [UTF8-LF sha256=bb4a14a6c5ec3e8df0b01581bc4ff5f6818a756e9b2808407d1b6097cf4db3d6; anchor=// Exercise shipped WS-first command transport + post success gating together.]","","Mobile firmware/update/backup and Android picker workflows are implemented in the separate ServerFilePicker row; physical acceptance remains. Complete connection/discovery controls, unsaved Android-back/quit protection, client appearance/localization, generic typed preference controls and applicable donor dependencies. Verify physical phone/tablet configuration readback and hostname/credential handoffs; current API lacks transactional compare-and-set and encrypted HTTP transport. | Transmitter model/widget/socket/DOM fixture coverage is not installed Android/tablet/browser hardware acceptance. Verify both directions, persistent reboot, driver/storage failures, small-screen layout and unchanged effects/current frame on the real board; prior generic PreferencesTab omissions remain open.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/PublishingAuthority.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","62cffd9ba3d502aaaf30c4dc52dba5f09e151c9cd4309b105b16c0ce36d5ef6d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/PwmPolicyEditor.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","10f7fa2276a093924c41c1dac3045c5d70e7291905ab5e42f97c4f2d566b042e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/RemoteControlTab.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4a3cd14c6ba51e4aa489230b5820a77b247a482c52eb8318dc43c16af055b13e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/RemoteLocationDialog.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1b6571793fd747f13ebee92e078b9b2989f3b52178ea7756fe52be49d8f7e415","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/RfManager.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e283b2479cf0f1f8e66dde43ddc61b6dd4e2a97a6ed3c3d8b89535011f541cd3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/RfSavedRuleCards.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f8724fdb919712182b10f752914c9ce322fe4984fcec9ce5ddd53d6745bf2045","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/seekbar.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","50cfe8d64c183500ecb9a766a340b24437a214f6977abd400d3314db6d48913c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/SeekThumbnailPreview.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","957406b4b0a465dee14657300b4c86aca81f2a693b1e7312cb7cbf8b4ff6bce7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/SequenceTimeline.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","773b16ce81c478c3b1719de69efd1259e8ae9df48bffd2af637d94c3ee6f86d7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/ServerFilePicker.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","df5b59007e0b726c815bed0eafcce87e4f5a6e4a59e8c79a1414f2cc7be89316","user-files | cell-assignments | mobile-firmware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/28","parity-gap","complete","assets/web/user-files.js:35 [UTF8-LF sha256=8b25d6925e5a604b95769d844c1c1d7d06ae9e49a33a9e2307bae5c75d77ec5f; anchor=function create(o)] | mobile/lib/documents.dart:19 [UTF8-LF sha256=9b447b248f21e855c2481e28c6c31e66969af5ab837fd32e4d57eb76164b9ff5; anchor=class AndroidDocuments] | mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/MainActivity.kt:52 [UTF8-LF sha256=262271e184d4287fa3e2a6dc8cac9cae7f5cb0cdf7e2b143ecfaa4288bdfd0cf; anchor=Intent.ACTION_OPEN_DOCUMENT] | mobile/lib/firmware_page.dart:17 [UTF8-LF sha256=391a60a7d166bcf295acd403826a5e696e617236debb525e794d6b9924ba8745; anchor=class FirmwarePage] | mobile/lib/firmware.dart:178 [UTF8-LF sha256=3d104c5c0e23ada43fc07a88092788e7be015e31b5b7cd38fc096ebd072ebd07; anchor=class FirmwareController] | mobile/lib/api.dart:1563 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future maintenanceBytes]","Issue #28: reread the complete picker and preferenceFiles helper. Adapt bounded list/filter, explicit file actions and stale asynchronous reply rejection into the canonical Web Files panel. Board-managed names replace arbitrary host paths; uploads are staged and verified, and file replacement is explicitly confirmed. Original bytes and modification timestamps are kept together; PAX export preserves timestamps without claiming browser filesystem permissions. | Fully read actual typed single-file selection, disabled/unselected/loading state, extension filtering, cancellation, stale-result protection and explicit acceptance. Adapted into Flutter AndroidDocuments + native SAF; firmware imports are validated and separately confirmed before any upload. Parent navigation is locked during maintenance confirmation/picking and writes; selected bytes never automatically program either board. | Canonical Pakar desktop maintenance and actual firmware routes were read, not fabricated mobile endpoints. FirmwareController pins remote job/boot/hash/targets and verifies a fresh identity before apply/cancel; single-dispatch bounded HTTP refuses redirects/replay. FirmwarePage gates each ISP/OTA domain on individual live feature ACK, distinguishes stage/apply/completion, and exposes real full flash/EEPROM exports. | 2026-10-29: retain the existing document-export adapter while selecting a backup from the current acknowledged AVR maintenance owner. Urboot exports use the exact completed request-scoped artifact, not unrelated ISP files. Busy, wrong-boot, incomplete and replaced jobs fail before creating an Android document; exact full memory length and stable owner are checked. Exported backups remain historical recovery data, not asserted to be the current running AVR.","React/Ant Design modal/table row handlers, server /api/fs/browse, Directory.path/parent_path and AbortController network browse [replaced] | initialFile parent path, remembered folder, custom icon table/size labels and full localized picker controls [pending] | Current FileLocationSelect location/drive/network-root selector and disabled-while-loading navigation [pending]","React/Ant Design modal/table row handlers, server /api/fs/browse, Directory.path/parent_path and AbortController network browse: Android SAF owns user-granted document navigation, search, single selection and cancellation. ESP has no arbitrary host filesystem browse contract; inventing that endpoint or accepting Windows paths would be incorrect. The native picker reads bounded bytes on its executor; captured board ownership is checked after picker/HTTP awaits. Only a one-use user-created destination token can be exported, with no broad storage permissions. | initialFile parent path, remembered folder, custom icon table/size labels and full localized picker controls: SAF system navigation is available, but mobile app-owned retained-folder hints and a complete localized review/preview workflow still need actual provider/phone tests. Donor custom server file-browser behavior remains useful for native/Web preference consumers; this Android adaptation is not whole-app picker parity. | Current FileLocationSelect location/drive/network-root selector and disabled-while-loading navigation: Current donor was completely reread. The new FileLocationSelect dependency is not yet fully reviewed/imported for native/Web consumers. Android SAF provides provider-owned navigation but does not establish parity with the donor server's filesystem location contract.","mobile/test/documents_test.dart:38 [UTF8-LF sha256=641aee7d7a005c5c309683cf98154f571c1e3c398dd5674fc68b020807807df0; anchor=Changed owner while choosing export] | mobile/test/firmware_test.dart:267 [UTF8-LF sha256=dcdc186e4339fe92ff57d962eed1d5c9966c24c2f0de46d8170dc37c00c63cda; anchor=Lost mutating GET probe] | mobile/test/firmware_page_test.dart:164 [UTF8-LF sha256=a8f8dcbddecdb44e81142714c1f7874dbd99de08961b516cc3b81ab4970c885a; anchor=Cancelled file selection] | mobile/test/capture_test.dart:200 [UTF8-LF sha256=9363580ff944f31aa581ed3e2eb1e882fade4cfcb22bdd218bc26af0fd7bb222; anchor=Firmware capture must never issue a device mutation] | mobile/test/firmware_test.dart:508 [UTF8-LF sha256=dcdc186e4339fe92ff57d962eed1d5c9966c24c2f0de46d8170dc37c00c63cda; anchor=Disposed backup owner discards received bytes before document creation]","","Verify Android provider cancellation/rotation/process death and real import/export; actual board update/readback/power-loss acceptance and production APK signing remain open. Generic donor file-browser consumers and full locale/direction still require review. Shared manual AVR staging has no advertised hash/CAS; pinned remote job is preferred and manual limitation is explicit.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/SevenSegmentDisplay.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","07cb90f243998086623f6957a7dc14ee2eb9a8ad4c9a644ae74da68a37a78fce","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/SharedToasts.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1cff480ef57bf5bdd84c316e8b990611db7c21619c7763529c03abc0bc3726ba","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/SoundEffectFields.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","9b024984dc77ca37a4199afdcedb8f32b9fdc7149e9e618e8964c3c32b8159be","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/StepRepeatFields.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","12aed954f80392f1e111fa8b5cd2842f2dc883469c561cdc2288796175504187","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/StudioTab.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","c2e36cec1fab36df6224c665c4fb4d374320a62c9820c16e046e30690b4a1642","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/TimeValueField.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","492b290193674b99e055606d2006c8b11c8e57381fec61abb7c68e8b7534870d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/VolumeControl.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5bb7d7d51744d3ff627b3406295eb650e5221055fa04deffa63c3e76090133c6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/components/WebViewBoundary.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","eabda2c06bc1bc3f88d6f6f0790e0061e5857f2102c1fdf89a2ad01e7e0d60bb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/controlBars.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","eae3066c6d65c4057248bcc9cb4191246a84320bd60df49bbd830c3f6f1decb0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/controllerErrors.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b7c5bec5e656b587637f77a72729fb4eb7bfeea3138d538fdbb9e642d3eb618c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/cueAuthoring.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e9b6489f7b321c71d269eb072e38e20f3622d6bf5943312433522a4f55634925","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/effectIcons.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0836bbb837af44ef85cc03a7fad3eec437dd321d20aaa759aab8d440ea36f90e","ui-shell | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/fileLocations.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2aca81029dce9db9b1989c63d6663d70943245bc13a4ae77b11156dd35b20fad","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/hardwareAvailability.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cd0f51eb347cfbf3f90505ed318497829ca84a763a16e52fd5e0c834591747ad","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/hardwareIdentity.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","f6b7b03b69478de271f531eb061ea216b60e1cdbfcbc6abadd1b3352c3b914a0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/i18n.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","331d2545379e36ea717fcf2876508315437bc5abe49923170f50a4f1bb1b47fc","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","assets/web/localization.js:19 [UTF8-LF sha256=fc7a39cae41e490fba858a8c7129abf0a7064811c486ddf9ba1b115b79e7c0fb; anchor=function uiTr(text,values)] | tools/generate-font-assets.mjs:62 [UTF8-LF sha256=fdf6b75dac5afebad8598abbe408cd44bbf09cb306d4db91ee515add5ebb1412; anchor=const dictionary={}] | firmware/esp/src/WebUi.h:795 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=// BEGIN SHARED LOCALIZATION]","Fully reread all 630 current donor lines through EOF. Actual fa-dictionary fallback semantics remain reused for application copy, rather than translating arbitrary runtime data. Applicable native dictionary subset generates into the canonical Web module and actual firmware HTML; the new generic hardware/status/font/control vocabulary is useful pending consumer work, not an automatic dictionary import. | Added system/explicit language and Auto/LTR/RTL preferences, owned-template text/placeholder/accessibility snapshots, per-browser low-write persistence, shared font route and immutable peer-name boundary. | Persian Web regression slice: controller captions now include preferences, network/cloud/access/firmware and cell dialogs; capability mode labels participate in dictionary generation. Live telemetry and dynamic accessibility labels refresh in the selected language, real addresses release stale caption ownership, option values remain protocol-stable, and Persian text omits Latin letter spacing. Read-only actual HTML browser inspection verified mobile-width preferences/settings and reversible persistent locale switching; this is not live board acceptance. | Native interaction checkpoint rereview: read the complete unchanged donor dictionary and tr through EOF, and the complete current localization runtime, font generator and its HTML-source/gzip helpers. Reviewed the generated dictionary-only change against HEAD and the generator migration to canonical web/index.html; current WebUi.h embeds the identical localization module through build-web.mjs. Shared font bytes, owned-caption/peer-value separation, reversible locale and dynamic-label tests passed via node tests/localization_test.mjs. These refreshed target hashes attest this localization slice, not the unrelated full Web application, deployment or exhaustive Persian acceptance.","Media-library, player, playback, cue/timeline and libmpv-specific Web dictionary/surfaces [not-applicable] | Remaining generic Web copy and native/Web/mobile preference synchronization [pending]","Media-library, player, playback, cue/timeline and libmpv-specific Web dictionary/surfaces: Those surfaces belong to excluded media business and would add unrelated controls, not controller capabilities. | Remaining generic Web copy and native/Web/mobile preference synchronization: The controller subset is integrated, not the entire donor Web feature set. Preferences/settings/cell captions and live status now have focused regression and read-only mobile-width browser evidence. Other dynamic errors, confirmations and advanced diagnostics, live-board and Android locale acceptance remain; browser locale is not silently written to another client or firmware.","tests/localization_test.mjs:45 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=No identical storage writes] | tests/localization_test.mjs:43 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=assert.equal(attrs.placeholder]","","Finish remaining dynamic errors/confirmations/advanced diagnostic copy and controller-safe shared preference contracts; execute live-device and Android locale tests. Mobile-width actual Web fixture inspection is complete for preferences/settings, not hardware or exhaustive translation acceptance.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/main.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b7578041f5caa4aecf591daad49dcc16b418432952f4e8b3595f08b8abd78873","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/mediaControlsPolicy.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d2195135c00dd0b36b1743a4837977ae7bfe5fc3457d05bcfad96270e13290ed","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/mediaLabel.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d9f5a045fbe398f8e3a4f97753b1d974d4edcc38295a57036d0b8432f3465f02","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/mediaSession.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","cf032eef087338f65c6ca486f4287b495745b29afd7f971ea75d6f8f555df496","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/melodyCatalog.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e0b3bbe4b902b9c0f653dcfcefaba8f148bca88101d26b33b78e5774eca55386","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/messaging.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e2f8b33b5ba9e4983ed4ea78838aa0d41f5476a641a80803fbd2f532763cbb38","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/preferenceFiles.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","4580d1396b36f5a907cad6cf2f33a38486c3a7e6948a3bb222974e1b8a2a4af4","cell-assignments | mobile-firmware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","equivalent-behavior","complete","mobile/lib/documents.dart:6 [UTF8-LF sha256=9b447b248f21e855c2481e28c6c31e66969af5ab837fd32e4d57eb76164b9ff5; anchor=bool preferenceFileAllowed] | assets/web/cell-assignments.js:3 [UTF8-LF sha256=510c03217f05a1938a27466a4dd571446d8db96cdffeb204109c5865632391d2; anchor=function cellAssignmentFileAllowed]","Actual case-insensitive dot-extension suffix rule translated directly to Dart preferenceFileAllowed and used by the real Android firmware picker. Additional bounds/name and image-format checks do not treat filename as authenticity. | Reread complete current donor through EOF with identical source hash. Adapted the same extensions.some(name.toLowerCase().endsWith) rule directly into the embedded Web JSON/CSV assignment chooser. Suffix is only admission; the bounded logical-cell semantic parser independently validates all rows before confirmation.","preferenceFileParent path regex [replaced]","preferenceFileParent path regex: SAF content URIs are provider-managed identities, not slash-delimited filesystem paths. Android owns the directory picker; deriving a parent by string slicing would select the wrong resource. Host/server parent navigation remains represented in the ServerFilePicker pending row, not silently excluded.","mobile/test/documents_test.dart:8 [UTF8-LF sha256=641aee7d7a005c5c309683cf98154f571c1e3c398dd5674fc68b020807807df0; anchor=Actual donor extension rule is case-insensitive] | tests/web_cell_assignments_test.mjs:12 [UTF8-LF sha256=98288cce817943f682428f6f3ce992f38591caf5d4568aafde7a55d067775200; anchor=CELLS.CSV]","","Physical Android document-provider verification is separate from exact helper equivalence.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/pwmCard.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1ef17e576921f1422f06fc0486572aa7642284cc98c70d0c39e0cac0b31d9935","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/pwmDrafts.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","593948d5662ccbb86b18fc4778907a3f899830e93a2ac9056181222adb817165","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/pwmPolicy.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e3faf4aa22877a0b6503bb8b4e07847084be2eea158824857d0ca29b9676b3f0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/remote-location.css","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","bd063aee5d61b8ae380d894747ac8ad0d7d3971078ec2f6b6a7ca8597d13e84d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/rf-manager.css","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6b84c381f383386bc646d6e3a10f1fd595a54e16d2937616ade40c464057cf2c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/rf-presentation.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","80fcb835a2d1b9d108d20916f75d4959c9d5d0e5c2b9aaf6e5a600472b9fc172","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/rf-reception.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","e11b67861d7ae0a42f576ce2b1544b81855b0feb85dae13446174be329585cba","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/rf-saved-rules.css","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","0ed5053e0b3b836004b804e6cd9db82558f52c27b78f023f334c0947de5d33ba","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/rfBindingNames.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2282a81d3c39630b2b173bd6d9ec09e7801f7483fdcb56e4196cbd6a198c6624","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/seekPreview.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","66423333b22e2d455b5a1057598bde9abfcb580d68d496c57ccdd0a20cea8c56","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/shared-toasts.css","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d5b9b58bf54587e5726c2e236d0a60b6e2911c70ab7ea945c22933d92415b794","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/statusWidgets.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","3b748364e740dba009eb781ee496b7890ba83f8f6e051ffba7560af5e02365e1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/styles.css","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","2d08f0129a28e29b55a137c708b9296d5282bd0aaffb6c2fdba6b9d5cf16462d","localization | ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/timecodeEditor.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","909317930eb43d8a41be86734d997ae2c6b4efa50e42dcf8057db903e223d649","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/timelineTime.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","6820ca9d8f9ca62f0cf08651eb4f6f1ccd8e8a68e68cb68e7a759173e658e3ee","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/timelineWheel.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","1910311a3acba2f1d22d9d4fb57d43e08bcf6ee91f3ea567e381ae90e8a487cd","table-viewport","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","web/modules/table-layout.js:7 [UTF8-LF sha256=30162a2894f72d2467b34fc2cb3e682e09b4da0a1b252ccf6579a25273b53542; anchor=function zoomAt] | mobile/lib/table_viewport.dart:158 [UTF8-LF sha256=d7fe024ea911c1610e36e88a8a1fc412e0b95c615584ebb30322d5870ee032a7; anchor=void zoomAt] | desktop/src/ui/shell.rs:409 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=egui::Scene::new()]","Read complete donor. Adapted exponential wheel zoom and pointer-anchor equation to two dimensions and fit-relative 0.5-8x scale. Flutter and canonical Web use this math; Rust uses the locked egui Scene implementation with matching anchor semantics and transformed hit testing. Fit follows the dock or client viewport; telemetry does not reset manual zoom. | Web presentation checkpoint reread the complete actual timelineWheel.ts dependency. The current table-layout attach changes only Fit/zoom button glyphs, translated captions and accessible names; zoomAt mathematics, gesture ownership and view persistence are unchanged. The target reference is rebound for that reviewed presentation change without claiming new zoom behavior or physical gesture acceptance. | Tablet refinement reread the complete donor and retained its anchored exponential zoom. Flutter now applies continuous scale ratios against current view state, including multiple updates before a render, hides explicit controls only for Android/iOS tablets at least 600 logical pixels on the shortest side, and gives the zoomed canvas touch/wheel pan ownership without stealing fitted-page scrolling. Phone/desktop controls and the same user-owned controller remain. Focused gesture tests and isolated tablet rendering are source/fixture evidence, not installed touch acceptance.","sequenceWheelNavigation time scale, duration and track gutter [not-applicable] | Configurable plain, Shift and Alt wheel policies and physical horizontal modifier precedence [pending]","sequenceWheelNavigation time scale, duration and track gutter: The controller table is a fixed spatial cell canvas, not a media sequence. | Configurable plain, Shift and Alt wheel policies and physical horizontal modifier precedence: Flutter now routes plain wheel to canvas panning while zoomed and Shift-wheel swaps axes; fitted view preserves ordinary page scrolling. Shared configurable plain/Shift/Alt policies and full physical-horizontal modifier precedence across clients remain unfinished; native Scene also supports trackpad pan.","tests/table_zoom_test.mjs:7 [UTF8-LF sha256=0d7b5629ce4967cdfad392d035e6bc8617876da1824326115c1604a0b1d66048; anchor=for(const factor] | mobile/test/table_viewport_test.dart:244 [UTF8-LF sha256=a68444f3d21c88ba16651920f6c22cb496cad082d609d69b59a66258a1ceb9b0; anchor=Pinch zoom]","","Issue #3: source tests do not certify deployed clients or real touch hardware. Preserve primary selection and order-edit ownership; verify native trackpad, tablet pinch and browser pointer behavior on installed clients.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/vite-env.d.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/webPlatform.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","d6ee8217c05e96be2e20f9a40ab4c46249d57f58871c661a31c33e2310a92f0e","application-identity | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","tools/generate-branding.mjs:18 [UTF8-LF sha256=816544b2525d3c9210a586b8c2c5d59ed6c51fab8ca4bda27fbf2edbdd451367; anchor='FAVICON':] | firmware/esp/src/WebUi.h:142 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=] | docs/BRANDING-PARITY.md:60 [UTF8-LF sha256=0bfa8122dc9d6034551304f2fed472ddebcff170e14a23f63011177aab75d2d3; anchor=## Explicit unfinished useful code and reasons]","Same resolved artwork binds favicon/touch/header before login; ESP embeds data instead of requesting a protected host filesystem icon. | Current 383-line donor was completely reread. Existing favicon/header/touch artwork mapping remains valid; this is not browser-platform parity.","storedBoolean/supportsStandaloneMode/useWebPlatform capabilities/events; install/share/toggleFullscreen/enableNotifications/applyUpdate; settings setters/signalInteraction [pending] | registerPealayerServiceWorker/update/controllerchange, wake-lock cancellation/visibility and offline badge [pending] | mediaTitle/current_video state icon resolution, MediaSession video metadata/play/pause/seek/chapter handlers [not-applicable] | Current app_icon_revision-qualified touch/manifest URL refresh, dynamic application-title metadata and explicit media-action callback retirement/position clearing [pending]","storedBoolean/supportsStandaloneMode/useWebPlatform capabilities/events; install/share/toggleFullscreen/enableNotifications/applyUpdate; settings setters/signalInteraction: Generic browser capabilities/lifecycle/preferences need controller-specific integration and tests; static branding does not certify them. | registerPealayerServiceWorker/update/controllerchange, wake-lock cancellation/visibility and offline badge: PWA manifest/high-resolution artwork/cache ownership and streaming-specific wake-lock state remain open. | mediaTitle/current_video state icon resolution, MediaSession video metadata/play/pause/seek/chapter handlers: Video title/track/session business is excluded; generic browser capabilities are still pending. | Current app_icon_revision-qualified touch/manifest URL refresh, dynamic application-title metadata and explicit media-action callback retirement/position clearing: Generic artwork revision/title refresh must be adapted to board-owned application identity and actual PWA resources. Retained stale media callbacks and position cleanup illustrate useful lifecycle patterns, not permission to expose playback actions on a controller. Generic event ownership must be tested in Pakar's real contexts.","tests/branding_test.mjs:12 [UTF8-LF sha256=c39528379a8b6e97561e0e0deb5e435a182f75bce2b385780c7b9ee853455fbb; anchor=actual Pealayer icon_data_from_bytes import]","","Complete named generic omissions with preference/endpoint/runtime tests; source checks are not deployed acceptance. See BRANDING-PARITY.md.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/workspacePresentation.tsx","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","b4e696358d80f3a3e6720b29f5921d5e478d9ec92a5c0aaac6562920259128b2","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/src/workspaces.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","43fba86291b61e60a132a30e6080fec91c25d700e0b6410760e2dc07e0dea24e","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/tsconfig.json","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","00adaef3cb5f1cc832be92b2867c32ec31a6fabd05b58a6a827eebfd782532ff","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" -"Pealayer","web_ui/vite.config.ts","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","5d1a2dbcbe761be8e775577274ced51d6a068e6b19af072f5d3fd698c75a9918","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer",".editorconfig","10fc6604a9d6068eb57da2f00d7d9404238f00c8","37e91dcad62ebe914b670a69a6051bd84d96e444e639cad67b7b48e0b9f5f0ac","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer",".gitattributes","10fc6604a9d6068eb57da2f00d7d9404238f00c8","547f59603028195ff9f8a87d04c4651551e8bd0d68f075257dfd549cd846b25b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer",".github/dependabot.yml","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fa4791635251ad7d5be26ce70d71a8e59aa7b814a4f09f2b5b749d8a49908225","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","scoped-improvement","complete",".github/dependabot.yml:1 [UTF8-LF sha256=136887ba77b56544d0bcd367a31d2daaa7637ecdb8b997d63df6cb552d6f08e8; anchor=version: 2]","Actual donor weekly grouped github-actions and Cargo updates, with Cargo path adapted to the existing desktop workspace.","npm updates at /web_ui [not-applicable]","npm updates at /web_ui: Pakar has no /web_ui/package.json or Vite runtime. Embedded Web/tests use Node built-ins; Flutter's actual /mobile Pub dependency contract is covered instead.","tests/repository_governance_test.mjs:105 [UTF8-LF sha256=2c8393bbd1463ce367cff24d72110a96e53e664824d780f2e66a2c8f8930bda1; anchor=console.log('Repository governance]","Adds grouped Pub updates for the actual Android client and label routing while retaining weekly grouped Actions/Cargo updates.","","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer",".github/workflows/ci-cd.yml","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2e5c933b7c1646d5cb26ddd8a10f88529de15bd205b525295858755d5044988b","github-coordination | repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete",".github/workflows/build.yml:2 [UTF8-LF sha256=88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861; anchor=name: ""🚀 Build · Test · Release""] | tools/build-desktop.ps1:49 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=--test-threads=1] | tools/ci-checks.mjs:280 [UTF8-LF sha256=c33954b785a09f8bf3b469fdf9a8b12133c75bf1198fa76ac050678c5ceaa64c; anchor=export function runChecks] | tools/prepare-release.mjs:18 [UTF8-LF sha256=820cefc9698d46f95cf39b4cd667494a05cd03d119a1c54f9892b2a35d8b824b; anchor=export function firmwareManifest]","Actual donor branch/PR/tag/dispatch/merge-group triggers, concurrency policy, pinned actions without checkout credentials, health-before-build jobs, timeouts, Rust cache reuse, locked tests/builds, packaging, curated notes, manifest/checksums/provenance and aggregate results adapted to current Windows/ESP/AVR/Android targets. | Release content is gated on all supported-target builds, created as an immutable draft prerelease, with the matched S3/AVR buffered pair and raw HTTPS update manifests. Explicit legacy packaging is preserved but the overflowing ESP8266 image is not promised as a release output. Untrusted PRs do not execute publishing code with a write token. | Actual donor serial native test execution, isolated test configuration and RUST_BACKTRACE=1 restored. Runtime harness flags are separated from compile jobs; immediate panic output remains available even if a later test aborts before its summary. | Reread the full workflow at 10fc6604 and its exact diff from the previous inventory: the only added step verifies pinned canonical opcode bindings against the owner before builds. Pakar includes the equivalent mandatory upstream check; newly inventoried donor files remain pending unless separately compared.","LIBMPV_WINDOWS_RELEASES_API_URL, MPV_DLL_PATH, Windows GNU libmpv linking, Linux/macOS mpv dependencies and standalone pealayer-downloader [not-applicable] | macOS Intel/Apple silicon and Linux native platform matrix/packages [pending] | UPX checksum-locked packing and packed native package smoke/resource checks [pending] | branch-tag and archive suffix creation, softprops update-existing release [replaced]","LIBMPV_WINDOWS_RELEASES_API_URL, MPV_DLL_PATH, Windows GNU libmpv linking, Linux/macOS mpv dependencies and standalone pealayer-downloader: Pakar deliberately excludes the media runtime and standalone media utility. Copying this setup would introduce forbidden mpv and unrelated package dependencies. | macOS Intel/Apple silicon and Linux native platform matrix/packages: Current accepted native target is Windows; firmware and Android use Linux runners. Full donor reread includes the new scripts/run-ci-rust-tests.sh macOS sampling helper and 15-minute native test step. Linux/macOS native matrix and diagnostic sampling remain useful pending work; they require actual Pakar platform coverage, not donor's unrelated acceptance. | UPX checksum-locked packing and packed native package smoke/resource checks: Existing Windows wrappers preserve donor resource/donor/cache gates and CLI runtime tests, but Pakar has no accepted compressed native package probe. Do not call a source or CLI test full packed GUI runtime acceptance. | branch-tag and archive suffix creation, softprops update-existing release: User requests stable names without random/time suffixes. Version releases keep stable package names; release enumeration must succeed and an existing release is not overwritten.","tests/build_storage_test.ps1:17 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=Actual donor serial test contract] | tests/repository_governance_test.mjs:105 [UTF8-LF sha256=2c8393bbd1463ce367cff24d72110a96e53e664824d780f2e66a2c8f8930bda1; anchor=console.log('Repository governance]","","The historical 8849ab8 menu failure was subsequently fixed; 5d02b07 Build 38141677102 and CodeQL 38141677110 pass. This is not production/deployment proof. Validate the unexecuted draft publisher, useful additional native targets, donor macOS diagnostics and optional compressed package/runtime verification.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer",".github/workflows/codeql.yml","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fc3c298cf966d77f50b575614b4c26f24f1606459f07749a46880cd482f1cb53","github-coordination | repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","equivalent-behavior","complete",".github/workflows/codeql.yml:2 [UTF8-LF sha256=0ced3b7ee236102d9322f20ee0e4a37347aae41d791d48c38731f96daf4bdfba; anchor=name: ""🛡️ Security · CodeQL""]","Actual donor Actions and JavaScript matrix, no-build security-extended queries, pinned checkout/CodeQL actions, no persisted checkout credentials, PR/main/schedule/dispatch/merge-group triggers, cancellation, timeouts and fail-closed aggregate summary.","Pealayer React/Vite names, packages:read permission and branded prose [replaced]","Pealayer React/Vite names, packages:read permission and branded prose: Pakar analyzes embedded Web/scripts and Actions, not Pealayer React. Package read permission is unnecessary for these none-build scans; Rust/C++ coverage is explicitly not invented.","tests/repository_governance_test.mjs:105 [UTF8-LF sha256=2c8393bbd1463ce367cff24d72110a96e53e664824d780f2e66a2c8f8930bda1; anchor=console.log('Repository governance]","","","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer",".gitignore","10fc6604a9d6068eb57da2f00d7d9404238f00c8","65880959cad401160df570618e66f8cca68139ca38fbaf50e70475640b2d495c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","AGENTS.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","eb3655d25b4aaa3d8ccaa8217c7357affc7b3afd49a84924d07abce4b0429f86","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/fonts/Hack-LICENSE.txt","10fc6604a9d6068eb57da2f00d7d9404238f00c8","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/fonts/Hack-Regular.ttf","10fc6604a9d6068eb57da2f00d7d9404238f00c8","15f55cc0c85a2988d2b4b3a8cdb5d77fdfbaf319e1bb5309d725db9818fb7125","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/fonts/README.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2c0917241b96d23b0c11ca16f090b6679485e4943f010a1f0389d942f34f1404","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/fonts/Ubuntu-LICENSE.txt","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/fonts/Ubuntu-Light.ttf","10fc6604a9d6068eb57da2f00d7d9404238f00c8","80307b8da7649aa4ee4d484b232140e3ce1ec0ca093073d3c53c8f5a5ced7a70","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/fonts/Vazirmatn-Regular.ttf","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b69fd4c680b8f3f225feabcc655a2c585d97627b8f5f5c0f9985e894069f3a56","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/icon.ico","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4b4a5f9f012dae7530d0bbdc128d1d004546a0082ba226556363c97b3e4bcd3b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/icons/classic.ico","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a0c442accc9b0be3cf725f8ee339579e109cc27a440be4bbdd055c9a89a0e81a","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/icons/classic.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7d9d96fcee823a5c3fb16a46205772df81b96319d69d7f6ee0d2fe236f73ae42","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/icons/classic.svg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4f28321e923274ce2b571b1f4e7921afe83d61b60f1cffb3679429c3f1b5454c","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/icons/README.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b82f98fe31bd8b77261ff33bff640618d58a15cc9e287681f176e0d888db3dea","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/pealayer-icon.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","082cd912ba2a649f4f2c975b570efa6063e1c96a8051e0b81cdd1895826ab9ca","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/pealayer-icon.svg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","64610d3cf25cbb0814d784a5530ee7b002775b477128aded1feb941d951d1485","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/themes/palettes.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","11990ef4b31ba6eb1275c6e76b9156e0f05bacb2f59a8fa0372b778c6caf1501","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-file","complete","assets/themes/palettes.json:2 [UTF8-LF sha256=11990ef4b31ba6eb1275c6e76b9156e0f05bacb2f59a8fa0372b778c6caf1501; anchor=""studio""]","Byte-identical Studio/Native light/dark JSON catalog, all fourteen semantic roles.","","","desktop/src/ui/palette.rs:91 [UTF8-LF sha256=3d04f723252650661f9fdacd2e1929f3ad28fac4cd3dc40720bca32eac4f3a7c; anchor=fn imported_palettes_have_every_required_role()] | tests/web_appearance_test.mjs:57 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=embedded catalog exactly matches]","","Embedded Web now consumes all four actual palettes and fourteen roles. Mobile catalog use and native/Web shared preference synchronization remain pending; byte-identical asset retention is not all-surface parity.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/themes/recording-colors.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cbda19cded83672814b75a894919c6363dfc9e54d8ba15e37e6c35bbee767687","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","assets/themes/ui-colors.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3a820ac2a7e0d406f34b815f46fddc5b09ec56fa2b5230b69a1b3abb6d185eb8","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","build.cmd","10fc6604a9d6068eb57da2f00d7d9404238f00c8","84dc54c81fa72e2fec6906add9503c58423ad40b5415aeab76ccf5e2b8f375bc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","build.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","68fb1bdd9e7c7523ab303e37001d3a5252dcb03abe85e489432fe913be7b2e0f","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/build.rs:16 [UTF8-LF sha256=a7c694cdd2cfd17e3359db8970ce9ffd7db699110145543dde7c73703ca017ef; anchor=brand_image::native_icon_bytes(brand_image::icon_bytes())] | docs/BRANDING-PARITY.md:60 [UTF8-LF sha256=0bfa8122dc9d6034551304f2fed472ddebcff170e14a23f63011177aab75d2d3; anchor=## Explicit unfinished useful code and reasons]","Application PE/window/tray master derivatives are separated from actual semantic quick-action resource generation; master/helper changes trigger rebuild.","emit_build_metadata; APPLICATION_BRAND JSON/APP_* precedence/filename validation; version/InternalName/OriginalFilename/copyright/provenance fields [pending] | macOS brew/mpv probing and rpath flags [not-applicable]","emit_build_metadata; APPLICATION_BRAND JSON/APP_* precedence/filename validation; version/InternalName/OriginalFilename/copyright/provenance fields: Fixed current identity exists; validated external branding and full generic metadata/provenance remain useful imports. | macOS brew/mpv probing and rpath flags: Pakar is explicitly mpv-free; media linker dependencies violate that scope.","tests/branding_test.mjs:12 [UTF8-LF sha256=c39528379a8b6e97561e0e0deb5e435a182f75bce2b385780c7b9ee853455fbb; anchor=actual Pealayer icon_data_from_bytes import]","","Complete named generic omissions with preference/endpoint/runtime tests; source checks are not deployed acceptance. See BRANDING-PARITY.md.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","Cargo.lock","10fc6604a9d6068eb57da2f00d7d9404238f00c8","54f291c09a7a0d7bc5e11d7b70b9d1e6921afcef057a788ce7e7226add920e24","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","Cargo.toml","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d17f8153af16ee32d8bef8abf37b15af46f84eeb718f10c4d2791def63d0e84c","build-storage","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","CHANGELOG.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f0a7b4957b86ee7fcdc5016f0670bafc601aadc3cd8b18cf62da49b18ee4b98d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","crates/download-core/Cargo.toml","10fc6604a9d6068eb57da2f00d7d9404238f00c8","44af3889be856426171a52839fac7d99846b63950d4e615adb676c92846714e2","build-storage | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/9","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","crates/download-core/src/aria2.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4ee6f48ba24565856a730b22cf3888b53f85062d97f495d180e2cdca5939ef13","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","crates/download-core/src/cache.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","150ef70caa9069c5872aea494f6cffe9b812fe5c5bf41e700cf06628d09f508f","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","crates/download-core/src/engines.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f1220e2d63ff72eb7cccdb95b1a5f1064f80f27f93cc72f35dd00738dfa1bdcf","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","crates/download-core/src/lib.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d06c69f6b38ac2f764e7f2489c92fd6c865a232c8f0cbf3d3225a4f9efb41303","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","crates/download-core/src/tools.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7af574f90a182be99f2a5ee105bdfb8e7b3e8efa63151eef26cfdafe521da3c7","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","crates/download-core/src/ui.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9493a433755dd4a29cd7a7cb01503e4aa88de78e977de5dbc291e865ae38d0a8","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","crates/download-core/tests/tools_runtime.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0b9535449a88d8d3f81e7fbdc2cdf94617a599b9a5f5c48badbdf2fae3b81b1c","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","crates/download-core/tests/transfers.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","70ceb833c62f6112d5561c43369bed676917e0247533bb812f34ee46107902ea","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/ALWAYS-ON-TOP.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","603e50ccc555a7a7018baac1b359e4910266e93ae447c8caa211aca0b970ac72","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/assets/feature_walkthrough.gif","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4ff5cd266601a2797de7d53f092b99664db2ca8748f09683b84edb7fbcce40be","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/assets/layout_preview.gif","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e7bee22a2cba8dd7fa5cea5ec86dfb81214ab163876fa017d7767bd774047763","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/assets/macro_recording.gif","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a4965ce6b141465c55e6b5e12d11c8f73101f15975997a4484fecf5c5f5a19e0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/DOWNLOAD-CENTER.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9ab3c73adb0809abc7b121fd3c7ece3a73f3347917525ac2dfe4a3256fedfcc1","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/EFFECTS-RECORDING.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ef27bda74347b537d74e90a43bb58cdb95fe24afa2cf5ae90857257f1e54c693","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/external-mpv.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0624885e86488c09c6628767f4b0bd5497779e7af46626cf3289d1e18ed6376d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/HARDWARE-AUTHORITY.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d09bf8303f7d92c69569cfe9a8fc125857a4e6c3827aba905de5fd38141acb4d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/HARDWARE-CUE-MODES.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","70cf65e0f4d52c79c371f29c050f037b9c99d59a3b6a675261fde0abff3dea56","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/always-on-top/web-preference.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4d3649236ca1ecb1ba8db02d836631c029ab0ffafbb9234036003ccf30ad9627","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/responsive/after-channel-manager-390.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d8447a99ea2674d7640e777bae9212fdd5dc5e6092c77a4e4cb7dbb11d1a49b7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/responsive/after-effect-editor-390.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0edde03b73b2877519934333dab427bcee71ec01598c3f3e0bfdc5cab69558ad","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/responsive/after-effect-editor-landscape.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","15ba6a2a3dfaf360a55f2b6b179c0450dee76ce040c6722853da4f49a67b5074","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/responsive/after-effects-dark-390.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fea9991b0b6110653915f595abaeebc49cf4431654178d38c5f174228459bf80","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/responsive/after-hardware-dark-390.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","05d7302ebfcf04f678d6d10d808083f95d89f1c232c6709c77212e0fa31f9b21","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/responsive/after-hardware-light-390.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1c6d17a24f146881614bd8ac7bbe25a32d0cb29c79e50ef29e37e7cb2e9c2969","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/responsive/after-preferences-light-390.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","faa913cd9df56349b1f64c32ec31bedd6ac4a93c0963faeeab9314e248d6551c","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/responsive/before-hardware-390.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","03a492e15bb6ca39398e3522f16748499e1ebc9e596e4007d2b735d56a1e2a8f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/responsive/responsive-installed-dark.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ea49ac22888829f57269ca1a3267a154942966cfee1f82e06ddcc1ad79bd4a5b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/responsive/responsive-installed-light.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cc479ad2c57df741c0eea3f290bbbda2e0b2751fb5e74db911b13662c1465265","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/rf/rf-assignments-dark.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f2dc3c69c6789ceb53a304cbf4e4fd726f4b072dfdc011ef660470883526b348","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/rf/rf-assignments-light.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","be1b7aeb72d1c6f09dd1aba295e6fa19715577aebc0540d6d8aa220dfebf2662","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/rf/rf-receive-after-restart.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f93d1e6030d7559160a50f93a0721a01b0d1201e3c6bb8420767c43ab269e45f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/rf/rf-remotes-dark.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","dae0ae1dccb8481882b877d8091b450ff0043e301aefa3115b5cef06ac74665e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/web-loading/fuji-dark.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bfb7dd258d201f83fec7b3e427b95207c626ead67a3ff78f131febb45b2838ea","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/web-loading/fuji-light.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","12f34c21c21cfc66ac23857d1a268cfbae5ca6c05be87341a3f0030eda39e87c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/web-loading/fuji-view-loading.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4b9867aef1f9d6aacb9c0b8c1269098960e4dcc9535c7b8e7b741c3ca502e614","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/images/windows-taskbar/phosphor-toolbar.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","aa5867d076ffafaed7af87974af7cdb9d2f7588fcad8694ae37144e7811a0129","ui-shell | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/messaging.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","01be9fd84f1e8482e82f1feea559822f486db8ce50d14156e1ce41134c43d16e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/playback-board-sync.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bf9f664158d9ec3554aad64ec8a5b1d39d710db584555ced8c685c66b169dbbb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/PREFERENCES-ORGANIZATION.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","504310e17b742e3c66bcd1579272330b207e017d4e631aee2fadc69deee45188","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/prepared-hardware-timeline.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","036c2fa3908351812a43cb35a34e4675d68355893e59e6ef4dcf13b64bf3d5c0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/releases/next.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","71f81fa503d0494a85dd700e16cabdb23e1a6dcd6abbb0abc1af47000584b3f7","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","equivalent-behavior","complete","docs/releases/next.md:1 [UTF8-LF sha256=9e83c4d1a348af3bc275a5ec924abea7317ba22d1f0e66eac63d6f5499efbeec; anchor=# PakarController development packages]","Actual donor curated preview notes explicitly distinguish a development milestone from stable-release, physical and platform acceptance.","Pealayer media/audio/timeline milestone inventory and archived media screenshot evolution links [replaced]","Pealayer media/audio/timeline milestone inventory and archived media screenshot evolution links: These are donor-specific release facts, not transferable Pakar features. Record actual controller/interface packages and link Pakar issue #2 instead.","tests/repository_governance_test.mjs:105 [UTF8-LF sha256=2c8393bbd1463ce367cff24d72110a96e53e664824d780f2e66a2c8f8930bda1; anchor=console.log('Repository governance]","","","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/releases/SCREENSHOT-EVOLUTION.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5ea2b42f16e1c7afdfd27065a99b91a3d7e8176c81abeaf10ad29fa50fd06316","repository-governance | capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8 | https://github.com/atomicdeploy/PakarController/issues/11","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/releases/v0.1.0.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5c7ea8ef78e2f5ed358d368664e3353d597efe3f45b72e2abde1f5a82652f01b","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/releases/v0.2.0.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cf9097cad4651b0578a6b9ba55e8cd43ca35a4d40e4a54c19a87ad37c3627fff","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/remote-folders.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c34bc6aa84945bba7c7e143de739e5e5f1fcff84c84a6b0802931dfafbb02fec","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/REMOTE-PEALAYER.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","349c18ebdd5d6451815e72587bb0994b6e9263bd2e05a98540d8221c0d2608ea","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/REVIEW-COMMENT-AUDIT.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7a91d9fa8778383ee37e33d861ceebc5ab210e46bedab6af8be82d56c27523cc","github-coordination","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","tools/audit-github-conversations.mjs:59 [UTF8-LF sha256=0bd597414af4e28668d2da96e250a27a99550fff9b86e5d58136b7de583a1dcf; anchor=export function collect] | docs/GITHUB-COORDINATION.md:1 [UTF8-LF sha256=64a078407d296db907e8645e07dc25a6392168cb1cb2e39cc8bb18a9bce01f0d; anchor=# Conversation-aware integration]","Actual exhaustive review-thread/review-summary/standalone-comment audit procedure adapted into read-only paginated GitHub collection, hash-bound manual scope decisions, unresolved/outdated preservation and quota-versus-completed-review distinction. Used on every state of Pakar, Pealayer and PCController. Targeted cold-cache refresh now retains other repositories from the committed inventory, preserving all 778 PCController/Pealayer records alongside 38 refreshed Pakar records without promoting their review status.","Historical media thumbnails, MPV surface and DLL basename, timeline/cue migration, audio delay and media picking fixes [not-applicable] | Complete semantic disposition of every historical issue/review and full DNS-rebinding, actuator/persistence, UI/PWA/physical acceptance [pending]","Historical media thumbnails, MPV surface and DLL basename, timeline/cue migration, audio delay and media picking fixes: Pakar is an mpv-free controller and does not own donor playback/media/timeline models. Generic staging safety, keyboard ownership, error correlation, authentication and service-worker origin lessons remain applicable and tracked independently. | Complete semantic disposition of every historical issue/review and full DNS-rebinding, actuator/persistence, UI/PWA/physical acceptance: All pages are collected but fetching does not mean reading or implementing them. Only explicitly hash-bound reviewed scopes are marked; every unread record and source-file import remains pending.","tests/github_conversation_audit_test.mjs:30 [UTF8-LF sha256=dc841c32e7f17b65ae9f16222dde27d0aa7d7d96565654e383978d4919499486; anchor=Paginated GitHub audit]","","Read and reconcile pending records in the refreshed 794-record conversation corpus; seventeen full-record and two comment scopes now have explicit semantic decisions. Continue applicable source imports and exact source/test mapping. Verify RayanLamp repository when supplied; do not invent one or mutate donor comments from Pakar.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/reviews/2026-10-06-review-thread-inventory.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0a963fa2ee82a20db70be087fc9c045518b2ab7d02adaea9b607eb8ac44633cb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/RF-CONTROLS.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ede5be912ff25a8569744b8ccf19ad607f34ee07d015d86a7b5953629b35e466","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/SCREENSHOTS.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","844423f82d46400a3e698283b2f99688502d96ebb3a62574eceefefa2acfff85","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effect-cards/after-dark.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d12716647243eec41277f6470217295df4cc5108f262fac9f3863898d50d3019","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effect-cards/after-light.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","dc5b54b43de2a7751074fbb58137057ce9a535c6a3758fecf0a8adab48a2ee0e","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effect-cards/before-dark.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","83945d1bb30541e58f9d61a306f972f26c18a523098ab3e12cff790d188a6281","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effect-cards/README.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bdce5fcc8a27be4299825e6bb5115c606bf2157d5dce06eb44b654f23c8bcf20","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-library/groups-after.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","220173489961c5f3972d08e0b5cbffa45720b53fc546a0f13a451a2a391d3944","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-library/modal-after-dark.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","46f51e3ff3354a0b0f846fa8ec4b77bbf2138bc88235162317ff56fcb83cffc1","capture | preferences | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-library/modal-after-light.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","63d40d6b2469c9030a3d63122136c4bf7833bd2f90c0c59cbc1e26ba79e6df93","capture | preferences | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-library/modal-before.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d081ec4ad5d6f47afaaac0c44d3ca7e517456231b09071ab86054bb951531eff","capture | preferences | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-library/README.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ec80101ba65d884536b7b20dbafe1aeaa6de65311e39ccdc37176066a78da11e","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-recording/native-recorder-active/manifest.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f07f33f11096832d8dc9eb0148583d52d9b5ed77162ec530d0977c8a626e1a35","capture | updates-telemetry | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-recording/native-recorder-active/pealayer-en-dark.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d4acd283261c23d20cc9257c194ff2e7ed2f49ac707f5f619acf17c35441502f","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-recording/native-recorder-final/manifest.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5d68869fc521091ae44419a3eefcf795bfede2f72d55b71cac85ad21a5b91eed","capture | updates-telemetry | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-recording/native-recorder-final/pealayer-en-dark.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5099bbc0aa350f46226998237f80c0d75f7eb79b0716759d15272f28b92586ac","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-recording/web/effects-library.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","956dd05a529808699b0cb006019cd4d15a92e4bfbb82b02d2f6417629a09bd24","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/effects-recording/web/timeline-cue.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7fa3a269959d0f707125dff5078be756b97b95e3e2a6fd61b9132bdd52458a33","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/channel-manager/after-light.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ac5a42674651edb8013fc67351a3cf8d8b5e545285ed51827649555197caba8d","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/channel-manager/before.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2919756476fe82a8d659c0fcb2aaafb9f3bd72820dca07d1b699166cc3fc0205","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/front-panel/pealayer-front-panel-after-k2.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f9b28a424bf09b267932481accf5fcfbd36ace2bba26a5eefebbbf4592db8609","capture | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/front-panel/pealayer-front-panel-before-k2.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7eb34eeeed2f103b770c609610f6e5acc18044c2e3f0630c8fc16dcdf60b4ee2","capture | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/front-panel/README.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9f7140c7e6c3dafa2f042d427eed48c5a242d27b16a9bbf7888ca241f1406af7","capture | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/monitor/manifest-dark.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","48d8217c7c76af616b401e754984000cfad8b557dcff31ccfc7bb1d5105c9a6d","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/monitor/manifest-light.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","70d05649b2cc6dac0041aba9ad09a9860d03cf21764b37680fb47e8579a4b676","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/monitor/pealayer-en-dark.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0e07ceec76ce251c737d8e30cde86b212b741fd5ee57d8ab148da26b0addc39d","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/monitor/pealayer-en-light.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5b6096219318c297eb6a65da67838ec29ca3d27649cafa904d200e8bf302da2c","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/motion-context/manifest.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4ca7661d118767098a2901bdf5f06326988f2cf7060f4caf9a3a46291fee4dde","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/motion-context/pealayer-en-dark.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","375955ff74707f986d3b63d1de90c38ab6088630ad80a01c7e53fb0918e1a75a","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/motion-context/pealayer-en-light.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","67e2cfba5256b4352c1f0968a5bdc4ec09dc4459d5d6cb4e04f58fb0ee9e8238","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/pwm/manifest-dark.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8680ba7cd945a4fd10e5e27ac6e29351cb2ece3b223c0820e84bfd22a805f38a","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/pwm/manifest-light.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","83869680240d3fe29ff901ada8128d47d9a33bbcc89323017701baf0b484b733","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/pwm/pealayer-en-dark.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","13b6639e2d3b24abc3a3c5849ee664875c6874c08f96a3be33d036a25784c444","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-controls/pwm/pealayer-en-light.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","996883ea00efaddd9df41e48f1d081f942607eb11810cf6c43fabecf13ffb072","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/hardware-monitor-before-light.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","69e44968da8e38a12c3890b82d61668ec3bb788c4434dce8de3f533b5b7898ea","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/manifest.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ce15e7a77eb8dfed6edbbcc9220b44ba76ac09ce0c37ae8fb1d14eacd7799926","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/pealayer-en-dark.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","453c4d74bbf59aba3f6dfb9a30552e6790d46eccde7f42a4bbd9c458f9094c6f","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/screenshots/pealayer-fa-dark.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b122c62f986ed61b69c2e232fa163e073d9d30ef2d70e97ae9a368a76958d60e","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/SEEKBAR-MARKERS-AND-SEEKING.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5b0fe5db19b31a82ef7b6cff3c8116d0dba5595dd9b39ae602e556a469e102fe","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/SOUND-EFFECTS.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","43d1134471172395a7cc903c9d7f4cb1ebaabb80b124936899f7bf6f13d285c4","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-16-4d-cinema-simulation-protocol.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4da74afd0c7b1be41c66d8d9a4c23c4fdec5bbceb9dffd69e733840cf4d76103","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-17-4d-cinema-live-motion-capture-recording.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1f6c123ac85f68a3c4e7599cc6287d530cf19228e7354c7d5be6d70e8b1f349a","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-17-timeline-ux-ergonomics-interaction-design.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1428e9a5e555acb75c4beb0d2a733312192c56edc78c474822be5b3a46a85acb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-18-hardware-affordance-and-track-validation.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4addb1c0faec805fa47b9ab07cce55913b27f4973895bb058d2fddd9f7610913","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-19-timeline-effect-controls-and-handle-ergonomics.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fd5b32723615ccf4e9713ef11ef18948ac222de789815706a850bd38803efba5","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-25-interface-bug-fixes.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e73e5168dcd0e58f3d2f2090ce83ddc5a8595cda550ef343266f89683ee36ca6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-27-milestone-2-unified-ipc.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","705879e1c0dfe0fceb4f6692c72841531d3aa566a9524cda837fa64410171486","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-27-milestone-3-cli-mode.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cc57143383c4412cbc54c8396cc56aefcfaa02cec3520917b1013e985d0f2d72","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-27-milestone-4-windows-aesthetics-and-associations.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f0f013ced5fad089bbe76581ad212cd3f9e04d7bb843a94f68d415415cd1b4f2","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-27-milestone-5-web-ui-media-explorer.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","56d954dee5bb5687fc629f311e1209a1c09763ea7df07231980ff14985c41f8d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-28-phase-a-controls-ux.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","163c37f2bcc47c8f49dd6537e5bf31a88016b032218a0961c2735a1bcf59d89d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-28-portable-system-config-storage.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","244ed6999182c28924a39aeafb5b968b9c075e6997e4a47932048cba84e7e432","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-28-windows-taskbar-and-tray-suite.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","033a82778e4ed8258bbbf99600d16039f523043386e302032d6df8849624ea9f","tray-tooltip | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/platform/windows_tray.rs:17 [UTF8-LF sha256=94bd79acba0dd4d572222cb064e451a274ee38579a392c95c56d997779cc35bf; anchor=struct TooltipSync] | desktop/src/platform/windows_notifications.rs:158 [UTF8-LF sha256=71f2254825ba2b16d83696ce0e0cf74ec7c95eedda5f60e1c3d167826693ec1a; anchor=fn tooltip_data(] | desktop/src/main.rs:5206 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=event_log.failure(""Windows tray tooltip"", &error)]","Full donor plan read through EOF as source requirements, not trusted commands. Generic existing tray lifecycle/menu/disposal retained; actual windows.rs NIM_MODIFY/TIP sections read and adapted to the owned GUID rather than duplicate registration. Tooltip Shell acceptance is separated from object presence; failed writes retain pending latest state with bounded retry/incident recovery and observed restart epoch invalidation.","Playback percent/error/paused inputs, media thumbnail toolbar Previous/Play/Next/Mute and video-only iconic clipping [not-applicable] | Full root taskbar initialization/retry, thumbnail toolbar lifecycle, visible tray/menu/notification clicks and all Windows shell suite acceptance [pending] | Direct donor NIM_ADD/uID1 and popup window ownership [replaced]","Playback percent/error/paused inputs, media thumbnail toolbar Previous/Play/Next/Mute and video-only iconic clipping: Pakar is explicitly mpv-free and owns controller operations, not playback/chapter/video. No synthetic media percentages or nonexistent actions are imported; actual pending-operation activity remains. | Full root taskbar initialization/retry, thumbnail toolbar lifecycle, visible tray/menu/notification clicks and all Windows shell suite acceptance: This fixes only GUID-bound tooltip synchronization on an already owned tray object. Mock clocks, NOTIFYICONDATA assertions and observed restart messages cannot certify complete root shell readiness or user-visible action delivery. | Direct donor NIM_ADD/uID1 and popup window ownership: The pinned tray library already owns HWND, registered GUID, menus, icon updates, restart recreation and disposal. A second NIM_ADD/global icon could conflict with its identity. Adapt direct NIM_MODIFY to the actual registered GUID; no guessed numeric internal ID or library source patch.","desktop/src/platform/windows_tray.rs:287 [UTF8-LF sha256=94bd79acba0dd4d572222cb064e451a274ee38579a392c95c56d997779cc35bf; anchor=fn failed_tooltip_retries_latest_value_without_false_acceptance_or_flood] | desktop/src/platform/windows_notifications.rs:204 [UTF8-LF sha256=71f2254825ba2b16d83696ce0e0cf74ec7c95eedda5f60e1c3d167826693ec1a; anchor=fn tooltip_uses_the_registered_guid_and_bounded_utf16] | tests/windows_tray_test.mjs:37 [UTF8-LF sha256=541da356a3c3e376e2eacfa10dbaf068925074ca5c77a005ccf71121eb5639cb; anchor=Actual GUID-bound tooltip]","","Actual installed tooltip Shell acceptance and physical Explorer restart/visibility; full root shell and action acceptance. Complete windows.rs file stays independently pending; only2364..2421/2483..2513 sections read for this adaptation.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-30-light-theme-timeline.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","53f7508a028d8650fd113957ef9676f676b365febba213ddf2626889e292aec3","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-09-30-workspace-panel-restoration.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","13c657478cb2df5ca94cfa9455d64ff7707c6988ddc7374b8225b324d644d96b","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-10-08-frame-accurate-scrubbing.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8efea5b390b3682ee195b653dab9a250c1b3d6b5d14cef2010970750cc89c29f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-10-08-icon-picker-centering.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","da186a9043758dcdfccc361bfe64dc5dfe8b766ac5e4a233bf5ef675f86e5288","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/plans/2026-10-12-libmpv-teardown-and-windows-test-isolation.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fe33ef59f48e94b2451db0c4a054d8e85226322c23c17d1b466715fba71b6d60","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/specs/2026-09-16-4d-cinema-simulation-protocol-design.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d521eddb907a65b8b3a5cc6f0b402ae600e2b6ceeb08818ba8f541304ecb1c8c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/specs/2026-09-17-4d-cinema-live-motion-capture-recording.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ea83fa1967e797a8a40d110a8ff1776fd2df3ce24f7f82f33c14d552ceb8b406","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/specs/2026-09-17-timeline-ux-ergonomics-interaction-design.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","980f6d93e0029ee40f7f87812bf3838500801bcab3b802bfc995996c6ec227d5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/specs/2026-09-18-hardware-affordance-and-track-validation-design.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","acc0c007809321f624e3bfbedc10dec0d6e9909b7037329d1cc54275549ce72b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/specs/2026-09-19-timeline-effect-controls-and-handle-ergonomics-design.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6ba8a05d01c3e3f7233b1817322767db37a902d30a38e59ed34fab41a1e6f6ae","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/specs/2026-09-30-workspace-panel-restoration-design.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f986ae7c1c76026967b341d0dc8121c29e0c50c60b7a8fac89ec361006390ffa","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/superpowers/specs/2026-10-08-frame-accurate-scrubbing-design.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","054537fb008eb2762d622db23e45d0726033e3b97edefaaef297f77923715d07","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/addressable-strip-pipeline.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ed3b794bb8770a289fdbfa0271665ec86a78d3dbdb40082c3c3a428f984ba2a0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/agent-handoff.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b0de9fb2e643bc5b86bca5b97435e73df0abaa64e2de5792196190624cc589d9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/appearance-palettes.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","82d98a97c70a1d8ce929f396d4e45b43125cb49cf5de4c233d4f3cfeed902fea","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/appearance-palettes/neutral-default.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fc122c9a64416213a3d6e30a99f84e217acd04f33b1716a469899ae059b5ca84","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/appearance-palettes/studio-green-dark.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d946fecb352c80995c75974d4a07d7f8bc8f000520a9603477563fbaf9511def","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/appearance-palettes/studio-green-light.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7339913a4de0acc0f0fed4bcc7f23550845e3b8728c5d27f8ea68d914c76d871","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/application-shortcuts.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","534c76ad08d793872f64931417444a20b5355db27f11a261b8327f7bffe502a4","preferences | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/audio-slider-wheel.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c166c4871dd3724da61f2158c434f19c86fba54c8b6057310ce020bd3a6c8fab","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/authoring-readiness.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","680688cd2ef747cbc0dd84ae4591931c64a4ed8ab8a7cbbfc26922a28d1d4ba6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/authority-modal-dismissal.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","93cb3202ea13f7e1a7fdad10ec0c55cd4c5fe1825bef742a7a5f99c70f87d5b1","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/background-media-controls.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6ad6707f13141a349dc089319c2fb03f55a3a13d3a19cddd974636ed28ac4e24","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/binary-udp.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5e59417e560f54b4096886bff37835e9f48c5ea988433a87561d47f3a8911a94","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/BUZZER-LIVE-CATALOG.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3757ca2a56a0ee88bc8634c1d81b99b5f0c8dacb037767150e207c8aeb0ac46a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/CHANNEL-FEEDBACK-AND-CUE-PROPERTIES.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c833a34599e420724a2ca2ca3d296d78755ed37c7294c9895b8f98e86ecafbdf","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/channel-folders.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","613334050c88db40c19913c1ff19e38799b0b7ced746213b2b7467eabd7a7259","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/control-bar-customization.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4d84f41ccacdaf764c28e73a3caa0e76cd0c9e17076ece0e03781d39d2eb719c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/control-density-and-buzzer.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","15be57122e9b8bdae5afcb356d9fa6046cd993c29ee4fda3e9b5758b6a1ff5d6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/controller-response-deadlines.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f2fe5db5547a70c15f2b66355b0ab5437d7a1970668a78c451e110567853c63d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/controller-update-progress.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3dbdeaf3769a5d9d4d3c9fa0d19a41ea55521a18ffe959f79bd32dee4ac6e535","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/copied-link-verification.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","510dbdd05003b12b0e0053485568178e35060fbcc5678486ad9575e5da355dba","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/ctrl-arrow-frame-stepping.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","473a20f94e2e6e870025b73df0118dd1b0710ea41852ef4641313346cfffc0f3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/cue-dialog-responsive-dismissal.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fd8555db75f669741b75d6f74c035c7bf5b13cf7387fef3c0c95bd4021698d54","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/CUE-STARTUP-ACCEPTANCE.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f46fb368e767def05135111d165af8595abf043f0a158413a367969c98787d1b","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/CURRENT-ACCEPTANCE.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e95cab3671c7a9d359c2d19cedc16fea9c03e3b7feb2a63f3a6e433b57864cbd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/DEPLOYMENT-AND-MERGE-CHECKPOINT.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7c659699d42f8c99729b4079d0c4df69c685bd1c1c92c47176a2cea7fdd2c6b8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/designer-effect-groups.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3aa6b1ccd66d69baacbaeaaeb79583522d16260e22e76dfffeece0ea50b47bd3","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/designer-interaction-consistency.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","44408263a403fc246d24e1a6a17b522f7b52b855efd18688abbe8b7069ab80f5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/dropdown-navigation-colors.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f95cc2e3d9b70f45c4343eb03988655eb7dd89db93d8f2eaa44a7ecc62506c9c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/effect-card-rename-geometry.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","00f09e28a27cf52b881ff646f92414a144eebc39337ad6e677791e7a006cb8d4","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/effect-card-rename-inline-web.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a1c83cb9f751457be6b51c0212713d853674a293d1907d0c66d594bd564cd0dd","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/effect-card-rename-menu-web.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0321b42b32bb722786fcf658849f945c8071d3398620bc6cc64942ae216dbe5b","ui-shell | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/effect-card-rename.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bd705f1d99f35479b9bc30cac42adfd2f3d7a75b266f0004da09674d8e4d2b46","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/EFFECT-CONTROLS-INSPECTOR.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b93e098086071b6f5f43d15bbc332f4da612029d3e7dcca5fce09d5ee4ca6122","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/effect-sequence-context-menu.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a07813a087895ce99386c939768e09b2e223013e45bb27a3eac4055c9488cad6","ui-shell | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/effects-designer-gestures.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","869554511b024092229f36575d98a5db94a3d016fb5aeaffa72ff0f096ea3ca5","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/effects-library-card-header.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bf9758e77987d39362326a4288bf88efd8683d2411b5e900e83d4a3c47b5d176","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/effects-library-hover-spacing.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0afc1db6b313057c2d81c07386233b14401df9203f6713867f8f09ddf347d4b4","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/ELAPSED-TIME-SEGMENT-EDITOR.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ce52a4be3acdcec2da930f19de30ee067174509de9f70f7cc308919045e4be6f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/ERFAN-AUTHORING-READINESS.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f6cfdbc15dc68443cc18d2620ba956683dfb5d49b9ba746b27f3a0377e794b7f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/EXTERNAL-MPV-DELIVERY.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e7d614c00066883438ec77f8132f74e551979f9890125ab674659000d592be53","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/group-selectors.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0ee1012dd37bf935fe11ec2474ff34501a7d90bc32b0a76f82f05f4908624313","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/handoff-audit-20261008.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","994e39ceae91e80e97126647e492fc66e18dbd11f1cccda11a981cbdf7440498","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/hardware-caption-alignment.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","74a694c0c97c81cd11f99142fe1af064948c320b3ddb56d473ec5f740d80bfcd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/hardware-clock-starvation.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9a037e4bb4743af254248648902cb3ea6b89b9d15da01f3cc76f730a32af0293","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/hardware-hidden-disclosure.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","65e8054395e764f1a5693377d93fdae228bf761e8fadd565e935ffc1093c282b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/hardware-monitor-navigation.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2750e9df83f7b22f892b928062387192c3356fcbde75367fe484e15c8a5b1666","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/hardware-preparation-recovery.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a7738a56e294b0480ed9e72de890fe24e98685992ee4b2050d1fc3e9400d4b6e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/hardware-secondary-click.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a529792a1d1b0a59469aad2a0718fbb3a149e9c92bd37803f1e998199a1ce2aa","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/hardware-status-interaction.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","91d5ae19ce057b7b1944908c7e94925425328cdb8c45dab3eb649d2b64be8343","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/header-selector-bounds.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","75d01a2c13b33f9883294ab2b32550f1147f34fc6038536c74d5dd0869819c92","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/ICON-PRESETS-CHECKPOINT.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d880682cc609af79908a9370c93f5c59ad3e3b2ba964712de0cbe2417aec6273","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/idle-video-repaint.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3558e2c9d11ccf1b7fd47aae1af1cc3ca18cdc7cfa95cc4f790ad65316188377","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/integrated-effect-capture.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cf3cbb55ccba347d3d92cd843b1c2edabb782913e3f4e6b23b510e45cc61515d","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/issue80-current-audit.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","51a13aefa8736ddfebc2a072ac0ad22c75b67f359966dcd3abdffce1ce62f6b2","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/issue80-native-delivery.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6dc7dfbbcf8d7ae7eff7f19591e4f6099d434ea6a44bfa7e8806080e2d65d357","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/keyframe-context-focus.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7052182df0310de6863c42b1d4c9c50ade0eeba9cc3272c08fa2d55e3c145381","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/LIVE-BRANDING-SURFACES.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","be70dc5302099e5b236571cc561fc63a08a03930358488e182596d65455e56ce","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/LOCAL-WORKSPACE-HYGIENE.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c024125307f6e466c924e1b8874f869a575b085b2a05bb4493bfd1d1e9f38975","build-storage | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","parity-gap","complete","docs/REUSE-PREFLIGHT.md:42 [UTF8-LF sha256=13521024e5b18f314abcc71af4e9c722262a7cb04c17f03155b1e88d0cf0972e; anchor=Mandatory sequence on every task]","Actual canonical-cache/stable-staging/preservation/blocked-operation and separate runtime-acceptance guidance read and adopted in mandatory continuation policy and tooling. | Fully reread the current donor through EOF: shared-cache rejection/hash-copy/storage inventory, routine symbol/incremental policy, debug-only guarded cleanup, measured scratch-RAM sizing and skipped-test versus bundle-integrity distinction. Actual read-only directory summary/equality helper and mandatory low-write/preservation guidance remain; donor historical cleanup/deployment results are not Pakar facts.","Historical Pealayer paths, exact relocation/cleanup/deployment/media-clock events [not-applicable] | Same-volume rename/hardlink-aware relocation and reusable host profile/peer updater workflow [pending] | Mandatory donor lookup was previously absent from executable build/stage/capture paths [replaced] | New source-checkout cache prohibition and explicit guarded target prune [pending]","Historical Pealayer paths, exact relocation/cleanup/deployment/media-clock events: These are donor historical facts, not Pakar installations. Copying them would misrepresent ownership or completed cleanup. | Same-volume rename/hardlink-aware relocation and reusable host profile/peer updater workflow: These are useful generic mechanisms but no Pakar cache relocation or complete updater deployment is implemented by this policy. Current blocked cleanup stays blocked; no rerouting through another shell. | Mandatory donor lookup was previously absent from executable build/stage/capture paths: Capability lookup with source/target/test hash gates now runs before those actions; other task surfaces are required by AGENTS.md, not falsely claimed universally sandbox-enforced. | New source-checkout cache prohibition and explicit guarded target prune: Canonical cache relocation requires an owner-preserving migration without duplication. Existing cleanup was blocked and cannot be rerouted through this helper. No reclaim or reduced physical SSD wear is claimed.","","","Complete applicable generic host/relocation/updater tooling after ownership checks; extend executable gates when additional capability mappings are fully reviewed.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/MOBILE-BUTTON-CENTERING.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f3e298ec68e9d80adba1754ef77213b19435459e18eef30ac36a9422eb2ad0d2","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/model-native-service-policy.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","19d2f2f20666dfa706e1d4ef7838929b4c35dd7a785cae6ab9f972961b34ce3c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/native-icons-and-timeline-navigation.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e32251bdb2027a2bf0f4018bf0a46acf1d96fe1ddcbd4232106115e2dfc05998","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/native-media-keys.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","54490ea60a6a67e668e1c8a9ecd8ca9468d5394bc5b0131c6d3030d50202b673","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/nle-transport.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5f4ad53a6b0ee8cfd6a651fd8d3a9f28d560d475b82cd027bbc32ef400cd8849","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/NLE-VOLUME-AND-RESPONSIVE-TRANSPORT.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ce97e66190305ac38855f95645ee51b01e5afcd200d385960b573fe6c0088809","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/numeric-adjustment-steps-web.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","dbd5f103cab76b821c8375e8285bab036abf269bc4f65bdad30829a31a009f6e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/numeric-input-context-actions.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","102046cfa0e5ce1be0b6e4104af1c02d5cb649eb9124e6b23bbbc1c59064bbe8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/os-media-session.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3136a49b504dcbf9332e80b2f6a78a7aafbbd6423c6aa1a3d1049c1da30469de","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/paired-peer-deployment.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0836e55fdeeb55f839300799a66ebdefc04141b98fff43d160d49574c2e66d27","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/PALETTE-SAFE-ELEGANCE.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ed0a441127e20a90ba0d9f4b6aac34ed701a745b2cc907a1515726c2140d81f2","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/panel-mirror-fidelity.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b1ba4f2fa86e8653452b945367ff4430e127598005ff51d8a8c6310d6797d75f","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/playback-board-clock.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d2ca3d096e1701ea9488f1768c4c6f305bb4e6fc93446962c5778f25c73a1b74","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/playback-board-results.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fc2aa0a7fa6465d1ec4e3f67c7876bd0a8129f5d93c85139fd8210ca8f2af30e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/pr77-checkpoint.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8d8aa8008cdea5946aa87e86500be357367a4f1eaf85db37a600d98d2d98ab8d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/preferences-save-closes.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cec55a7e17828efba767e3338430cb8733488960c7d42ee8977c4fdbfef20602","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/prepared-timeline-results.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2070b3c198079376a5b3609d37b7e15d147e3f534c34e5c82580bf4fc8c4f93c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/program-monitor-viewport.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5f7d89e9420a1c796f4b25f48e279a64ed28f163d8c0b60753c381b36a120c42","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/programming-latch-state.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","dd20c0b8857119650fa55a75bd1fa89e984bd1f554539927294de0803f0be0cb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/pwm-card-controls.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5c4318ecb1ad4c895d82ebf4507a3c2a30a163a735c0db40bfcabbac91b55842","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/pwm-editor-intent.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","aeede3c7f9d75bc2b9921999d7608993a4b8c43246f3f89e0a96b2356074617e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/pwm-observed-power.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d89c1f04284e351f9d258fb6101bf9dffc090b1a7451b1ddbeaa24d2373e67c9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/recording-colors.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","781df25faf4dd02ce785be0bd5c20e8d1b4b4c1f9cad257fdc1ad62745f9a1c2","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/relay-card-semantics-and-centering.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9a08668c4fecc6934bfb243e7c90527835aa8108eaed68c87a757d7f2cb20b22","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/remote-folder-web-dark.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","add09863a88c566a86afbdc92f498b6a7553afcdbac347d1d1c974a1023f3d62","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/remote-folder-web-light.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","36992fa8bb64a5555e5a386720cce3e38542c64654b5c5d950df42c182b387f7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/remote-folders.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","05074e5aafed1d40b1881d6410a75e2a9a5aa63723fa8b324f1ca238aaeb0bcf","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/renamed-seat-titles.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f080266e9177ab44a415434b97f103c6b4a34e3e4d38947e424c5128f06c33fe","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/rf-assignment-usability.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","20224b68314dc6b4b4549f7ac7832f621ab2c610ff54efad1dfedf45cb64afb5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/rf-editor-first.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8252f2e4474ea540234f1084b20233a661a5f96e8f1ccef643ff31aeef7f47f8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/rf-reception-and-learning.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0ffe890591936b90088f3fa33b60447e0ac0ec6a9cbbf9776367d21a4edfdc24","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/rf-saved-rules-responsive-wip.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3320fd6a82e4ab1341795b8bce997e45f0e8b6f1c0406ea0505e4b8623e78db8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/screenshots/effect-group-empty-space-menu.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d92afb4f885c766a700f0ec7846d2e726ac7421da17fb5f2342d9f2131b03020","capture | ui-shell | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/screenshots/effect-group-selector.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b3e29f855277ddff1dd9d391a6e0f2da7d7815fa82ed990501baeb87797a1524","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/screenshots/integrated-capture-active.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f1ecac0efc3394085cb6b949b113072fe2674e7880c43ddfb94e69f6f7c39508","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/screenshots/integrated-capture-after.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a2d11e77b5990b65620d426465cd1904532297c76aa61c585ac560e4c368b2dc","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/screenshots/integrated-capture-before.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","022b3d1064679c20c570be6f3fe2dd3bfc01c83f738155aece784af8fbf4d2e9","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/screenshots/integrated-capture-existing.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a7844ac0d8b60a7e9f98e1f0784f2766c2149aacc28f7b05fddb220d60a581ea","capture | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/screenshots/recording-color-after-blue.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c6cdad6105f530a899548f17ebabbc85e001eb13c3eebcb61857abecf60f0aa9","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/screenshots/recording-color-after-dropdown.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","68bc40d8e2d046a7550cd19401f79477d6353f13ac6164457c150f8a63916ad0","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/screenshots/recording-color-before.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e3488d7dc4e9807d1da168da576e81bbc8845b9ddc5cdf3aa820674bc65a1a8c","capture","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/seat-cue-timing.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a24a21c05b742492258cde16c0b9df233a50c24831eeba83faa7eabd5344e27d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/seek-hover-card.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5691d942671b6b3996c1af1f608256ec5b11655e36ee091a9ca84c2b8f038e4f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/SEEKBAR-CHECKPOINT.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","aced6337872288b49dfdc43e9f7193c77bc367ba75dd424c3e7d80d09b8d6d6a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/SEMANTIC-TRANSPORT-AND-DEPLOYMENT.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bb1d2a3a76848b91194f34cad9727ab69a53f0318d103ea489731476404e7a74","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/SFX-AUDIO-DELIVERY.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bd5ef5c3c62cdf6d0a0f065e970ca77cac34c14f1cd9ff00a92c610c7c454a8d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/shared-messaging.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e45aeebc707c294a599b90123049f8fb8e19b62700c586de990e557866e36435","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/shared-picker-refinement.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ea4052a8345ed6d7c0b4910b5539551a56e94d8d6e3cdc1c6852a04d8af27ba1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/shared-pwm-policy.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a32119d5f3aecc5282fbea4a9328113f03455d1a3720d24ba745bfc20e4ca117","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/shared-toast-web-dark.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f8bc6a215f23c0a1fec67eed29feb8832036b93b2c2cbaf01c61d7ca21f8c869","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/shared-toast-web-light.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f6b5564b2e468abb45d9746677087911640138d68b46ce8cac71e6f07fb8cc70","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/square-modal-close.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d20c06dfa2aa19e77c390f1a8fdc6a8b024c64229b8c1b615b6ab8d4a253178c","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/station-timeline-crash.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fd9ef071eb25ac070f6cb89970a90bfacbdf6c3a7186901c4be905eaa84c7b0c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/status-bar-widgets.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bc973a91a1a48a95d58b3247632e568896b4d1dab0060d4e455c7a62f2e5623d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/step-repeat-ghosts.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a95c66916f70b393f8c24e4703d101904c6a450d9fc89625bed37bc39e20c764","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/subtitle-alignment-web.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fc224f216393b975fdd893a1ca2510889e4ae5ca474e9a9a4cb7ae12dfe6b9c3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/subtitle-alignment.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ac44c69f83384608fbf54c66983cd903c44da7011691568d86919123d4d6d79d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/subtitle-hardware-layer-isolation.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fc6de31ca34f71259154252510896be0bfddeb85318e70b67239ff5a0c142867","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/system-theme.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","37197456a27824e3f2f9536f55c7165425393eaa54b51aed45f2d5adf7a07693","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/timeline-compact-clock.jpg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0c32cf6e5b0f909fd688021ae4eb265df9b13a27ea341991ffc6a991ae250896","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/timeline-compact-clock.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ee6da1556cf0b7b04f919beb39ad277807daba931fc38ed9a1ad527b755649d9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/timeline-frozen-ruler.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a5cd6410a51c80e8c134539c5a1ddf050af6883d3bfb53ffd04bd38aa048699e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/timeline-toolbar-drag-feedback.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8c642ff333e6cc081480b8c240f5a15adefc2d21730e14da8cfa8a40c553e881","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/TIMELINE-TOOLBAR-INTERACTIONS.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7d346c6515df59fe8f99ece6647f3179d0a26a674a8bd1cf4fa7fb6fca6c0246","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/timeline-wheel-actions.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ff11e2d874776e22f10d289c14c0facd68a7f0b6e9701714e96fe561aaca1f12","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/timeline-wheel-actions/live-sync.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e8dcbb24cd5505d97da14dd3bc8d7b1201d0835cf84e3dfe2ffe0442d3726ad0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/timeline-wheel-actions/preferences.png","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c95c0b59e1da59468141c1a1710bbb007bcd59139d82723e0f49a50539cb7809","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/typed-controller-errors.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e7221c74cc056f219f95af8e978ae3dc35c41f33269c723e1510a020e4d1b6a7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/verify-appended-recording.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","408c7ec5a6079cbd3d5cb010171d5c3228bc147be680732aefdc52544c9cb8d9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/verify-live-cue.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","90c9544ffc07e710fc2a41020fcdebdc9e0bea8b7e7522e1e9cd88e0d8cdaa50","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/verify-live-cue.test.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f58342624aa46dc24862b2d77ec02a3c71885addf301f1cd0807e1761953f3a5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/verify-pealayer-prepared-cue.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f6d1f6f4c8c5a44a4776a85e82c6b1486d9038e87fbb83bab4323889085b9c87","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/verify-playback-board.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","68629c44a41bb2a4c44ee5810a80fdbc4a75a2fc11b59c6d811a38d476c64c88","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/verify-prepared-timeline.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8a5b5463692a510db3f8393b0ddae08459c557ef0914880991c80113da44ef8d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/video-ghosting.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1453ccb7298bc7569f40bf5888587218bfb4b9abc53e30f5e5d24d1687478efb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/virtual-development.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7c93c72ef93c50f6ebba2bd309404aff6589cca04d4dd927826a5712464f6498","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/web-file-locations.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","649dd0e90f60a6764acdd622fe57c994170b3d70b0e8397ad5f62cb0e6d4c8a8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/verification/windows-tray-board-actions.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","08c386551365512012f60bd2ec10bba4d1ceb0d050d8a8ce6204c777dab5d866","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/WEB-APPLICATION-PARITY.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","09c994223c6ca02b0c8c71be554af966ac55997c0218f33cce99b6cc88f99353","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/WEB-ASSETS-AND-LOADING.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5f2b5979e853df7ed102a44de163037883daeabc89a43c1c127102a0dce570f1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/WEB-RESPONSIVE-LAYOUT.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e589ec4ef7204c409371c577cd2eda576bf2247757786b6a5308df00c940ff6a","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/WINDOWS-SHELL-RECOVERY.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","57fbd904e18d8f0036dd67e2c866d357ab282075689a1cbf6b38a64270875492","tray-tooltip | windows-desktop | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/platform/windows_tray.rs:14 [UTF8-LF sha256=94bd79acba0dd4d572222cb064e451a274ee38579a392c95c56d997779cc35bf; anchor=Shell acceptance, not object presence] | desktop/src/ui/shell.rs:1332 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=value[""tray_shell""]] | tools/replace-desktop.ps1:42 [UTF8-LF sha256=95a7f84383869622426e97d7c21d579ce93fd5c55d2bd4607697b6b352bbe525; anchor=function OwnerStatus] | tools/observe-desktop.ps1:28 [UTF8-LF sha256=c2adb041290e63d2190c6e807c095b9a79bf3c201d46f5ffc085636c1d4daf5e; anchor=function OwnerStatus]","Full donor document read through EOF. Apply its concrete distinction between working IPC/service and actual shell/GUI readiness: expose tray Shell acceptance separately, retain failures and recover only after accepted synchronization, verify open drafts before graceful replacement and keep actual runtime proof separate. | Actual already-owned ASUS replacement/capture helpers were reread and their PID/path/hash/session/no-draft/graceful-exit/atomic-rollback checks adapted into reusable explicit-parameter replacement and600s USB/Wi-Fi observation tools. Both preserve settings and reject unknown owners; observation captures actual message-hub and Windows Shell counters, buffers samples in RAM and writes bounded progress only on changes. This imports recovery boundaries, not all donor shell features.","Timeline navigation/follow/playhead/ruler/toolbar-order repairs and host-specific libmpv/Cafe deployment [not-applicable] | Full shared shell-action JSONL launch/forward/GUI/helper evidence and Jump List helper-readiness acceptance [pending] | Upload progress broken-pipe panic regression and disconnected-writer acceptance [pending]","Timeline navigation/follow/playhead/ruler/toolbar-order repairs and host-specific libmpv/Cafe deployment: Explicitly excluded timeline/mpv/media-seat domain and unrelated host identities. Generic no-nested-egui-lock principle, owned preferences and graceful replacement remain relevant. | Full shared shell-action JSONL launch/forward/GUI/helper evidence and Jump List helper-readiness acceptance: Pakar already has typed IPC and native dialogs but does not contain this complete per-action stage receipt or full actual Explorer dispatch matrix. New tooltip acceptance diagnostics do not substitute for it. | Upload progress broken-pipe panic regression and disconnected-writer acceptance: Actual Pakar CLI best-effort output has a separate implementation; this document read does not compare donor CLI writer sources/tests or certify all upload-output paths.","tests/windows_tray_test.mjs:37 [UTF8-LF sha256=541da356a3c3e376e2eacfa10dbaf068925074ca5c77a005ccf71121eb5639cb; anchor=Actual GUID-bound tooltip]","","Import/test applicable shell-action stage diagnostics and output writer contracts from actual donor implementation, then verify user-visible native actions. Do not mark complete from this focused tooltip recovery.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","docs/WINDOWS-TASKBAR-PREVIEW.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e4426f937576281ac63c0ce0c3583af3c5f69951af78fc9c3887fa20e6ceb8a9","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","examples/square-close-preview.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","198b9cd2f36ff48003afdbf1d3f8bd647ba4df8761aef9f8c30b5fdfcf1de7a3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","interfaces/controller-wire/consumer.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","51ca4aaa9cb8f1ba74cabc001be34c8ec82a90d14a27e6b4ed793d72c7660484","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","interfaces/controller-wire/ProtocolContract.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b72621de05550b724eeb312276b9cff8a86003e4acec3fcee860418f60944eb9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","interfaces/controller-wire/published.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","eb66e7453bdf246bf03a6ea6bd90ab340b9f7716941119d33a7f828225e6010c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","interfaces/controller-wire/registry.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4c9b408145ce8db277fd312262b77106129c931398f50b66ff18cea14f9d7694","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","interfaces/controller-wire/source-lock.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0ca4b1890c75ddf7ecc33d269b0b53cb4a65bdb7cb4251b95b03ea19489de1d2","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","LICENSE","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f52fdc03b3a61af55f5b7a8480a1d92fe46f0a59f2f2193d0155a6b65bce0c2e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","output/pdf/pealayer-pccontroller-effects-guide.pdf","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8e5cfe6a9b476580fd7946d5fb06d0a07df2e9768d5547b23981159db2019366","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","README.md","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4e78a6c486bfc7d78adc6d34552bddfd67c89997edb8d2bae0b46e70c705dcb6","repository-governance","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","scoped-improvement","complete","README.md:7 [UTF8-LF sha256=6ef2bde812ca8aaf889f5ad1c8313ae6e4e5ac079b93424ef4be6e2cdd007da5; anchor=Connected boards. One contextual control workspace.] | tools/generate-readme-artwork.mjs:1 [UTF8-LF sha256=2162d1ad3760618260eb9d659dfebb6651ad1e5f5b4eb2c37c12cde1ef7ff8d2; anchor=README uses the same bytes]","Pealayer's actual centered logo/title/tagline, badge row, visual preview, section navigation, architecture, build, docs, contribution and license structure adapted to Pakar.","Media engine, NLE cue/timeline walkthroughs, playback APIs/shortcuts and libmpv installation sections [not-applicable] | Donor platform and latest-release badges, cinema-grade completion language and media screenshots [replaced]","Media engine, NLE cue/timeline walkthroughs, playback APIs/shortcuts and libmpv installation sections: These describe Pealayer media business/runtime rather than Pakar board control. README links actual controller APIs, wiring and release/acceptance instead; no mpv is linked. | Donor platform and latest-release badges, cinema-grade completion language and media screenshots: Unsupported OS/release claims and unrelated images would misrepresent this repo. Use the shared application logo and real embedded Web screenshot labeled simulated, explicit PR/source and physical acceptance boundaries.","tests/repository_governance_test.mjs:105 [UTF8-LF sha256=2c8393bbd1463ce367cff24d72110a96e53e664824d780f2e66a2c8f8930bda1; anchor=console.log('Repository governance]","Canonical cross-interface icon bytes and explicit proof/acceptance boundaries prevent a polished landing page from claiming an unaccepted release.","","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/backup-peer-acceptance.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8293c12a759031662ba8fe9b66994a163daeb268f865bd8ce32bab665877e425","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/build-metadata.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fe18f35543ea96f30c713bc170286aeb73883ff7af62c866d2fa3cc56e9aec14","build-storage","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/capture-visible-window-windows.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","94bc5aed91407818905412d50dde72ea669f3c799ef56a043dd0a81befdce47f","capture | windows-desktop | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/8","scoped-improvement","complete","tools/capture-window-windows.ps1:75 [UTF8-LF sha256=c9f48604a224599ea0252638558e80f4025beb4b53834112af9e48af03ae73d0; anchor=public static extern bool PrintWindow]","Actual donor PrintWindow P/Invoke, minimized/window-bounds validation, DPI awareness, System.Drawing PNG lifecycle and read-only behavior.","Get-Process -Name foreground filter [replaced] | RenderOccludedWindow branching and unconditional Bitmap.Save [replaced]","Get-Process -Name foreground filter: Explicit expected PID and window-owner revalidation remove ambiguity between production and fixtures; screen fallback checks foreground ownership without changing focus. | RenderOccludedWindow branching and unconditional Bitmap.Save: Capability-gated egui framebuffer is tried first, then PrintWindow/BitBlt and verified foreground pixels. Blank images and overwrites are rejected.","tests/screenshot_harness_test.mjs:9 [UTF8-LF sha256=2a89ec8cd3795838be9e5593a48ded5f249f4479165483d7310e2da06fcdf0a5; anchor=for(const forbidden]","PID-bound, no-overwrite capture with an app-owned framebuffer and automatic read-only Win32 fallback; runtime evidence is separate from source guards.","","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/check-build-policy.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7f24cfe914b4b501834cccbd70c6e0c61eb38b9a4a6f6fe880480813abeebf2c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/check-crate-boundary.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","da9b469ac596e6eb1999e4d499742a51ebf289335285549569116c1124963e38","build-storage","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","scoped-improvement","complete","tools/check-crate-boundary.mjs:10 [UTF8-LF sha256=4a8fbcecaf424460c051de61d5e44658532ec64527460ce21d4d86ec95c0550e; anchor=export function checkCrateBoundary]","Actual donor module extraction/intersection, thin executable and MSVC duplicate resource linkage guards imported/adapted. Native build wrapper and CI execute this read-only guard before compiling.","pealayer::startup::run and main.rs/lib.rs module intersection assertions [replaced] | MSVC winres library/bin duplicate resource.lib guard [replaced]","pealayer::startup::run and main.rs/lib.rs module intersection assertions: Pakar has one binary today. The adapted tool detects optional lib.rs and then enforces zero executable modules, module ownership and delegation to Pakar's library namespace. Today's single binary additionally rejects duplicate declarations without requiring a nonexistent Pealayer startup symbol. | MSVC winres library/bin duplicate resource.lib guard: Both original resource.lib patterns are retained and run for today's binary as well as a future shared-library layout. No need to defer these guards until the architecture changes.","tests/crate_boundary_test.mjs:4 [UTF8-LF sha256=ebf1cbc5410a3f67a7b704d17415801e68daeba961253f8b60a183fdb5fec17f; anchor=const single =]","Executes useful donor guards immediately on the current single-binary layout, rejects duplicate declarations, and automatically activates library ownership/thin-entry checks when a library appears. No compiler or generated fixture writes.","","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/configure-windows-host.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8c62e976f9fbcf5a7e874f8190ac9bcfaf654e4f88e6c4c08a7cd468fa3401a1","preferences | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/download-fixture-server.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8350a1c7354ed092411d4cc3057f8d01ee408449adae1366f83250503bf8d091","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/libmpv-windows.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ab6e48f3e0a55a2d86ad1dbb19c01a23c751891cb5a7ed61875a21b1e52645e5","build-storage | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/9","parity-gap","complete","tools/windows-build-host.ps1:16 [UTF8-LF sha256=7da123594866f591b490db084496b4bef75b2db3f6e0ac5b425b8d86e9401e9b; anchor=function Get-PakarCargoTargetDirectory] | tools/windows-build-host.ps1:46 [UTF8-LF sha256=7da123594866f591b490db084496b4bef75b2db3f6e0ac5b425b8d86e9401e9b; anchor=function Test-PakarFileContentEqual]","Actual Get-PealayerWindowsHostPaths, Get-PealayerCargoTargetDirectory and Get-PealayerFileIdentity adapted to Pakar names/locations. Environment expansion and relative overrides retained; native build and staging now call these helpers. | New actual Test-PealayerFileContentEqual imported as Test-PakarFileContentEqual and called by staging: missing files fail, size mismatch skips hashing, equal lengths require SHA-256 equality.","Resolve-PealayerLibmpv, Copy-PealayerLibmpvRuntime and Set-PealayerLibmpvBuildEnvironment [not-applicable] | Save-PealayerWindowsHostProfile generic host provenance and generated Cargo-config ownership protection [pending] | Program-root shared target default across separate source worktrees [pending] | New Get-PealayerCargoTargetDirectory rejection of all source-checkout cache paths [pending] | Copy-PealayerFileLowWrite delete-destination-first copy and PreferHardLink [replaced]","Resolve-PealayerLibmpv, Copy-PealayerLibmpvRuntime and Set-PealayerLibmpvBuildEnvironment: Pakar is explicitly mpv-free; importing DLL aliases, GNU/MSVC mpv imports, LIBMPV_DIR and native linker flags would restore an excluded media dependency. | Save-PealayerWindowsHostProfile generic host provenance and generated Cargo-config ownership protection: Saved host/compiler/cache provenance and refusal to overwrite user-managed configuration remain useful. Pakar currently resolves its established cache/explicit override but does not persist this generic host profile. | Program-root shared target default across separate source worktrees: Pakar keeps its existing single canonical desktop/target cache without moving or duplicating it. A future managed-worktree build needs a shared Pakar-owned cache; copying Pealayer's owner path would corrupt ownership. | New Get-PealayerCargoTargetDirectory rejection of all source-checkout cache paths: Pakar's existing sole desktop/target is inside the checkout. Applying this rejection now would strand the warm cache or force a duplicate cold build. An owned same-volume relocation and wrapper/config migration are required first; the oversized-cache guard remains active and blocked cleanup is not bypassed. | Copy-PealayerFileLowWrite delete-destination-first copy and PreferHardLink: Pakar retains its checksum-verified pending-copy then rename. The prior candidate is preserved until verification; a mutable executable is not hardlinked to compiler output. mpv immutable-runtime aliases are explicitly excluded, not a reason to omit generic content comparison.","tests/reuse_preflight_test.ps1:83 [UTF8-LF sha256=842c7d0149c2717f7378116063712f4b719941152d89bd43cdc31e60b148437d; anchor=Actual donor relative cache resolution] | tests/storage_hygiene_test.ps1:19 [UTF8-LF sha256=e465eb90d9957a10586110273f35a6c7ce8107c679f3dfbd7ab10d68aa798899; anchor=Actual imported equal-content helper]","","Adapt generic saved host provenance/config ownership checks without mpv, and keep one owned cache if worktrees are later authorized.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/new-icon-pack.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6a2dbf067e1236b91174f380cf7663b407cd321419600fb25efa77509b0ec6fa","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/package-probe-windows.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f4516884990ad76c020fbc6534d902c4949abae0b48da8ea40c008afa44dfd4f","build-storage | windows-desktop | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/9","equivalent-file","complete","tools/package-probe-windows.ps1:27 [UTF8-LF sha256=71604ab464776891dbc95db7123218c22b3ede09ce2835fe4659d75c6d0b9d5e; anchor=function Invoke-PackageProbe] | tools/replace-desktop.ps1:71 [UTF8-LF sha256=95a7f84383869622426e97d7c21d579ce93fd5c55d2bd4607697b6b352bbe525; anchor=$reply=Invoke-PackageProbe]","Byte-identical actual donor process-handle probe: no-shell hidden process, async redirected stdout, 30-second wait, explicit exit code, output return and Dispose. Optional staging probe calls this helper. | Desktop replacement now also calls the retained process probe for before/after owner status and its one graceful quit. Actual ASUS inspection showed direct GUI-subsystem invocation could report false IPC failure; the retained probe read the same ready owner successfully. Live replacement preserved settings/rollback and recovered USB/80-cell mapping on the same ESP boot.","","","tests/reuse_preflight_test.ps1:87 [UTF8-LF sha256=842c7d0149c2717f7378116063712f4b719941152d89bd43cdc31e60b148437d; anchor=Actual imported short-lived process stdout]","","Donor timeout throws without terminating its child. Full GUI/runtime package smoke remains separate from CLI identity.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/package-windows.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5651709cfb58c2f1e0d7052b3ca604df154563ce552498a066c6e67b8f9baedf","build-storage | windows-desktop | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/9","parity-gap","complete","tools/windows-build-host.ps1:62 [UTF8-LF sha256=7da123594866f591b490db084496b4bef75b2db3f6e0ac5b425b8d86e9401e9b; anchor=function Assert-PakarPackageSourceStable] | tools/stage-desktop.ps1:38 [UTF8-LF sha256=1bbfe87fe8c9e6936e140c7911c5493f5937eceac1402ca386661dcabb40c4bd; anchor=Invoke-PackageProbe]","Fully reread all 302 current donor lines through EOF and actual Pakar windows-build-host/stage-desktop helpers. Actual Assert-PackageSourceStable remains adapted without Web exclusions; optional ExpectedCommit checks run before/after build/stage. Imported bounded Process probe and file-identity helper are used by staging; identical hashes skip payload copies.","SkipTests selecting npm build:bundle rather than build, web_regression_tests skipped versus web_bundle_integrity verified manifest fields [pending] | libmpv runtime/import-library packaging and pealayer-downloader media companion [not-applicable] | Restore-PackageWebDistribution git restore and recursive generated-Web cleanup [replaced] | Branding, Persian font/Web bundle packaging, Win32 resource and quick-action icon verification, UPX validation [pending] | Embedded --build-info/--smoke-test checks, GITHUB_SHA invalidation and host-manifest artifact/provenance/validation schema [pending] | New Copy-PealayerFileLowWrite calls for executable/downloader/font and runtime aliases [replaced] | Timestamp package metadata and native optional Run [pending]","SkipTests selecting npm build:bundle rather than build, web_regression_tests skipped versus web_bundle_integrity verified manifest fields: The current donor explicitly separates bundle integrity from omitted regression suites. Pakar staging does not run npm or build an external Web bundle; a complete package/manifest pipeline is still pending. Firmware source/embedded Web checks are not reported as those package operations. | libmpv runtime/import-library packaging and pealayer-downloader media companion: The user explicitly requested an mpv-free controller, not the donor media player/downloader. Board remote firmware contracts remain required separately. | Restore-PackageWebDistribution git restore and recursive generated-Web cleanup: Pakar staging does not generate or mutate a tracked Web distribution. Blind donor restoration could overwrite user work and is not copied. | Branding, Persian font/Web bundle packaging, Win32 resource and quick-action icon verification, UPX validation: These are useful generic package capabilities. Existing app source contains icons/font but current staging does not validate/package all donor facilities. | Embedded --build-info/--smoke-test checks, GITHUB_SHA invalidation and host-manifest artifact/provenance/validation schema: Current app lacks equivalent embedded source identity and full runtime smoke. Optional Git source-stability and CLI-help checks are narrower and cannot certify the old executable's source commit. | New Copy-PealayerFileLowWrite calls for executable/downloader/font and runtime aliases: Staging now calls the actual imported content-equality helper, skips identical candidates, and keeps verified pending-copy/rename rather than deleting the prior candidate first. No excluded mpv/downloader payload is created. Useful branding/font/Web packaging remains separately pending. | Timestamp package metadata and native optional Run: User excludes dated/random project/package names, not necessarily diagnostic time fields. Preserve useful manifest provenance and bounded explicit launching in a future adapted package pipeline.","","","Import full mpv-free package manifest, embedded identity, resource/icon/font/Web validation and appropriate generic runner; do not call staging a full package release.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/patch-windows-icon.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2113741c449d8448d52e478b03993ccd3f96a2ebbd0a8c08d15c1333a273d89b","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/piper-narrate.py","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4d486543a60bed28e9427ba349e9b1c4db4dcfb79bd81488a7c4abc221d03881","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/prepare-host-candidate.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b40ccb3aa61810220f4cd904ab0a6236d819cdfc262925a2a01e33f2c9c4e102","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/run-ci-rust-tests.sh","10fc6604a9d6068eb57da2f00d7d9404238f00c8","aaf963ab73a4498a6feaab164f2304de95b953edd3988bc55094a9f147ae8ac7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/run-windows.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","013e5c67e227ed851f8a3d26b27654e38c8816edca2965381bbb1b48d10a750d","build-storage | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/9","parity-gap","complete","tools/build-desktop.ps1:35 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Get-PakarCargoTargetDirectory]","Shared resolver call and locked native build flow mapped to Pakar wrapper. Existing canonical cache is reused; explicit Check/Test/Release and storage/reuse gates avoid unnecessary links.","RustBin machine/user/toolchain executable fallback selection and rustc -vV host detection [pending] | libmpv host resolution/environment/profile and DLL copy [not-applicable] | BuildOnly versus launch forwarding with ApplicationArguments [pending] | Set-Location to repository root [replaced]","RustBin machine/user/toolchain executable fallback selection and rustc -vV host detection: Pakar currently uses installed Cargo from PATH. Alternate host/toolchain executable fallback and recorded host triple are reusable infrastructure and remain unported. | libmpv host resolution/environment/profile and DLL copy: These operations configure the excluded mpv renderer. Pakar uses its own mpv-free linked dependencies. | BuildOnly versus launch forwarding with ApplicationArguments: Pakar wrapper builds only. Generic built-executable validation and configurable run forwarding should become a Pakar runner; manual launching is not equivalent. | Set-Location to repository root: Absolute manifest and resolved target paths preserve caller cwd without introducing a second cache.","tests/build_storage_test.ps1:15 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=One canonical target]","","Import generic Windows runner/toolchain fallback and host-triple provenance without mpv.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/sim_bridge.sh","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a8f3171da6de3b84a6e8d5e6b7ea160351c15b4bc77a9e000b23c29a2b9bc3f1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/storage-hygiene.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0d8fdeb3e15fb52b917784d4cb3875c68bc12c6c6ed78cd16f2ff8ee3561d89c","build-storage","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","parity-gap","complete","tools/storage-hygiene.ps1:11 [UTF8-LF sha256=3d1091c2761add106a5104f671bf12793c9621803f38bd898b193f597eabb329; anchor=function Get-DirectorySummary] | tools/build-mobile.ps1:87 [UTF8-LF sha256=0c5eee09b25ad17fc062555da65024fc84a9d8cc7c4a057d6d2e8a53d2ed8fb4; anchor=$taskCache=Get-DirectorySummary]","Actual Get-DirectorySummary imported into tools/storage-hygiene.ps1 with Pakar canonical cache, board cache, mobile build and stable staging paths. Read-only by default and warns at the existing 8 GiB budget; logical sizes explicitly distinguished from disk allocation or wear. | build-mobile.ps1 now calls the actual imported summary for its sole mobile/build cache and verifies free space before compilation. Existing SDK path comes from mobile README; no auto-install, dependency upgrade, cache relocation or clean.","PruneRepositoryTarget exact-child/git-ignore/allowed-child/running-process checks and recursive deletion [replaced] | Pealayer target/shared-cache/staging paths and 48 GiB warning [replaced] | Silently ignored recursive read errors and empty Measure-Object Sum [replaced]","PruneRepositoryTarget exact-child/git-ignore/allowed-child/running-process checks and recursive deletion: New explicit user authorization permits obsolete debug-only deletion. Adapt the actual donor exact-child, ignore, allowed-content, reparse and writer checks to the owned desktop/target/debug; add tracked-file refusal and Plan. Never remove the target root, release cache, settings or rollback. The verified 10.408 GiB debug tree was pruned; stronger guards keep the read-only default intact. | Pealayer target/shared-cache/staging paths and 48 GiB warning: Pakar uses its actual existing sole cache, Arduino and Flutter products and stable outputs staging, with the established 8 GiB warning. Importing another project's directories would misstate ownership. | Silently ignored recursive read errors and empty Measure-Object Sum: Unmeasured paths must fail visibly rather than understate storage. Empty directories use zero bytes instead of a missing StrictMode Sum property.","tests/storage_hygiene_test.ps1:10 [UTF8-LF sha256=e465eb90d9957a10586110273f35a6c7ce8107c679f3dfbd7ab10d68aa798899; anchor=Actual imported recursive summary] | tests/storage_hygiene_test.ps1:32 [UTF8-LF sha256=e465eb90d9957a10586110273f35a6c7ce8107c679f3dfbd7ab10d68aa798899; anchor=Default inventory stays read-only] | tests/reuse_preflight_test.ps1:97 [UTF8-LF sha256=842c7d0149c2717f7378116063712f4b719941152d89bd43cdc31e60b148437d; anchor=Mobile plan retains reviewed gates]","","Debug-only cleanup is now authorized and implemented. Canonical nonduplicating RAM-disk/cache relocation, the newer donor Cargo-metadata/cache-tag proof for shared-cache migration, full fixture safety matrix and exact allocated-vs-logical accounting remain pending; no RAM disk has been allocated. Donor storage/CI files were reread while dirty concurrent peer work, not misrepresented as a new clean donor commit.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/test-storage-hygiene.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cbf747472685bc0ddb921444ec3399f1734aa6f105ae15fe68fff760c1e023fe","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/update-screenshots-linux.sh","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7bd3372fc15e0486425ba4f80b1d299b4c5946116ed0e5fbdddf9533c6386d0e","capture | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/update-screenshots-windows.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","48507f6e9395c8c312c5557db729d05ed8d6a83e980d57a9b01e77ea525db287","capture | windows-desktop | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/8","parity-gap","complete","tools/capture-window-windows.ps1:75 [UTF8-LF sha256=c9f48604a224599ea0252638558e80f4025beb4b53834112af9e48af03ae73d0; anchor=public static extern bool PrintWindow]","Actual PrintWindow(PW_RENDERFULLCONTENT), near-uniform-black sampler, GetWindowDC/BitBlt/screen fallback and PID/dimension validation imported. Pakar fixture supplies isolated profile/selected surfaces; app-owned framebuffer capture does not depend on WGC.","SetForegroundWindow, BringWindowToTop, SetWindowPos, ShowWindow, SetCursorPos, mouse_event, SendMouseWheel/Click/RightClick [replaced] | DwmGetWindowAttribute extended bounds and logical/client coordinate transformations [replaced] | Locale/Theme arrays, PreferencesTab/Icon, AppName/Branding, WorkspaceDockLayout and per-surface matrix manifest [pending] | temporary GUID profile cleanup, process CloseMainWindow/Kill and generated_at_utc [replaced] | native resize/scroll/client-coordinate scenario parameters [pending]","SetForegroundWindow, BringWindowToTop, SetWindowPos, ShowWindow, SetCursorPos, mouse_event, SendMouseWheel/Click/RightClick: Capture remains read-only and must not steal focus, resize or inject desktop input. Startup CLI sets the application's own surface; native gestures belong to the supported computer-use APIs. | DwmGetWindowAttribute extended bounds and logical/client coordinate transformations: Per-monitor-v2 physical GetWindowRect is kept consistent with full window-DC capture, avoiding a mismatched crop origin. Internal framebuffer needs no desktop coordinates. | Locale/Theme arrays, PreferencesTab/Icon, AppName/Branding, WorkspaceDockLayout and per-surface matrix manifest: Config-driven Pakar CLI surfaces/isolated profiles exist, but the full multi-locale/theme/icon/width matrix and hashed per-capture manifest runner remain useful unported harness work. | temporary GUID profile cleanup, process CloseMainWindow/Kill and generated_at_utc: Stable named evidence/profiles are retained for debugging rather than deleted. Only verified fixture processes are stopped; production replacement uses graceful typed IPC and avoids timestamp/suffix deliverables. | native resize/scroll/client-coordinate scenario parameters: Model/painter tests and selected-surface captures do not replace the full interactive narrow/wide scenario matrix. Native live gesture acceptance remains separate.","tests/screenshot_harness_test.mjs:9 [UTF8-LF sha256=2a89ec8cd3795838be9e5593a48ded5f249f4479165483d7310e2da06fcdf0a5; anchor=for(const forbidden]","","Complete generic locale/theme/icon/width capture matrix and manifest receipts; verify native interaction scenarios.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/verify-copied-link-api.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6ede1926e5353d3fd0e304706c5eaa1efe968efd9da586255b6495c7c1d53816","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/verify-download-api.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a4b4edd670d1a37818c180850f653dad14b297d12acce7bfc13622ea1b001368","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/verify-messaging.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","708fdeedda97d1a314dcadcad6a8c60fe65773bb25bc47d8af9d710ce8b52b42","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/verify-remote-folders.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","320cec5927ee203f58f3efa617778bdadc372ec524a736c79a3f30ef01ebec1d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","scripts/verify-windows-quick-action-icons.ps1","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f068ca5b27effc256085c7a095a7538fab532884b6a908e0f585b868f32eefd2","ui-shell | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/app.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","41e50c2188ef281b5afcce8a6c5ff46b5bb478ab4ecb65d0d62a4aee0bcadbfe","native-lifecycle","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/application_shortcuts.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1f173bef8acc2904eac5b0a91407aa4f7629ce65c88ea3a8ac78f8c13321d203","preferences | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/application_shortcuts.rs:13 [UTF8-LF sha256=a970f63b589923be7a11260ad192a921e79b0fd33b7faeb631c6ab99d94750c1; anchor=pub struct ApplicationShortcuts] | desktop/src/config.rs:186 [UTF8-LF sha256=b84801a85e31a44b2691bd5f6ccefea0106d799952b0fb61e2d6162ee11b9414; anchor=pub application_shortcuts:] | desktop/src/ui/preferences.rs:466 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=Keyboard shortcuts] | desktop/src/ui/shell.rs:1380 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=crate::application_shortcuts::take_action]","Imported the donor's reusable persisted shortcut model for six controller actions: fullscreen, refresh, Preferences, device settings, connect and cell mapping. Parsing uses physical key codes, exact modifiers, initial key presses only, validation rejects duplicates/invalid values, and text editing protects bare printable keys. | Menu accelerator labels and event dispatch read the same saved configuration. Empty bindings disable an action; one matched event is consumed once. Controller actions replace the donor's media-only operations without inventing playback behavior.","take_frame_step_shortcut and frame-step tests [not-applicable] | containing_media_folder and local-media path tests [not-applicable] | media_information and media_folder accelerators [pending]","take_frame_step_shortcut and frame-step tests: These consume Ctrl+Left/Right for media frame stepping and timeline transport. Those business domains were explicitly removed; Pakar must not hijack ordinary text word navigation for nonexistent video frames. | containing_media_folder and local-media path tests: This resolves media files/streams, not board identities or firmware files. Firmware selection already uses explicit native file dialogs; introducing a nonexistent media folder action would be misleading. | media_information and media_folder accelerators: The media operations cannot be retained as-is, but their reusable information/folder-navigation affordances need explicit hardware-monitor and application-folder action decisions. They are not silently treated as completed controller mappings.","tests/native_menu_test.mjs:19 [UTF8-LF sha256=8d7540f4c8abd4a39414d18cd3bedc70bbb8ab05af4077c206a4ce11beea6a01; anchor=.shortcut_text(&shortcuts.]","","Installed native focus/rebinding/menu visual acceptance remains open. Global/hardware shortcut ownership is a separate capability and is not claimed by this application-focused import.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/audio_effects.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","71e90666ead85dbdefcbbd048d647ba36a943e643f8f17856f343fbe7a26ede0","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/authoring.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3bb56003f6d515c9e067ec71af15aace93945aea6c3669307be5a30ab1c6bb59","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/branding.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ee6ef94e685a86e72258e4609692a9fefa516d5935d75d15a5abe0ee42ada3c1","application-identity | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","desktop/src/branding.rs:75 [UTF8-LF sha256=13a85d887a09acb79aed6acb7b8c0e38f9ea1ba2e35e9306c8bf7558211bc211; anchor=pub fn icon_data_from_bytes] | desktop/src/brand_image.rs:25 [UTF8-LF sha256=ab71607dcde16d7af14b0a292982f902186dacf6b5b78b3f4c983e37464428e9; anchor=pub fn native_icon_bytes] | docs/BRANDING-PARITY.md:60 [UTF8-LF sha256=0bfa8122dc9d6034551304f2fed472ddebcff170e14a23f63011177aab75d2d3; anchor=## Explicit unfinished useful code and reasons] | desktop/src/branding.rs:9 [UTF8-LF sha256=13a85d887a09acb79aed6acb7b8c0e38f9ea1ba2e35e9306c8bf7558211bc211; anchor=pub fn sync_peer] | mobile/lib/main.dart:1670 [UTF8-LF sha256=814e5944b0f27d21f2005ff4bfa8e391dc5721435e25f9c40ccf2c934090a7db; anchor=peer.application?.icon ?? bundledApplicationArtwork] | mobile/lib/application_artwork.dart:2 [UTF8-LF sha256=a1ee8fc15b0aa9111a5c416fcf74b3d05093b22e47b76d7744837f175f7b5ef4; anchor=const applicationArtworkBase64]","Actual icon_data_from_bytes imported unchanged; one embedded PNG supplies native/Web artwork without disk caches. | Actual native_icon_bytes seven-frame ICO encoding/master preservation/Lanczos3 resampling and shell derivative test adapted to shared supplied bytes and PNG-only decoder. | Actual sync_native_window_icon source-signature cache, multi-viewport icon publication and tray refresh lifecycle adapted to fresh selected-peer Application metadata; no per-frame decode or disk cache. | Flutter now shares the exact embedded native/Web PNG fallback instead of a different Phosphor glyph, with bounded peer-application title and inline PNG overrides and default-artwork decode fallback. Android launcher equivalent and runtime icon preferences remain pending. | Current 447-line donor and actual Pakar branding/ICO conversion were reread completely. Shared image decoding, seven-frame ICO master preservation and source-signature/multi-viewport mechanisms survive; current native window and artwork preferences still have explicit gaps.","resolved_icon_path/state_env/non_empty_path, builtin presets, icon_bytes precedence/fallback and override/preset tests [pending] | sync_native_window_icon, icon_source_signature/revision metadata/multi-viewport/tray sync and tests [replaced] | PlaybackIconState/from_player/playback_state_is_unambiguous [not-applicable] | Current apply_native_window_icon shared Preferences/main HWND path, native window_icons::apply fallback, (state,revision,HWND) sync stamp and file-metadata change detection [pending]","resolved_icon_path/state_env/non_empty_path, builtin presets, icon_bytes precedence/fallback and override/preset tests: Useful runtime preferences need a bounded shared board/client transport; local filesystem media-state paths cannot be copied blindly to ESP. | sync_native_window_icon, icon_source_signature/revision metadata/multi-viewport/tray sync and tests: sync_peer now adapts the cache/multi-viewport lifecycle to peer Application metadata, shared header/About and tray artwork/Show label. Native runtime acceptance is still blocked by the cache guard; full icon preferences/tests remain open. | PlaybackIconState/from_player/playback_state_is_unambiguous: Video state business expressly removed; hardware state icons require a separate validated state contract. | Current apply_native_window_icon shared Preferences/main HWND path, native window_icons::apply fallback, (state,revision,HWND) sync stamp and file-metadata change detection: Pakar currently caches selected peer Application metadata and emits viewport icon commands; it does not implement donor native HWND registration/replacement lifecycle, file override metadata or preset precedence. Preserve bounded inline peer artwork and import applicable native lifecycle only after Windows tests; playback business remains excluded separately.","tests/branding_test.mjs:12 [UTF8-LF sha256=c39528379a8b6e97561e0e0deb5e435a182f75bce2b385780c7b9ee853455fbb; anchor=actual Pealayer icon_data_from_bytes import] | tests/web_identity_test.mjs:40 [UTF8-LF sha256=c4824a7923009f8698e0cde21c1d693609d1af98f55c47dbc20a140293a576be; anchor=Actual Web application identity]","","Complete named generic omissions with preference/endpoint/runtime tests; source checks are not deployed acceptance. See BRANDING-PARITY.md.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/cli.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","412b553fcdcd4436075af6bc93c956a4b7d9ac93a552a3458f2afabb8aa1448f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/cli_output.rs:28 [UTF8-LF sha256=135bdb2862fb8e1946164e685059aadbb12e19db096056224a16632e8333bc89; anchor=pub fn parse_cli_output(]","Actual format_help_message and PrintHelp/PrintVersion flag branches adapted with native short/long help/version assertions; terminate before config, network, GUI ownership and windows. Share device command help with existing TUI instead of duplicate stale strings.","Media target/chapter/playlist/seek/rate/player associations [not-applicable] | Embedded build identity, scoped peer/instance routing, unified remote request fallback, automatic verified host deployment/update status, headless Web-only backend and complete shortcut/command parser tests [pending]","Media target/chapter/playlist/seek/rate/player associations: User explicitly requires an mpv-free controller; media/timeline/cue business must not replace board control. | Embedded build identity, scoped peer/instance routing, unified remote request fallback, automatic verified host deployment/update status, headless Web-only backend and complete shortcut/command parser tests: These generic contracts are useful but not completed by static help output. Current Pakar typed GUI IPC and board command routes do not prove full donor CLI parity.","desktop/src/cli_output.rs:40 [UTF8-LF sha256=135bdb2862fb8e1946164e685059aadbb12e19db096056224a16632e8333bc89; anchor=fn actual_donor_short_and_long_help_version_flags()]","Top-level flags do not consume matching tokens inside device command payloads; board commands retain their own parsing. CLI endpoint/user default to saved GUI preferences rather than a conflicting hostname.","Complete generic CLI parser/validation, command/IPC parity, embedded build identity and verified app-update contracts; media-only switches are explicitly excluded. Validate actual packaged help/version exit without creating windows and preserve Preferences/rollback when replacing the app.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/config.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a318f05844f617ba908aa08c79c35ff91b5d73fdd833c6f5d06c47ea30b17f8e","localization | application-identity | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/10","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/diagnostics.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","92b065a4d8ff01ae3b4a81fa11fb6e5b671f85bb1f667be6af389e692fef9f71","windows-startup","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/cli_console.rs:26 [UTF8-LF sha256=bdf70294c5d4a40007baaf637a8ee26a8576f6dfd03604274fdd9a7d3de2a4ac; anchor=fn write_output(] | desktop/src/main.rs:5817 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=cli_println!(""{reply}"")] | desktop/src/terminal_ui.rs:994 [UTF8-LF sha256=762c7ee8137a21fdbd83a40bb776238a6f75b943da35d01073bbff6b2dd64379; anchor=cli_eprintln!(]","Lamp-background checkpoint scoped rereview of actual cli_output/write_cli_line and complete Pakar cli_console.rs. New explicit CLI option retains inherited pipe handles and fallible non-panicking output; GUI launches never attach or allocate a terminal. Inspected consumer hashes are rebound without claiming unrelated diagnostic/reporting parity. | Read complete152-line6485-byte donor through EOF. Actual cli_println/cli_eprintln, cli_output, write_cli_line and disconnected_cli_output_returns_an_error_without_panicking are adapted into cli_console. All primary native stdout/stderr call sites use fallible writes, including IPC, help/version, shell errors, management and TUI startup. Partial print support retains the existing table text interface without adding newline artifacts.","record_shell_action / append_shell_event bounded diagnostic journal [pending] | panic_report_path / write_report / install_panic_reporter and bounded UTF8 panic-report test [pending] | peer-active thumbnail-cache path selection [replaced]","record_shell_action / append_shell_event bounded diagnostic journal: Useful shell action provenance is separate from console output. Integrate a bounded privacy-safe journal with current app-management ownership before certifying the entire donor; do not log command payloads, credentials or media URLs. | panic_report_path / write_report / install_panic_reporter and bounded UTF8 panic-report test: Pakar incident deduplication is not a crash reporter. Adapt safe profile resolution, process/thread/build identity and bounded latest-report retention separately; do not claim generic runtime diagnostics restored by a console fix. | peer-active thumbnail-cache path selection: No mpv or media-thumbnail cache exists in this controller. Future crash/shell journals must use the Pakar profile diagnostic directory and selected process identity, never a donor media cache.","desktop/src/cli_console.rs:141 [UTF8-LF sha256=bdf70294c5d4a40007baaf637a8ee26a8576f6dfd03604274fdd9a7d3de2a4ac; anchor=fn disconnected_pipe_returns_an_error_without_panicking] | desktop/src/cli_console.rs:134 [UTF8-LF sha256=bdf70294c5d4a40007baaf637a8ee26a8576f6dfd03604274fdd9a7d3de2a4ac; anchor=fn inherited_output_and_partial_tui_lines_are_preserved] | tests/windows_tray_test.mjs:13 [UTF8-LF sha256=541da356a3c3e376e2eacfa10dbaf068925074ca5c77a005ccf71121eb5639cb; anchor=assert.doesNotMatch(app,]","","Finish bounded panic and shell-action reporting. Actual CLI/IPC pipes, detached GUI console absence and destination replacement must be verified separately from source assertions.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/downloads.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7db32d2df4f9e5a15a56d523ca131272768c8ce3874a37313f65b1807f0a3fb7","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/duration.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7b7f4e604f6160cdd0ba9cc0a34ed2d55d683dd918587f637af570ed0e57fc7c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/authority.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8e27bbe4f9d82365d0d4d8946ae51b6c762f821d90bfc4803d8a1246787ba3cc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/controller.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1a82472d637469f1659e4487992cfa0ac72cb528d9a9a1e85791fadfa4409410","device-context","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/curve_record.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","239343d81352b0c88563cf4fab343d91de5f3f9abe8595a594c13ef7f03c7bda","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/curve.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","22950794da3f9bddf981f51852224de68bdeafb367eead1fc8dd615e6d517657","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/embedded_host.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","94d8639230309ea9434867e3a1721dcfad086a50b0e39af0e00edbb8c34e6e7e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/engine.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7a4534f8fc0a031391db6c15a3d20cddc74b29ae2b6a392597d290b56fbce935","error-management","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/history.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","177e218325efe1ef3e915886d16383872e7283333cbffb63395a5216d1512395","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/input_capture.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7c618423882eea52a60cf9af4afb93c2cf9092d73b0359a216c5c7f61a0a79ca","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/media_sync.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","79db1284423bb3475d37527d21cba5da6c27e3c38fcc8d43868a5623b53cc581","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/media_timeline.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","54c4ea4642451174b5e07be4e6d0c2fa2214965f625d8c8769680a95e44ff5f1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/mod.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a1bbbeb6b6a46a61fb4bc9c7f0290c6ab5756865b6b64ef943827c82be15b83d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/models.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8299b098fad6f060c7db232f67eb05b4c55ee6a50bcc0ea94c73ed10205395cc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/patterns.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ad9447e8561e408055d42ef8c4a503331f4348bd358e166eba98c0c544b0198c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/programming.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5a59e00a6d8c4a6fc92974a6c01ff70e84e2d199b0cd6c44d68cc86ca5825da4","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/protocol_opcodes.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d81b3e3f6208b10572ed7af3db41d2df53e8865a86401f3044554ecc6a95f803","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/four_d/protocol.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","943ebf8cdf050d346ff36764886550ea35a4bd6e6dab25d127329f15d8230731","transport-convergence","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/41","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/hardware_shortcuts.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7c2acca638caa744389c345e6b3630b12b72844df3c77dfbc4108d2118f94bf1","preferences | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/lib.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a14107fa5bded37ee42038f90781e6934986a436f539f64c767e781b1b325868","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/main.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","452eb004c52bdcff6936de5602cfdddf5c925d58db9e1e48220fc9a21075b696","windows-startup","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","equivalent-behavior","complete","desktop/src/main.rs:2 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=#![cfg_attr(windows, windows_subsystem = ""windows"")]] | desktop/src/cli_console.rs:69 [UTF8-LF sha256=bdf70294c5d4a40007baaf637a8ee26a8576f6dfd03604274fdd9a7d3de2a4ac; anchor=pub fn prepare(] | desktop/src/application_identity.rs:3 [UTF8-LF sha256=c37a32df5c00a1cc559c58d226b87d6e9756e7d837b56488646bd0ecc54f26bb; anchor=pub const WINDOWS_APP_ID] | desktop/src/platform/windows_jump_list.rs:13 [UTF8-LF sha256=847796332bd1ba7dd3c51a38a1699b0881ae7efe29249d8129de00d2a481d841; anchor=wide_null(crate::application_identity::WINDOWS_APP_ID)] | desktop/build.rs:40 [UTF8-LF sha256=a7c694cdd2cfd17e3359db8970ce9ffd7db699110145543dde7c73703ca017ef; anchor=.set(""CompanyName"", application_identity::APP_NAME)]","Lamp-background checkpoint: reread complete donor main.rs and current CLI preparation/early control-only dispatch. New --cell-backgrounds on|off uses existing owner IPC and fallible CLI output; it never starts another GUI, allocates a console, focuses the existing window or sends board traffic. Scoped consumer hashes are rebound; not new full startup/platform acceptance. | Actual complete six-line entrypoint read through EOF at5a6961ce. Import windows_subsystem=windows into the Pakar executable, preventing the OS from creating an empty console on ordinary GUI launches. GUI, shortcuts and updater helpers never allocate or attach a console. Explicit CLI/TUI commands may attach only to an existing parent console; inherited file/pipe handles are preserved. | Use one prefix-free PakarController native identity for window startup, process AppUserModelID, Jump List and executable FileDescription/ProductName/CompanyName/InternalName. Existing updater child CREATE_NO_WINDOW flags remain. This row certifies the tiny entrypoint adaptation, not whole-file Windows Shell parity.","pealayer::startup::run() library delegation [replaced]","pealayer::startup::run() library delegation: Pakar currently has a single authoritative binary, not the donor media library. Keep its existing main runtime and no duplicate process globals. The imported crate-boundary guard enforces library delegation if a lib.rs is later introduced; creating a second runtime solely to copy a six-line entrypoint would violate ownership.","tests/windows_startup_test.ps1:24 [UTF8-LF sha256=3ab90d3410719896189b93df4358a00602aefca8cc948f3ebfdd079ba707433c; anchor=Reject $taskBytes] | tests/windows_tray_test.mjs:9 [UTF8-LF sha256=541da356a3c3e376e2eacfa10dbaf068925074ca5c77a005ccf71121eb5639cb; anchor=const consolePolicy] | tools/package-probe-windows.ps1:1 [UTF8-LF sha256=71604ab464776891dbc95db7123218c22b3ede09ce2835fe4659d75c6d0b9d5e; anchor=function Assert-PakarWindowsGuiExecutable]","","","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/media_info.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ff3b9c467654d7d89282da2cbdd6d1014d104e4fe67c42861f98666c6a6b76d0","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/media.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9f4068170e77f2ded48eb3f51df16d6aba70a4615f0378277768b8120f4e5feb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/messaging.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","44ba995614f2acc3230f6adc13c00500e6844db81aa36d5e60e7eeb9e90d6f9f","error-management","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","scoped-improvement","complete","desktop/src/messaging.rs:83 [UTF8-LF sha256=57e357298d9dd8ae515a21bd13a4959ef77e684b345aed02da9dab818f5a204c; anchor=pub fn publish(] | desktop/src/ui/shell.rs:1309 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=value[""messages""]] | desktop/src/platform/notifications.rs:187 [UTF8-LF sha256=7bc00792827606683cac5665eaf5d72f8e04f9a3667dc38e54267fa24451f574; anchor=pub struct ConnectionNotice]","The current 226-line donor was completely reread. Pakar retains request validation, bounded queue, expiry/upsert/dismiss/revision/source identity and the original tests, and now imports Toast.details, publish_with_details, public publish_detailed and the 8192-character pre-mutation validation. | The shared bounded/upsert message hub has truthful native owner-IPC snapshot exposure for actual toast monitoring. Host connection alerts require2s stable state to avoid transient loss/recovery pairs; command freshness still changes immediately. Distinct diagnostic causes remain in the incident ledger, while detailed failures preserve concise notification copy.","","","desktop/src/messaging.rs:199 [UTF8-LF sha256=57e357298d9dd8ae515a21bd13a4959ef77e684b345aed02da9dab818f5a204c; anchor=fn concise_notification_retains_bounded_original_diagnostics()] | desktop/src/platform/notifications.rs:430 [UTF8-LF sha256=7bc00792827606683cac5665eaf5d72f8e04f9a3667dc38e54267fa24451f574; anchor=fn brief_status_and_avr_flaps_do_not_generate_disconnect_recovery_pairs]","Preserves the donor hub while integrating detailed failures with Pakar's source-specific incident deduplication, concise UI copy, privacy-safe Windows notices and stable connection-loss notification policy.","Current donor native messaging behavior is imported; Web/TUI/IPC notification-surface parity and installed visual acceptance remain separate cross-surface work.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/mpv/audio_output.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3527620f6e46b6140b8de67f413177bd315731bb461e725f015d06e536030f41","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/mpv/external.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","16c349b8ec9de8515299ea8eb4d5de3a56268347a8b0f05a03cb88e18d3d2648","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/mpv/frame_cache.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9fc70da51c1b281cef5b61f23d512dc2c83fb470d87798df59acad807b61b7f1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/mpv/mod.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","12dbb0f6bed28f79935b37a2af26f8e76c25b2c9b3271561c22fa6088f8d96c7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/mpv/player.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","900fed4bf8fb951b80f847163be23b304d846bd512f4f087b21bf16797bc1170","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/mpv/proxy.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","50db256e7675f1620ea8589efd20c42152f7be1f6b9e3a72fbe9e8bd5195342b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/mpv/render.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d1f7033bad974a7fb8271bf3aceb71e1e0c9ca71d0d045d22427ed10f510c287","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/mpv/seek.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5a6dac8f50dc84bbaf21aba62e588342fc614aebfa27e80be17df21088d73c29","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/mpv/sfx.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","99daa5181354be84facd627702ba734bf7d1e8d2691e338e46f05f410a65502b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/network.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","22abaf1ca05c64d7e694b7b1d8216904df23cb84f47a0d23c6e91e78d40b86f2","bridge-repeater | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/platform/lan_discovery.rs:27 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=pub struct Advertiser] | desktop/src/ui/preferences.rs:500 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=Enable API bridge / repeater]","Read through EOF. Actual NetworkInterface::show address enumeration/filtering reused for listener-bound IPv4 LAN advertisement, without guessed /24 routes.","discover_bind_targets rich interface chooser, address_detail/interface_presentation and parse_bind_addresses multiple binds [pending]","discover_bind_targets rich interface chooser, address_detail/interface_presentation and parse_bind_addresses multiple binds: Preferences currently provide one explicit numeric listen address plus port; donor adapter chooser/multiple binds are useful pending UI rather than excluded media logic. No interface reconfiguration or firewall mutation is authorized implicitly.","desktop/src/platform/lan_discovery.rs:791 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=fn bridge_loopback_registration_starts_no_discovery_transports]","","Issue #2: discover_bind_targets rich interface chooser, address_detail/interface_presentation and parse_bind_addresses multiple binds. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/peer.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e6cc286bd1325de1ba9b5acc87e8010b12a70a653383d380338e409a0866c365","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/performance.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","584265743e6546633bf2ed5e65cb2a46def053d8c5b31b5aa59bbf4a90d3fc9a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/association.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","21ebfeb0903fd3e97068f632d0f9d740c2053dc631729ffcfcc17ace2bee3cc3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/associations.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","87db1fb6944e7ab10e32332f135758e4f9a198dc0735a5fb16343287f07cfd2f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/clipboard_urls.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","20da33c913648064529541be4f42e7e86b0fd6be1b076a78a6c5516328c9100b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/interop.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","174e750a6f629bbf3d3eabf499ab9ee6625433710048b66e7bd21ba0abd3ab41","native-lifecycle","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/media_controls.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6d9b11283cc470faafd045d91a10c36a1d4913ac7f6feb55a6805773575bdff7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/mod.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6f1f79cf52e665c7fd51f9f780ceac9792dae1d3204ee3b0483699aa5dade483","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/registry.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3b6f3f7e51baf18976c28f202e09ed20b2db1c7c5fe3b5da70e9a9b101f8dc0f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/taskbar_preview.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8a30562c13bf5d3c66f13c1d3210f30f342b94aeb7f21f3f4d69e8b748a0490a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/tray_board.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a3287cc126e6b61e508a6db101dee9ef020b13cbdeeb3266766ddf837798338a","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/window_icons.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","63bbaa244728a2fb4bd53ad5c35f7ff4b95790e70358d47c34ae704ea79d4a4e","ui-shell | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/platform/windows_window_icons.rs:138 [UTF8-LF sha256=bc430351f14d15d6559e6f1dd8a593329c1e05cf7661278856d959b9ab539f6b; anchor=pub fn apply(] | desktop/src/ui/shell.rs:1167 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=desktop.set_icon(&icon)]","Read the complete current donor at 5a6961ce. Adapt its actual owned HICON cache, alpha icons sized for window DPI, both ICON_SMALL/ICON_BIG slots, subclass protection against framework overwrites, WM_DPICHANGED refresh, and WM_NCDESTROY disposal. The selected peer artwork now reaches both taskbar and caption through the existing synchronize_context owner. | Retain both actual hidden-window lifecycle tests: real Win32 icon slots, borrowed-handle survival, replacement/disposal, DPI sizes and true-color bitmaps. Inline the complete taskbar_preview.rs::bitmap dependency function (361..393), without importing media preview behavior. Diagnostic logging uses stderr because Pakar has no log dependency.","","","desktop/src/platform/windows_window_icons.rs:209 [UTF8-LF sha256=bc430351f14d15d6559e6f1dd8a593329c1e05cf7661278856d959b9ab539f6b; anchor=fn hidden_window_keeps_both_icon_slots_and_releases_only_owned_handles()] | desktop/src/platform/windows_window_icons.rs:310 [UTF8-LF sha256=bc430351f14d15d6559e6f1dd8a593329c1e05cf7661278856d959b9ab539f6b; anchor=fn application_icons_use_true_color_alpha_bitmaps_at_each_native_size()]","","Both real Win32 hidden-window icon tests and shared branding checks passed. Confirm actual taskbar appearance after deploying the updated Rust executable; pinned launcher artwork and stable application grouping are unchanged.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/windows_media_session.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","69366849a21c8a2520839da95aa7ad6a6fdd5e740ee082b6bbad5b153c3402e0","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/windows_quick_actions.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","35f6de708a0e402f6958a4d8feeead5037b42174286050ddc98c494d4173e4cb","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","equivalent-behavior","complete","desktop/src/platform/windows_quick_actions.rs:15 [UTF8-LF sha256=432e49b73bdd263fd21de74cdded3de2115605f203f4f3a455e1e2d8553cc0a3; anchor=pub const WINDOWS_QUICK_ACTIONS]","Actual typed action/resource catalog, equality traits, explicit negative resource-index selection, Preferences, Exit and generic Toggle fullscreen. Controller actions share the launch/IPC dispatcher and resource compiler.","Play / Pause, Previous chapter, Next chapter, Mute / Unmute media quick actions [not-applicable]","Play / Pause, Previous chapter, Next chapter, Mute / Unmute media quick actions: Pakar intentionally has no mpv playback, chapters or media volume. These would call removed media business methods. Connect, device settings, refresh, workspaces and About are real controller navigation actions instead; generic fullscreen is retained, not misclassified as media-only.","desktop/src/platform/windows_quick_actions.rs:69 [UTF8-LF sha256=432e49b73bdd263fd21de74cdded3de2115605f203f4f3a455e1e2d8553cc0a3; anchor=fn controller_shell_actions_have_unique_native_resource_ids]","","Visible Windows Jump List clicks remain a manual acceptance gate; typed launch forwarding and resource uniqueness are tested.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/windows_shell_icons.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e1d8793f8f1697f2030bc407f51e48cab4063964c051f2e21d1f60ae3349732a","ui-shell | windows-desktop | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","equivalent-file","complete","desktop/src/platform/windows_shell_icons.rs:45 [UTF8-LF sha256=e1d8793f8f1697f2030bc407f51e48cab4063964c051f2e21d1f60ae3349732a; anchor=pub fn shell_icon_ico]","Byte-identical actual Phosphor rasterizer, centered glyph coverage, all seven ICO resolutions, bottom-up BGRA, DWORD-aligned AND masks and explicit directory offsets. Pakar build.rs keeps it for semantic quick-action assets; application PE/window/tray artwork now uses the shared master and actual Pealayer branding conversion.","","","","","User-configurable icon packs and runtime state-icon transitions are a separate unresolved integration; retaining the generator does not implement that editor.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/platform/windows.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b7e27d61d8031367e34c4cd05c2fdc8720f7dfd9ec19acc49fc64414109cf178","tray-tooltip | native-lifecycle | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5 | https://github.com/atomicdeploy/PakarController/issues/8","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/preferences_contract.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1a688a178041f8966ac2b4533b303b7caf0db098f952cb1b7ca5eb2354428c00","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/process_control.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","46fe50bc7942e3c1540284ad2d4dd31ae96f0390f3acc84174090aa23fc5241f","windows-startup","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/remote_location.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d4269d2f5c975dc1b6a49c796b1a28eebde6c1fc5eff5fe1a69d387c3666c459","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/binary_udp.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e28bf66583055cbab547955584617d3a85d5597ede6288ef830bbc680100e9b6","transport-convergence","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/41","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/discovery.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a707a76b8424353a304ec28e344e467e89823b81c1f4dca321ec3b7060069c6c","bridge-repeater | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/platform/lan_discovery.rs:27 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=pub struct Advertiser] | desktop/src/platform/discovery.rs:174 [UTF8-LF sha256=126098720cf4b0d91a74e7147b41954f2361960f4ae7d210896f8c762ae24fd3; anchor=pub fn ssdp_locations]","Entire source read. Actual mdns-sd registration/browse/monitor, socket2 reusable UDP, bounded candidate queue/workers, SSDP/MNDP codecs and expiry registry adapted. Replace parked immortal lifetime with stop-owned daemon/threads; reject auto hostname suffix on NameChange and publish failure. Actual API-port metadata used in Dart too.","Pealayer cross-product public enrichment/identity merging and full native adapter-change recovery [pending]","Pealayer cross-product public enrichment/identity merging and full native adapter-change recovery: Do not discover unrelated media servers as compatible Pakar board APIs or claim generic Pealayer RPC. Dynamic interfaces and multi-NIC/IPv6 acceptance remain pending; source fixture is not router/firewall proof.","desktop/src/platform/lan_discovery.rs:755 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=fn bridge_mndp_uses_explicit_application_port_not_guessed_port80] | desktop/src/platform/lan_discovery.rs:774 [UTF8-LF sha256=870da3158a7edbf09572ff28eb7878ca4fc4d91d72b3c321a342abff6ee8bfe1; anchor=fn bridge_ssdp_requires_source_location_binding_and_unique_headers]","","Issue #2: Pealayer cross-product public enrichment/identity merging and full native adapter-change recovery. Core native USB/network command sharing has source/socket fixtures; actual ASUS/LAN/Android/physical acceptance and full opaque firmware/binary streaming forwarding remain open.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/download_media.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","68ea8ace5793a45084d88be37e6168b9eb70d4a483d79b73b52b7af6a261be8e","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/fs_api.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","85d1e8f3c21f2d09b5ea5380cd6c680fbe3d639b0cf13f3c36d2b573b75348e7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/fs_locations.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e87720c0c3ea7af933a0234b0458b804af13bc49c912714eb488dadd3afc3cb7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/media_stream.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","11ee485001d35b573c41d9535c80e03201160c159217f65be1d68f4add6a8386","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/mod.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","056b428dc44237011e4f299b9dc1f5c53161627368dab78b38e596bfb39f41e6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/thumbnails.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","07e3cd2307f1dc9eb0ca58d2d6358f9485d1ebd9d8acbb33cab50d4ef2be7c20","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/udp_client.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3dcf43190a9448abdb78a0d1de243ccd4eab1dcea5db81ba1a8c2c99c569929b","transport-convergence","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/41","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/udp_codec.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f5a2fbe61a20083008012112aad2e2f1ed6bc191f8b27d4ade4df4d0c9984f20","transport-convergence","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/41","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/server/web_assets.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","61c1dc863eefcd78d07ea0320b372bb6b5c4a4bb0437fb1e1f267a67ad7d0505","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/startup.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9baf7b0fdb1a6c7953c951dd3fa915228e27d6e7323774d176d77e36fe472649","windows-startup | windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/subtitle.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f88a9b9586b78fadecbb23d45f25717f4a1e43d132430fe8af9a8b14b9355a35","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/about.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c1108051b5cdb102a07f2e1c7763f27da1538965f4ffddc220db3cf2f8757f2d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/action_customization.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d987e725d54a9bc695edacea9fc737ceab26f5ce42763328204f97fa17c67624","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/audio.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c4adc41d29cb236e2f599c384b24f69f0c01244b8c6fb0548d819bd7433333ef","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/board_info.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ab1c99e674e902e37626963e2dd5cf7d993965334411d5e33dafd1ea2bf79e51","board-silent | device-context | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","desktop/src/capabilities.rs:7 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=pub struct Manifest] | desktop/src/ui/shell.rs:1062 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn synchronize_context(] | desktop/src/ui/device_settings.rs:23 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=pub(crate) fn available(] | docs/DEVICE-CONTEXT.md:84 [UTF8-LF sha256=3d7c4a2b05e71ed13fc0f048d852c84d31b52cb1cf63e76180591a6f17a22fe8; anchor=## Exact reuse and remaining useful code] | desktop/src/board_silent.rs:128 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=pub struct Transaction] | desktop/src/ui/preferences.rs:262 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_controls(] | mobile/lib/api.dart:2109 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future boardSound(] | mobile/lib/board_sound_preferences.dart:10 [UTF8-LF sha256=888e518c1a85ff594b6c4c778f2eb770a4cbcad3a1d53d3defea19b5e226dc5d; anchor=class BoardSoundPreferences] | firmware/esp/src/WebUi.h:3568 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=async function boardSoundTransaction(]","Reread all 1280 lines through EOF. Prior authoritative overview/capability/front-panel adaptation remains; shared dropdown dependency is now imported, but full typed board settings and ACK consumers remain pending. | Numeric display controls are independent of Text; peer title follows acknowledged name and lost capabilities cancel Table work. | Reread complete donor source through EOF. Adapt MCU-owned persistent Silent bit independent of host/Windows notification audio, capability-acknowledged controls, explicit unknown/pending/verified states and full-record preservation. Native Preferences Board page uses existing PCController GET/SET/GET with real AVR ACK and persistent readback over the selected fenced HTTP or USB owner only; Web and Flutter Preferences use the same living contract. No unsupported buzzer is invented, no automatic uncertain mutation replay, and unchanged persisted flags skip EEPROM writes.","TABS/draw persistence; overview typed board/profile/protocol/build/EEPROM identity; optional_row/yes_no [pending] | settings/settings_grid/setting_control/checkbox_setting/slider_setting/enum_combo/bit_checkbox/relay_mask_editor [pending] | capability_badges/capability_column_count/capability_pill/state_badge/unavailable and responsive tests [pending] | FRONT_PANEL_KEYS/key_icon fixed K1-K4 previous/next/decrease/increase [not-applicable] | front_panel_key_button and acknowledged menu/key/layout readback [pending] | seven_segment_preview, section/row drawing [replaced] | DropdownUiExt / dropdown::ComboBox board enum selector integration [pending]","TABS/draw persistence; overview typed board/profile/protocol/build/EEPROM identity; optional_row/yes_no: Existing settings/dialog owners retained; complete typed PCController identity/profile/readback and persistence/localization tests require a real adapter. Current manifest is not that universal adapter. | settings/settings_grid/setting_control/checkbox_setting/slider_setting/enum_combo/bit_checkbox/relay_mask_editor: Full EEPROM draft/write/readback, menu/reset/reboot and relay/PWM/RF/LCD/macro editors remain useful pending contracts. Current driver absence hides them but does not certify generic helpers imported. The Silent checkbox is now adapted into actual native/Web/Flutter Preferences with full-record preservation and ACK/readback; the remaining editors and broader donor field set stay pending. | capability_badges/capability_column_count/capability_pill/state_badge/unavailable and responsive tests: Availability semantics adapted; entire donor badge geometry, localized empty states and responsive/keyboard consumer tests remain unverified. | FRONT_PANEL_KEYS/key_icon fixed K1-K4 previous/next/decrease/increase: Our board has nine shift-register/ADC keys; four hardcoded identities would be false. Matching future adapters can advertise them. | front_panel_key_button and acknowledged menu/key/layout readback: Nine-key state exists, but full remotely navigable front-panel/menu/key commands need per-board descriptors and donor ACK tests. Incompatible labels do not justify dropping reusable command helpers. | seven_segment_preview, section/row drawing: Existing Pakar seven_segment/dialog primitives own preview and geometry. A duplicate renderer would fork styling; fresh peer gates wrap the current owners. Native paint acceptance remains pending. | DropdownUiExt / dropdown::ComboBox board enum selector integration: The tracked shared dropdown module is now fully read and imported, with native consumers and donor tests. This does not implement every generic consumer contract in this file: render-rate policy, workspace/language/direction actions and complete board EEPROM enum ownership remain independently pending. Native execution and visual acceptance are reported separately.","tests/web_context_test.mjs:168 [UTF8-LF sha256=a76a645ffaca445ca0c4ec835a3e577f781b7f05a0f88d14ca326f303b2cdf02; anchor=Native wiring is source-checked only] | desktop/src/capabilities.rs:605 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=fn no_profile_or_individual_ack_means_no_controls] | tests/tone_player_test.cpp:46 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=const auto beforeMute] | tests/pc_contract_test.cpp:118 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=silentRequest[22]] | desktop/src/board_silent.rs:446 [UTF8-LF sha256=2cf67f00a3675949b1328bef8e51240e5dc294608d289cae98d368e1c043b307; anchor=fn board_silent_preserves_other_settings] | mobile/test/board_sound_test.dart:229 [UTF8-LF sha256=e37acd59e38b8dc8696eb190f3018444352128cf0eb13ad59d125cf007cd5a45; anchor=Silent API uses actual AVR ACK/readback] | tests/board_silent_test.mjs:9 [UTF8-LF sha256=95f4c3048054666df7673c618f09f57d7e2c37d34f42276b0fcd021037772825; anchor=for (const mode of []","","Typed PCController adapter, donor tests and native runtime proof remain #10/#3/#6. No whole-file equivalence or application superiority claimed. | Shared dropdown dependency now has a complete-read comparison; preserve remaining generic consumer contracts and verify native runtime without claiming whole-file parity. | Focused fixtures/builds are source evidence only. Physical ASUS USB/Wi-Fi, reboot persistence, muted welcome/menu/cue audio and subsequent unmute require the actual AVR; SSH8022 is currently unavailable. Full donor host routing/backend/configuration parity is not established.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/color_picker.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fe2bf96c968d83874903f5d06085775f5787cf24467fb0c7be3fcf53077c1aa4","native-dropdowns","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","parity-gap","complete","desktop/src/ui/color_picker.rs:25 [UTF8-LF sha256=3a42e1d960fab77e1496899d7c708882f5db1ece1e92c01bd3192bc3e9eef0d5; anchor=pub fn remember_color(] | desktop/src/ui/color_picker.rs:243 [UTF8-LF sha256=3a42e1d960fab77e1496899d7c708882f5db1ece1e92c01bd3192bc3e9eef0d5; anchor=pub fn accent_picker(] | desktop/src/ui/preferences.rs:445 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=super::color_picker::accent_picker] | desktop/src/ui/i18n.rs:198 [UTF8-LF sha256=0f06c9f2f84e5710fe5bbea7a83221c0c527e61ba52ab0b63ee032974ced6739; anchor=""Recent colors""]","Lamp-background checkpoint scoped rereview of configure_language/palette_tr/recent_row, current accent_picker consumer and Recent colors translation. Board-palette face preference stays separate from accent picker; recent/session colors, validated draft and localized palette labels are unchanged. Current preference/i18n hashes rebound without claiming pending color-picker parity. | Reread all 550 current donor lines through EOF. Actual session-only12-color MRU deduplication, recent/shared swatches, integrated HEX-field swatch, full-width Custom choice, independently anchored palette/validated temporary HEX draft and prior donor tests remain adapted. The newer integrated Custom expansion/density behavior is pending; current production accent consumer is not a complete Preferences contract. | Scoped hover/grid checkpoint rereview: donor configure_language, palette_tr and recent_row (lines 5-77) still route Recent colors through translation; current Pakar Recent colors/Shared colors/Choose color labels remain intact. The current target changes add first-wins grid labels, not color-picker behavior. Refreshed this target hash after reading those exact functions/labels; the earlier full-file review and all pending omissions remain historical and unchanged. No new palette runtime acceptance is claimed. | Preferences geometry checkpoint reread complete actual src/ui/color_picker.rs through EOF and compared the unchanged accent_picker consumer and its RGB-string draft ownership. The fixed body/footer host retains the same semantic swatches, recent session colors, full-width Custom row and separately anchored validated HEX palette. System-accent ownership and the donor's newer one-popup Custom expansion remain explicit gaps; refreshing the Preferences target does not certify them.","palette_contents baseline/draft ownership and integrated color_dropdown one-popup Custom expansion, dynamic screen-height clamp/growth and explicit arrow-key opening [pending] | Pealayer asset path, session ID and product-specific shared-colors heading [replaced] | Full System accent mode and shared native/Web/mobile Preferences contract [pending]","palette_contents baseline/draft ownership and integrated color_dropdown one-popup Custom expansion, dynamic screen-height clamp/growth and explicit arrow-key opening: Fully reread all 550 current donor lines through EOF. Pakar still uses its previously imported independently anchored Custom palette/validated HEX draft. Shared dynamic density and geometry are now imported and tested; the newer single-popup expansion, screen clamping and explicit opening behavior still require the real palette baseline/draft owner before replacing the working popup split. | Pealayer asset path, session ID and product-specific shared-colors heading: Uses the actual already imported shared palette asset, Pakar context ID and localized generic headings without disk persistence for recent colors. | Full System accent mode and shared native/Web/mobile Preferences contract: This source module is imported, but the current persisted RGB-string consumer is not Pealayer dynamic OS-accent mode or cross-surface preferences ownership. The selected Preferences Accent branch was inspected; that entire dependency file is not certified by this review.","desktop/src/ui/color_picker.rs:376 [UTF8-LF sha256=3a42e1d960fab77e1496899d7c708882f5db1ece1e92c01bd3192bc3e9eef0d5; anchor=fn accent_custom_row_opens_separate_palette_without_mutating_on_open()] | tests/native_dropdown_test.mjs:1 [UTF8-LF sha256=c8ac060ff9ab0355f45d68b1cd503c208155632423a262f93f800249ba922662; anchor=Wiring/provenance checks]","","Import the full applicable shared Preferences contract and System accent ownership across surfaces; execute native behavior tests and capture the deployed palette. Source guards are not runtime or visual evidence.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/control_bar.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","56d1f904a4ef361d72819616bdf5384b79f6e2aee610bea4b6ef757d57d79608","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/control_density.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","690a964825638da4272550f389a948ad62b5947bad03df8aaee60de49c1325ed","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete","desktop/src/ui/control_density.rs:7 [UTF8-LF sha256=d5e8b6ae76c101f6473297f4305061ca8b5d83a7e1f4137850383a66b9b1ff6c; anchor=pub fn configure(style: &mut egui::Style, density: UiControlDensity)] | desktop/src/config.rs:38 [UTF8-LF sha256=b84801a85e31a44b2691bd5f6ccefea0106d799952b0fb61e2d6162ee11b9414; anchor=pub enum UiControlDensity] | desktop/src/ui/preferences.rs:447 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=from_id_salt(""control-density"")] | desktop/src/ui/dropdown.rs:36 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=crate::ui::control_density::paint_chevron] | desktop/src/ui/color_picker.rs:162 [UTF8-LF sha256=3a42e1d960fab77e1496899d7c708882f5db1ece1e92c01bd3192bc3e9eef0d5; anchor=crate::ui::control_density::height(ui)]","Lamp-background checkpoint reread all 97 current donor lines and current AppConfig enum plus Preferences density consumer. Optional semantic face changes paint only; density, font growth and zero-expansion policy are unchanged. Inspected config/Preferences references rebound, not new donor-wide acceptance. | Read all 97 donor lines through EOF. Imported the single 24/28/32/36-pixel density policy, large-font growth, zero widget expansion, open chevron painter and choice tick painter. Pakar's persisted Preferences field now configures global text fields, dropdown triggers, popup choices and color fields through this shared owner. | Reread all 97 current donor lines and reviewed current Pakar configure plus production-helper interaction regressions. The imported zero-expansion policy now also fixes all widget-state stroke widths and radii to the inherited inactive geometry; Pealayer 5b3d5c150d714a3f951378867791b06855155094 hardware_action_button demonstrates why recoloring inherited stroke width and retaining the Button font matters after egui frame margins are computed. This extends the exact donor invariant to stock buttons and semantic helpers, including zero-stroke menu scopes. Root canonical native Test checkpoint reports 121 ui:: filtered tests passed, zero failed; tests exercise hit rectangles and painted caption origins through hover/press/focus/selection/disabled in both themes, palettes, every density and 1.0-2.0 scales. Native screenshot/deployed-host acceptance remains pending.","Donor singleline_text_edit(ui, text) without RTL alignment [replaced] | Donor color_dropdown row in the density fixture [replaced]","Donor singleline_text_edit(ui, text) without RTL alignment: Pakar preserves the donor's Button font, dynamic minimum height and zero vertical margin while retaining its required Persian/LTR input alignment. The focused density matrix exercises that production helper. | Donor color_dropdown row in the density fixture: Pakar's current color consumer separates the dropdown trigger and custom palette popup; the test covers its real shared dropdown trigger, custom row and HEX field instead of adding a dormant donor-only API.","desktop/src/ui/control_density.rs:88 [UTF8-LF sha256=d5e8b6ae76c101f6473297f4305061ca8b5d83a7e1f4137850383a66b9b1ff6c; anchor=fn inputs_combos_color_triggers_and_menu_rows_share_density_in_both_themes()] | desktop/src/ui/button_geometry_tests.rs:146 [UTF8-LF sha256=4985dc82110f0948c5153b5e9b7b472054b0f62d10a8e2dbb6a38a664848a6a1; anchor=fn button_hit_slots_and_caption_ink_survive_every_interaction_state()] | desktop/src/ui/button_geometry_tests.rs:151 [UTF8-LF sha256=4985dc82110f0948c5153b5e9b7b472054b0f62d10a8e2dbb6a38a664848a6a1; anchor=fn semantic_actions_preserve_inherited_zero_stroke_menu_geometry()]","","","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/controls.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f5211d73c38438f9cff2543ac234965a8dabd26f4a532fb8b8ecf51248fc0a56","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/ui/cell_table.rs:368 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn find_field(] | desktop/src/ui/cell_table.rs:394 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn table_helper(] | desktop/src/ui/cell_table.rs:1108 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn cell_context_menu(] | desktop/src/ui/shell.rs:2030 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn draw_table(]","The native-table owner fully read actual C:/Users/David/AppData/Local/Programs/Pealayer/source/Pealayer/src/ui/controls.rs through EOF in two bounded reads, including history/blame. Adapt draw_elapsed_editor's fixed text-editor slot and centered vertical alignment (originating change 9ea94c09), draw_contextual_transport_nudge's exact allocation and centered glyph, volume_slider_widgets' stable value lane, and transport_context_menu's shared action dispatch/gating. Pakar find_field, table_helper and cell_context_menu use these patterns without importing media commands. | The table's cell/background/keyboard menus share one action path with capability, connection, pending-command and lost-lock checks; visual row/column selection, inverse/copy, diagnostics and view options remain contextual. Normal selection/status help stays muted, actual cautions/errors use semantic treatment, and the helper lane does not resize with its contents. grid_canvas/visual_line and all-80-cell staggered fit are new Pakar spatial algorithms, not claimed donor table code. | An actual native framebuffer after the first build exposed centered helper text and a 520px Find width cap. The follow-up uses a leading-edge vertically centered helper galley, a single reserved helper lane, full responsive Find width and pixel telemetry in the existing footer. The strengthened helper test checks exact text left edge/vertical center; a new Find-row test rejects a fixed width cap. Initial test/build success did not establish final visual acceptance; final source must be rebuilt and recaptured separately.","Playback transport, elapsed timecode, seek and volume commands [not-applicable] | Remaining generic control configuration, input ownership and complete donor runtime test matrix [pending]","Playback transport, elapsed timecode, seek and volume commands: The table controls MCU-owned cell state and has no media playback domain. Only reusable geometry, contextual action routing and semantic helper treatment were adapted. | Remaining generic control configuration, input ownership and complete donor runtime test matrix: A complete source read does not establish all-controls parity. This pass maps the exact listed functions to table consumers; other useful generic configuration and cross-platform gesture/focus behavior still require applicable consumer reconciliation and installed tests.","desktop/src/ui/cell_table.rs:1774 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn find_row_fills_responsive_panel_without_a_fixed_width_cap()] | desktop/src/ui/cell_table.rs:1709 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn table_canvas_contains_every_staggered_cell_and_focus_padding()] | desktop/src/ui/cell_table.rs:1727 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn visual_context_selection_matches_rows_columns_and_reordered_ids()] | desktop/src/ui/cell_table.rs:1739 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn table_actions_are_gated_by_route_capabilities_selection_pending_and_lock()] | desktop/src/ui/cell_table.rs:1751 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn find_icon_is_centered_inside_stable_editor_slot()] | desktop/src/ui/cell_table.rs:1802 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn table_helpers_reserve_height_and_warn_only_for_actual_cautions()] | desktop/src/ui/shell.rs:394 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn table_scene_fits_small_dock_and_zooms_at_pointer()]","","Issue #3: execute the canonical native tests and inspect actual desktop table/menu screenshots and pointer/keyboard behavior. Source guards and simulated snapshots are not installed-board or physical acceptance.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/dialog.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8a396d67862578f8727e43a952e82120b20c9c582ebcc5366ab0968ba8f704d8","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","desktop/src/ui/preferences.rs:364 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=let action_height = super::control_density::height(ui).max(dialog::ACTION_HEIGHT);] | desktop/src/ui/cell_table.rs:725 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn manager_selector(] | firmware/esp/src/WebUi.h:183 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=/* Fixed manager slots:] | desktop/src/ui/effect_controls.rs:66 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=pub fn mode_picker(] | desktop/src/ui/panel_details.rs:161 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=pub fn correction_rules(] | desktop/src/ui/panel_details.rs:348 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=pub fn network(] | desktop/src/state_appearance.rs:52 [UTF8-LF sha256=567e65fa7d3e0e7ad7ef508b7944c0f861b376fd348031dd105ad2df94ece5eb; anchor=pub fn controls(] | desktop/src/minigame.rs:151 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn bounds(]","Lamp-background/hover correction retains actual navigation_control and stable_toggle fixed allocation, centered text and inside-stroke contract, reread directly in this scoped pass. Rounded/semantic circle/hexagon faces optionally use exact board-owned state RGB with contrast-selected ink; unknown stays neutral and sampled six-pixel frames stay unmodified. Shared hover edge strengthens contrast instead of replacing state edge with darker generic stroke. Selection/focus identity and hit geometry remain stable. Painter/contrast tests are source proof pending execution/capture. | Read all 952 donor lines through EOF. navigation_control's fixed allocation, clipped centered text and inside-stroke painting are adapted to manager_selector. Compact cell/row/state slots use the existing shared neutral animated cell_surface; state-dependent Button Frames cannot resize their text/content geometry. Selected widget metadata is retained explicitly. | Current complete 1236-line donor and complete mapped Pakar dialog.rs were reread by the status/front-panel agent; historical bounded geometry, inside-stroke navigation, equal action sizing, RTL adjustments, numeric modifier/clipboard/wheel and scrolling mappings remain intact. This is source comparison, not native test execution. | The root/native agent fully reread the same current 1236-line donor and mapped Pakar dialog helpers. EffectControls and StateAppearance now use actual section/action/setting-row helpers and reserved choice geometry. A fixed-role board creates no mode card or spacer, while first-wins reset remains independently live-gated. PanelDetails supplies responsive observed network cards and styled ordered correction drafts with square row actions and bounded virtualized mapping; narrow text wraps and long values truncate with tooltips. These are additional scoped consumers, not all dialog/modal behavior. | The final panel pass adds measured, accessible single-line feature-chip slots after an actual Hardware framebuffer exposed collapsed vertical labels. The shared setting-row brightness consumer now isolates an in-progress pointer draft by current peer, boot, route and connection epoch, otherwise reading the live observation on USB and Wi-Fi. Release or keyboard emits one intent; owner loss, Escape, lost focus or a missing panel frame cancels the draft. These are controller-specific safety/layout adaptations of the reused controls, not newly claimed donor numeric-control equivalence. | Preferences footer checkpoint reread the complete actual 1236-line src/ui/dialog.rs at C:/Users/David/AppData/Local/Programs/Pealayer/source/Pealayer. Existing imported action-button, navigation and scroll-column helpers remain reused. Preferences reserves trailing Save/Cancel slots before clipping status rather than allowing a leading long status to consume action width; native and embedded hosts share this layout. The added actual-egui geometry regression exercises resize, both text directions, regular/comfortable density, short and unmatched categories, long status, bounded action painting and unchanged drafts. No helper-process/focus-modal or full numeric-control parity is claimed. | 2026-10-29 Simon settings: specialist read all1236 actual dialog donor lines through EOF after inspecting setting_row/navigation/action helpers before edits; secondary dropdown source also fully read. Retain imported setting_row and detail-choice geometry for an optional bounded additional-steps field. Only explicit picker click applies current Pakar Config::defaults (3,5,7 at300/120ms); painting/reopening preserves user edits and wiring/boot/timer policies, and an unadvertised optional growth field is never invented. Inline tests cover bounds, visibility, explicit-only defaults and exact readback. These are Pakar game rules, not donor business logic; installed gameplay and wider generic dialog parity remain open. | 2026-10-29 native game-settings audit: root reread all1236 actual donor dialog lines and646 dropdown lines at unchanged recorded raw hashes. Retain existing section/setting_row/detail-choice geometry and keyboard-aware ComboBox. Replace stock Toggle selectable-values, add readable output predicates and numbered board-catalog entries. Known explicit game changes apply current engine defaults only to advertised rule fields, preserving wiring/device policies/unknown fields/same-mode edits. Contextual numeric editors have stable field IDs, unused controls are hidden, and painting output rows never reconstructs or drops optional JSON. All17 focused native game tests and5 shared-dropdown tests pass; installed ASUS behavior and wider donor parity remain open.","navigation_control's 80px minimum, left-aligned icon/title/metadata slots and selected bg_fill tint [replaced] | singleline_text_edit/workspace_overlay_layer/preferred_host/centered_default_rect/bounded_geometry/opaque frame/action buttons/action rows/navigation detail/section/compact_row/setting_row/scroll_column/fit_scroll and their donor tests [pending] | numeric_stepper/numeric_adjustment/adjust_numeric/numeric_slider_wheel/parse_numeric_paste/receive_numeric_paste/numeric_context_menu and seven pointer/paste/wheel tests [pending] | Current stable_toggle, fixed-slot close_button, confirmation_modal AlertDialog focus restoration/top-modal Escape/non-destructive backdrop, inline_caption_edit and density-aware singleline_text_edit [pending]","navigation_control's 80px minimum, left-aligned icon/title/metadata slots and selected bg_fill tint: A compact cell needs a centered number in 32x28; row/action slots are 96/104x28. The user requires neutral shared selection, not a tinted navigation side rail. Fixed text positions and inside strokes are preserved; existing side-rail helper remains unchanged. | singleline_text_edit/workspace_overlay_layer/preferred_host/centered_default_rect/bounded_geometry/opaque frame/action buttons/action rows/navigation detail/section/compact_row/setting_row/scroll_column/fit_scroll and their donor tests: Existing imported dialog helpers and the newly mapped effect/network/correction/state-appearance consumers are present. This scoped pass does not certify every call site or host/resize/action/localization test; full generic consumer and test reconciliation remains issue #3 work. | numeric_stepper/numeric_adjustment/adjust_numeric/numeric_slider_wheel/parse_numeric_paste/receive_numeric_paste/numeric_context_menu and seven pointer/paste/wheel tests: Helpers already exist in the imported module; bounded input geometry, paste ownership, wheel tail suppression and context behavior need their actual donor runtime tests restored and controller settings coverage. Hover selector acceptance is not numeric-control parity. | Current stable_toggle, fixed-slot close_button, confirmation_modal AlertDialog focus restoration/top-modal Escape/non-destructive backdrop, inline_caption_edit and density-aware singleline_text_edit: Density-aware singleline_text_edit is adapted, but the generic stable_toggle, fixed-slot close_button, confirmation-modal focus/top-modal Escape/backdrop and inline-caption behavior still need complete consumer/test reconciliation. Current custom Preferences/device dialogs are not certified equivalent to those donor helpers.","desktop/src/ui/cell_table.rs:1950 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn hover_strengthens_existing_cell_edge_without_replacing_selection_identity()] | desktop/src/ui/cell_table.rs:1978 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn opted_in_semantic_shapes_use_exact_fill_without_moving_the_hit_slot()] | desktop/src/ui/cell_pixels.rs:292 [UTF8-LF sha256=547feb8158f8436ce6b3664dd90fcd59affdcce21dc7f9be273d2945e7424da6; anchor=fn pixel_preview_hover_preserves_rgb_and_fixed_outline_width()] | desktop/src/ui/cell_table.rs:2102 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn manager_hit_slots_text_and_wrap_never_follow_hover_or_stroke_width()] | tests/web_cell_table_test.mjs:12 [UTF8-LF sha256=ac7e5a9d0b7af5bcacad0949c10e4dc9d08377364c05495593585883b566d6b1; anchor=Manager must not allocate state-dependent selectable Frames] | desktop/src/ui/effect_controls.rs:472 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn fixed_role_board_allocates_no_mode_card_or_spacer()] | desktop/src/ui/effect_controls.rs:512 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn choices_keep_equal_geometry_when_hovered_selected_or_disabled()] | desktop/src/ui/effect_controls.rs:484 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn reset_remains_available_for_a_single_first_wins_mode_only_when_live()] | desktop/src/ui/effect_controls.rs:417 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn game_press_requires_explicit_applied_mask_and_live_admission()] | desktop/src/ui/effect_controls.rs:303 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn brightness_drag_retains_draft_across_observations_and_commits_once_on_both_routes()] | desktop/src/ui/effect_controls.rs:343 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn brightness_cancel_disconnect_and_owner_changes_never_commit_old_gestures()] | desktop/src/ui/effect_controls.rs:391 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn brightness_keyboard_commits_once_and_unknown_observation_remains_non_mutating()] | desktop/src/ui/panel_details.rs:466 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=fn feature_chips_wrap_as_whole_slots_without_vertical_labels_or_overflow()] | desktop/src/ui/panel_details.rs:610 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=fn network_and_corrections_stay_bounded_and_passive_in_narrow_panels()] | desktop/src/ui/panel_details.rs:529 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=fn scoped_action_rows_fit_narrow_cards_and_keep_wide_rows_compact()] | desktop/src/ui/panel_details.rs:589 [UTF8-LF sha256=d52b713fbf32ae3f9cf0c550f0ff172d2bc5450eeb985ab8a0ce1e0a7edd2d0d; anchor=fn ethernet_uses_the_board_link_up_observation()] | desktop/src/state_appearance.rs:337 [UTF8-LF sha256=567e65fa7d3e0e7ad7ef508b7944c0f861b376fd348031dd105ad2df94ece5eb; anchor=fn appearance_cards_wrap_within_docked_panels_without_sending_on_render()] | desktop/src/state_appearance.rs:255 [UTF8-LF sha256=567e65fa7d3e0e7ad7ef508b7944c0f861b376fd348031dd105ad2df94ece5eb; anchor=fn unavailable_connection_disables_appearance_and_preview_without_hiding_them()] | desktop/src/minigame.rs:1306 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn minigame_simon_growth_is_bounded_and_visible_only_in_sequence_settings()] | desktop/src/minigame.rs:1324 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn minigame_simon_defaults_apply_only_on_explicit_mode_change()] | desktop/src/minigame.rs:1359 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn minigame_growth_readback_must_match_requested_value()] | desktop/src/minigame.rs:1057 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn minigame_every_mode_selection_resets_rules_but_preserves_wiring_and_device_preferences()] | desktop/src/minigame.rs:1188 [UTF8-LF sha256=1dd5adb7c20f7d6c4529e5591c4175c50282c7a9ea4cf5fbfce88053653dca3f; anchor=fn minigame_settings_all_modes_render_without_commands_or_draft_mutation()]","","Execute and record current native panel/painter geometry tests, then capture/deploy through guarded workflows. The earlier cache-budget blockage is historical, not asserted current. Source/DOM-double or native offscreen tests are not installed visual or physical acceptance. | Complete the named generic dialog call-site/test reconciliation in issue #3; no whole-file behavioral equivalence or whole-project superiority claim.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/dropdown.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","134f1613df05c9db44f8ccd178981a8eca4fb6c254ced6466229afca66b40ee9","native-dropdowns","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","scoped-improvement","complete","desktop/src/ui/dropdown.rs:398 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=pub trait DropdownUiExt] | desktop/src/ui/cell_table.rs:763 [UTF8-LF sha256=a895f275243c9079783aa7f0165bac1d21f692e84b30f8aaeed4fbcc52cf8a19; anchor=fn cell_order_controls(] | desktop/src/ui/connection_controls.rs:90 [UTF8-LF sha256=02bbb46d280c606868f0f18220cb092c0dca2e07f9b06aa31bee1e4f4625ec65; anchor=pub fn draw(] | desktop/src/ui/preferences.rs:443 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=super::dropdown::ComboBox::from_id_salt(""theme"")] | desktop/src/ui/device_settings.rs:151 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=super::dropdown::ComboBox] | desktop/src/ui/shell.rs:2976 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=super::dropdown::ComboBox] | desktop/src/ui/effect_controls.rs:11 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=pub fn backend_picker(] | desktop/src/led_backend.rs:39 [UTF8-LF sha256=34380845ae7616e7d2ae6718f0bc3ff20c2ef36380c7a3374ed9e1f394cb5978; anchor=pub fn finish_network(]","Lamp-background checkpoint scoped rereview of actual ComboBox::show_ui/dropdown_style/menu_ui and unchanged imported module. Preferences theme/density and shell transition selectors retain shared geometry, keyboard/selection registration and closed-menu ownership. Workspace checkbox does not replace those selectors. Only inspected consumer hashes are rebound; earlier complete-read provenance remains historical. | Reread all 646 current donor lines through EOF against the retained target. Actual focus owner, enabled/selected entries, search focus, Arrow/Home/End/Enter navigation, disabled skipping, inside focus stroke, nested menu framing and closed-popup cleanup remain imported. Dynamic density, chevron, non-closing inline expansion and the navigating guard for unrelated popup editors are now imported too. | Current exclusive-transport slice reread all646 donor lines again. Unified connection draw uses actual menu_ui/DropdownUiExt enabled/selected/focus registration, one lifecycle action, lazy selected-USB OS enumeration and closed-popup cleanup. Old dual-popup proof anchors were replaced with real new contextual/lifecycle tests, not kept as fictitious surviving tests; runtime execution remains separate. | Revalidated original-byte donor SHA134f1613 at unchanged revision5a6961ce after fully reading all646 donor lines, the entire control_density dependency and the retained target plus native_dropdown wiring test. Dynamic density, chevron, inline expansion and the newer navigating guard are imported with focused native tests; no production visual acceptance is claimed. | Native box-workspace checkpoint scoped rereview: donor ComboBox/show_ui, dropdown_style, menu_ui focus ownership, choice_with_close and DropdownUiExt were compared with the unchanged imported dropdown module and current shell consumers. The new key_boxes canvas delegation retains existing melody/menu dropdowns. Fixed full-row allocation, inside focus stroke, Button font, temporary density restoration and enabled/selected keyboard registration remain in use. Only the changed shell target hash is refreshed here; historical complete donor review is not recertified by this scoped pass. Native build and visual capture remain separate. | Runtime LED transmitter checkpoint reuses the fully read actual donor ComboBox/DropdownUiExt, not a second widget. effect_controls.rs renders a compact setting row from advertised compiled choices with observed active backend, pending/disabled state and explicit driver/storage errors, never an optimistic selected value. led_backend.rs is new Pakar transport logic, not claimed as donor code: one mutation, bounded same-board/boot observation-only completion, persisted/requested/active/readiness checks and no uncertain-write replay over HTTP, WebSocket or USB. | Preferences geometry checkpoint reread the complete current actual src/ui/dropdown.rs through EOF at the canonical Pealayer source path and compared the theme, density, language, direction and compact-category consumers. Theme, language and direction expressions are unchanged; the new narrow Preferences category selector uses the same ComboBox/DropdownUiExt focus owner and inside-stroke rows. No duplicate dropdown implementation or optimistic configuration write was introduced; only this reviewed Preferences target is rebound. | Native-table owner compared the current complete-read donor with cell_order_controls and replaced its stock Shape selector with the existing imported ComboBox/DropdownUiExt. Enabled/selected registration, full-width keyboard choices and closed-popup ownership now match the shared selector; the donor relay_style.dart was also compared for semantic styling but no Flutter sizing code is falsely attributed as a Rust import.","Pealayer active-dropdown ID [replaced]","Pealayer active-dropdown ID: Product-specific context key renamed to Pakar. No generic helper or donor assertion removed.","desktop/src/ui/dropdown.rs:470 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=fn dropdown_arrows_seed_focus_skip_disabled_commit_enter_and_cancel_escape()] | desktop/src/ui/dropdown.rs:549 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=fn dropdown_search_keeps_text_focus_until_arrow_enters_choices()] | desktop/src/ui/dropdown.rs:673 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=fn dropdown_color_rows_are_full_width_equal_height_and_hover_stable()] | desktop/src/ui/dropdown.rs:445 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=fn from_label_keeps_locked_egui_trigger_identity()] | desktop/src/ui/connection_controls.rs:266 [UTF8-LF sha256=02bbb46d280c606868f0f18220cb092c0dca2e07f9b06aa31bee1e4f4625ec65; anchor=fn one_contextual_control_lazy_usb_scan_and_busy_guard()] | desktop/src/ui/dropdown.rs:616 [UTF8-LF sha256=92376984276d5bc4714cd59270ba839fa3b00b66d68ba9e8a03e7024870af4d8; anchor=fn dropdown_unregistered_editor_retains_arrow_keys()] | tests/native_dropdown_test.mjs:1 [UTF8-LF sha256=c8ac060ff9ab0355f45d68b1cd503c208155632423a262f93f800249ba922662; anchor=Wiring/provenance checks] | desktop/src/ui/effect_controls.rs:235 [UTF8-LF sha256=da148d2876de05674cc876ed167df5518bb294698090ec5d3fd5a6ad39587dfc; anchor=fn backend_control_is_observation_only_without_an_explicit_choice()] | desktop/src/led_backend.rs:78 [UTF8-LF sha256=34380845ae7616e7d2ae6718f0bc3ff20c2ef36380c7a3374ed9e1f394cb5978; anchor=fn accepted_request_is_not_applied_driver_or_persistence()] | desktop/src/led_backend.rs:103 [UTF8-LF sha256=34380845ae7616e7d2ae6718f0bc3ff20c2ef36380c7a3374ed9e1f394cb5978; anchor=fn network_completion_observes_once_without_replaying_write()]","Preserves all current donor dropdown behavior while adding the locked egui from_label trigger identity for existing labeled settings and actual connection-control keyboard ownership with busy-port rejection. Clears texture ownership before native assertions to avoid a second panic masking a failure. Native execution and production visual acceptance remain separate from source wiring.","Installed native Output-panel visual acceptance and real USB/Wi-Fi switching in both directions with power-cycle persistence remain pending; native source/loopback tests do not prove optical output or full application parity.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/effects_library.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a485362a0ad275426ef20768233b5b80b1633f896750bb62ed374d7b964f2b73","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/elegance_theme.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8d11f915ccf56e5ab67232ceac7432051437484d1faecacabab62ec5403d63bd","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete","desktop/src/ui/elegance_theme.rs:23 [UTF8-LF sha256=a494def22553b0c21b4bb9b2f786f9d117b26ed163b2a254f0ec43f3f979556f; anchor=pub fn sync_elegance_theme(ctx: &Context)]","Read all 321 donor lines through EOF. Pakar retains the actual host-style-preserving Elegance adapter: palette caching, opacity, WCAG 4.5:1 filled-action correction, typography, radius and spacing derivation are unchanged. All three donor tests are now imported and execute against Pakar's real configuration owner.","Pealayer AccentColor and configure_native_appearance/configure_main_window_style test setup [replaced] | pub(super) set_source_palette visibility [replaced]","Pealayer AccentColor and configure_native_appearance/configure_main_window_style test setup: Pakar's canonical config::apply owns the same persisted RGB accent, system/light/dark theme selection, palette application, global styles and Elegance source palette. Tests call that production owner instead of adding stale compatibility types or a second appearance path. | pub(super) set_source_palette visibility: Pakar's config module is outside ui and requires crate visibility; the function remains non-public outside the crate and its behavior is unchanged.","desktop/src/ui/elegance_theme.rs:160 [UTF8-LF sha256=a494def22553b0c21b4bb9b2f786f9d117b26ed163b2a254f0ec43f3f979556f; anchor=fn elegance_tracks_live_theme_and_accent_without_changing_either_host_style()] | desktop/src/ui/elegance_theme.rs:231 [UTF8-LF sha256=a494def22553b0c21b4bb9b2f786f9d117b26ed163b2a254f0ec43f3f979556f; anchor=fn elegance_filled_actions_have_readable_white_ink_without_recoloring_focus()] | desktop/src/ui/elegance_theme.rs:269 [UTF8-LF sha256=a494def22553b0c21b4bb9b2f786f9d117b26ed163b2a254f0ec43f3f979556f; anchor=fn elegance_section_cards_are_opaque_compact_and_width_bounded()]","","","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/error.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1f62031276eaf7720a344f41cd0a920a92418bcf816f4012efc3fd6a6626b0c9","error-management","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/four_d.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0fc72e60c8ca9d876be5cfd1a7523878381c4aa0d6aa2297e2c9e948ced19e18","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/group_picker.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d7652450b26d97c79d4fa871da4203d210b4e76a1602af3c66537e03d6dc090b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/hardware_control.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1e20dcdd968c61fd97722f71db1c902bba92529823e85a0db4bdaa4361a756d9","device-context | ui-shell | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/i18n.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","811a48221c47c903c1d70ca904ead90a7a6b7f5ee0ba9a5f26a7e60dd30a75c3","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","desktop/src/ui/i18n.rs:6 [UTF8-LF sha256=0f06c9f2f84e5710fe5bbea7a83221c0c527e61ba52ab0b63ee032974ced6739; anchor=pub(crate) fn configure_ui_fonts] | desktop/src/ui/dialog.rs:18 [UTF8-LF sha256=854b8e1ca332650ad9964cb3e36f6a6304607502e953fa1bdf660bafb00f117f; anchor=pub fn singleline_text_edit] | desktop/src/ui/preferences.rs:448 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=AppLanguage::Persian] | docs/PERSIAN-PARITY.md:48 [UTF8-LF sha256=d1f873fb589b406316d77e9ca2fcaf652fe8773b1534063504fc1ab516b506da; anchor=## Exact source-to-target mapping]","Lamp-background checkpoint scoped rereview of logical-Unicode visual_text, script/input-alignment and directional layout helpers. Two application-owned preference strings have Persian translations; board names, protocol values and sampled data stay untranslated. Current preference/i18n hashes rebound, not whole-dictionary parity. | Actual donor platform/UI face loading, Vazirmatn and Phosphor registration, application dictionary, identity-preserving visual_text, script detection, input alignment and horizontal/vertical direction helpers retained and wired into real native controls. | Monospace Persian fallback and preference-driven priority refresh added without discarding later widget font registrations. Actual donor contextual glyph test adapted to both families; saved Unicode and peer identifiers never manually reversed. | Native control/grid checkpoint scoped rereview: donor visual_text, contains_arabic_script, input_alignment, layout/vertical_layout and logical-Unicode/alignment tests were compared with current singleline_text_edit and changed primary action styling. Input alignment still follows logical text/direction with centered Button-font geometry; action labels remain localized with explicit Button font. New key-box application-owned translations do not translate peer identifiers or reverse text. Font installation and shaping/font-retention tests remain intact. Updated current target/proof hashes after examining these portions, without claiming a new complete-file donor read or build/capture acceptance. | Preferences geometry checkpoint reread complete actual src/ui/i18n.rs through EOF at canonical Pealayer revision 5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad. Persian/System/English selection and independent automatic/LTR/RTL direction controls remain identical, with logical Unicode, native shaping and the retained bundled Vazirmatn path. The footer now reserves actions on the appropriate trailing edge, with clipped status in its remaining lane; its regression covers both directions. Untranslated application-management copy, named emphasis/font-family preferences and deployed Persian visual acceptance remain open, not resolved by a consumer hash refresh.","configure_preferred_fonts/install_ui_fonts UiFontFamily cache, normal/monospace font-family preferences, named pealayer-status-strong and pealayer-status-mono-strong emphasis faces, newer generic hardware/effects/status dictionary additions [pending] | Media playback, cue/timeline reveal and keyframe-specific dictionary keys [not-applicable] | Manage folders, Manage folder, New folder, Expand folders, Collapse folders, Move to folder, Delete folder, Confirm delete, Channels will be moved to Ungrouped, pending folder change and attached-board folder configuration copy [pending] | Separate ttf_parser coverage assertions and exhaustive native surface translations [pending]","configure_preferred_fonts/install_ui_fonts UiFontFamily cache, normal/monospace font-family preferences, named pealayer-status-strong and pealayer-status-mono-strong emphasis faces, newer generic hardware/effects/status dictionary additions: Fully reread all 1665 current donor lines through EOF. Pakar retains its existing registry-preserving language font installation and both-family Persian fallback; it does not yet expose these font-family preferences or named status emphasis faces. Generic hardware/action/status translations still need actual corresponding Pakar consumers and localization tests; only media/timeline-specific copy remains excluded. | Media playback, cue/timeline reveal and keyframe-specific dictionary keys: They describe explicitly excluded media business; no corresponding controller surface exists. No generic UI/tooling capability is excluded on that basis. | Manage folders, Manage folder, New folder, Expand folders, Collapse folders, Move to folder, Delete folder, Confirm delete, Channels will be moved to Ungrouped, pending folder change and attached-board folder configuration copy: Generic grouping behavior is useful but not yet integrated with actual board cell/group contracts. No fake folder actions or completion claim; retain on issue #4 for real grouping and localized acceptance. | Separate ttf_parser coverage assertions and exhaustive native surface translations: Avoid introducing a duplicate font parser dependency: actual renderer glyph/contextual and font-retention tests pass in 8849ab8 Windows CI after headless output repair. The run completes 114 passed/1 unrelated menu-label failure; no abort. Additional Unicode, production rendering, device-settings and status/transport copy remain unaccepted.","desktop/src/ui/i18n.rs:1559 [UTF8-LF sha256=0f06c9f2f84e5710fe5bbea7a83221c0c527e61ba52ab0b63ee032974ced6739; anchor=fn contextual_persian_in_labels_and_monospace_inputs] | desktop/src/ui/i18n.rs:1513 [UTF8-LF sha256=0f06c9f2f84e5710fe5bbea7a83221c0c527e61ba52ab0b63ee032974ced6739; anchor=fn changing_language_preserves_widget_fonts] | tests/localization_test.mjs:42 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=Peer text identical to a dictionary key]","","Inspect real deployed Persian inputs/menus/dialogs and finish application-copy/generic grouping parity. Actual 8849ab8 font-retention/shaping tests pass, but full native release remains open with one menu-label assertion; local cache budget remains enforced.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/icon_catalog.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0f62f471bc1a6fd3a1f0af3b03df11cd2a6f5a47f3acc0735dea7fd356c45c96","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/icons.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cd56a5849a0be621d8472b440c9cbac8b91bcaf603d228cb6148bba1eb554fc9","native-dropdowns | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/8","parity-gap","complete","desktop/src/ui/icons.rs:581 [UTF8-LF sha256=cd5fe34a628b22220e9be47bf4de262e5e8eeec8e7c045f6dde76414c511a40b; anchor=pub fn searchable_workspace_icon_picker(] | desktop/src/ui/shell.rs:4404 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=icons::searchable_workspace_icon_picker] | desktop/src/ui/menu.rs:7 [UTF8-LF sha256=80c2a5130e97fd8dfe62206034a48347b691fe06bb65998049937afeee37f602; anchor=pub fn submenu(] | desktop/src/ui/key_boxes.rs:56 [UTF8-LF sha256=eb5a980c1b2cf7498e43bf79510603dec52cd5e922f29cf0bcbb81d5d56b89b8; anchor=fn context_menu(]","2026-10-27 scoped submenu rereview: actual icons::submenu Phosphor right_text(CARET_RIGHT) and SubMenuButton implementation imported into desktop/src/ui/menu.rs and consumed by the key-box Selection and Panels menus. The existing complete-file receipt is not promoted to full application parity. | Lamp-background checkpoint scoped rereview of actual searchable_workspace_icon_picker and shell workspace picker call: same presets, stable stored name, fallback, localized search and shared native picker remain. New IPC preference does not change icon behavior; only inspected shell consumer hash refreshed. | Fully reread all1190 current donor lines through EOF. Production Phosphor vocabulary, stable names/kind fallback, searchable list/grid picker, UTF-8-safe match highlighting, bounded popups and disclosure/submenu helpers remain retained. New catalog/density/localized-title/fixed-header-slot behavior is separately pending, not certified by the prior eleven tests. | Actual donor regression tests restored: eleven tests, including interactive egui-frame search/select/reopen, both themes and popup width. | Scoped hover/grid checkpoint rereview: donor searchable_workspace_icon_picker (lines 620-647) and current Pakar draw_workspaces consumer preserve named presets, localized searchable picker and saved workspace icon selection. The key-box panel delegation does not alter that consumer. Refreshed the shell target hash after reading the actual call site; this is a scoped rereview, not a new complete donor-file review or deployed/native visual acceptance.","control_icon_catalog with icon_catalog.rs complete1500+ repertoire and new alias tests; translated_icon_name/localized search and preset title tests; searchable_icon_button_sized/with_slot and fixed_header geometry test; density chevrons [pending] | every_native_icon_editor_uses_the_shared_searchable_picker donor-only editor path list [replaced] | DropdownUiExt, dropdown_choice, register_choice and dropdown::ComboBox in searchable icon pickers [replaced]","control_icon_catalog with icon_catalog.rs complete1500+ repertoire and new alias tests; translated_icon_name/localized search and preset title tests; searchable_icon_button_sized/with_slot and fixed_header geometry test; density chevrons: Pakar retains its prior Phosphor presets/search/list/grid helpers, not the expanded donor catalog or new localized title/density/fixed-slot consumer contracts. icon_catalog.rs remains an independently pending dependency; do not copy unavailable presets or claim the new tests imported merely by reading this file. | every_native_icon_editor_uses_the_shared_searchable_picker donor-only editor path list: That assertion references Pealayer media/4D editor files not present in this product. Replaced only its call-site assertion with Pakar's actual workspace editor; the other ten tests were imported. This does not excuse missing generic editor features elsewhere. | DropdownUiExt, dropdown_choice, register_choice and dropdown::ComboBox in searchable icon pickers: Actual donor search-focus registration, list choices, custom grid registration and lifecycle wrapper are imported against the fully tracked dropdown source. Product context IDs are adapted; all eleven existing icon tests remain. Native execution is separate proof, and UI-wide picker consumer parity remains pending.","desktop/src/ui/icons.rs:839 [UTF8-LF sha256=cd5fe34a628b22220e9be47bf4de262e5e8eeec8e7c045f6dde76414c511a40b; anchor=fn pakar_workspace_editor_uses_the_actual_shared_searchable_picker()] | desktop/src/ui/key_boxes.rs:771 [UTF8-LF sha256=eb5a980c1b2cf7498e43bf79510603dec52cd5e922f29cf0bcbb81d5d56b89b8; anchor=fn box_clicks_reuse_selection_and_secondary_menu_never_actuates()] | desktop/src/ui/icons.rs:968 [UTF8-LF sha256=cd5fe34a628b22220e9be47bf4de262e5e8eeec8e7c045f6dde76414c511a40b; anchor=fn icon_picker_search_click_filter_select_and_reopen_work_in_both_forms()]","","Imported compact/control picker helpers are not all used by current panels; UI-wide application/action parity needs separate file reviews. | Shared dropdown dependency now has a complete-read comparison; preserve remaining generic consumer contracts and verify native runtime without claiming whole-file parity.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/layout.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d60b1913e9f5beb1417ef0951ccaadcdf89cd555a32279c3e6c70f14a94a3e17","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/layout/channel_folders.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","eb19245ab455a5eaee074f6e242ae9894f3d1dcabdf5d4be9396f9a70af63863","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/media_inspector.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4a7045dfb8499d83ccaa3c21d7a9684b3fccebfcb616efbd3ecbccacff9f53a0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/media_track_properties.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","df7757898953048d45cd51ad3c7da3d6eb76abb008c08f20f374b7b01bb0aa39","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/media_tracks.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bf883e6c5a330304782a7e0fc1052b07f8df83091add1957fae4c018bf092a82","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/menu.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a0196878c7b76b898d0a5791b122181d9045d3fbbe9f56de52bc43242edf2d9d","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/ui/menu.rs:15 [UTF8-LF sha256=80c2a5130e97fd8dfe62206034a48347b691fe06bb65998049937afeee37f602; anchor=pub fn top_menu_button(] | desktop/src/ui/shell.rs:1426 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=menu::top_menu_button(ui, crate::ui::i18n::text(""File"")] | desktop/src/ui/connection_controls.rs:90 [UTF8-LF sha256=02bbb46d280c606868f0f18220cb092c0dca2e07f9b06aa31bee1e4f4625ec65; anchor=pub fn draw(] | docs/NATIVE-MENU-COMPARISON.md:32 [UTF8-LF sha256=7319a38240f9c23a43f5a18c2f20d05b0c9d5ff273cf0e8f28b2ba98aa1aabd8; anchor=## Exact donor menu mapping and remaining decisions]","Actual top_menu_button body imported with only application state ID/public visibility adaptation; all four production menu headings use active-menu sibling hover switching. | Actual Button::shortcut_text idiom replaces space-padded primary labels in all six shortcut rows; separate right-aligned muted atoms are supplied by the same egui 0.36.2 dependency. Existing dispatch/Phosphor submenu retained; user-requested height policy unchanged. | Earlier independent WebSocket/USB popup adaptation is superseded by the user-required single selected Wi-Fi-or-USB dropdown/lifecycle. Retained actual selector persistence, manual OS hardware paths, lazy factual enumeration and explicit Connect/Disconnect; no Both mode or automatic fallback. Complete donor readiness and fixed endpoint geometry remain pending. | Current complete 883-line donor and full mapped Pakar menu.rs were reread by the status/front-panel agent. The actual top-menu helper and six shortcut_text consumers remain retained; this does not implement the newly added endpoint trigger.","TrackMenuState, track_menu_state, format_track_label; video/recent/close/media info/folder/timeline and Audio/Subtitles/Chapters blocks; track_menu_is_contextual_to_media_and_discovered_tracks and test_format_track_label_variations [not-applicable] | draw persisted application_shortcuts and Edit configuration action [pending] | draw ordered_workspace_profiles/active selection/reset save acknowledgment [pending] | draw Help Language/Direction/Keyboard Shortcuts menus [pending] | estop_button, draw_estop_release_dialog and draw shared-latch readiness/hide cluster [pending] | draw connection requested/connecting/connected status/manual discovery and remote connection/browser/download actions [pending] | DropdownUiExt selected workspace/language/direction entries and new unified dropdown lifecycle [pending] | Current header_endpoint_combo fixed 154-pixel clipped trigger/full 240-pixel popup and density/font/disabled-hover geometry tests [pending]","TrackMenuState, track_menu_state, format_track_label; video/recent/close/media info/folder/timeline and Audio/Subtitles/Chapters blocks; track_menu_is_contextual_to_media_and_discovered_tracks and test_format_track_label_variations: These require media tracks, chapters, video/timeline state or a media undo stack expressly excluded from Pakar. Their disabled Undo/Redo placeholders are not functional controller actions. Generic config-folder/device information actions remain pending separately. | draw persisted application_shortcuts and Edit configuration action: Current fixed accelerators match dispatch but are not the donor's validated persisted rebinding model. Restore parser/dependencies/non-media tests and controller action ownership; shortcut color/alignment does not certify rebinding. | draw ordered_workspace_profiles/active selection/reset save acknowledgment: Manager exists but inline ordered active-profile selection/state and immediate reset persistence are not restored. Requires profile identity/persistence acceptance rather than labels alone. | draw Help Language/Direction/Keyboard Shortcuts menus: Existing English/Persian preference lacks complete System language and Auto/LTR/RTL/configurable bindings contracts. Nonfunctional entries must not be shown as completed features. | estop_button, draw_estop_release_dialog and draw shared-latch readiness/hide cluster: Generic vector control, authoritative readiness, release confirmation/cancel/skip preference and synchronized remote release remain useful safety imports. Remove only media pause; adapt actual hardware latch contracts and tests. | draw connection requested/connecting/connected status/manual discovery and remote connection/browser/download actions: Pakar has connection/typed actions and firmware tools, but full donor lifecycle/readiness/authenticated endpoint adaptation is not compared or accepted. Media remote browser cannot be blindly substituted for firmware management. | DropdownUiExt selected workspace/language/direction entries and new unified dropdown lifecycle: The tracked shared dropdown module is now fully read and imported, with native consumers and donor tests. This does not implement every generic consumer contract in this file: render-rate policy, workspace/language/direction actions and complete board EEPROM enum ownership remain independently pending. Native execution and visual acceptance are reported separately. | Current header_endpoint_combo fixed 154-pixel clipped trigger/full 240-pixel popup and density/font/disabled-hover geometry tests: Pakar now has one unified method trigger and selected-method details, not independent route popups. It reuses240px popup choices but not the donor154px endpoint trigger/dynamic-density geometry assertions. Compare actual long-text/font/scale layouts before claiming geometry parity; no duplicate or pretend-ready control should be added to match labels.","desktop/src/ui/menu.rs:75 [UTF8-LF sha256=80c2a5130e97fd8dfe62206034a48347b691fe06bb65998049937afeee37f602; anchor=fn shortcuts_are_separate_muted_right_aligned_atoms_in_both_themes()] | desktop/src/ui/menu.rs:198 [UTF8-LF sha256=80c2a5130e97fd8dfe62206034a48347b691fe06bb65998049937afeee37f602; anchor=fn sibling_hover_switches_only_an_already_open_menu_and_clears_closed_state()] | tests/native_menu_test.mjs:12 [UTF8-LF sha256=8d7540f4c8abd4a39414d18cd3bedc70bbb8ab05af4077c206a4ce11beea6a01; anchor=actual donor helper must match after application ID/visibility/whitespace adaptation] | tests/native_render_lifecycle_test.mjs:31 [UTF8-LF sha256=655bb0a62d3144718b1b13d350fb7e416006b6c468e7e1445bbd2ebcb7c946dc; anchor=const compact=source=>source.replace]","","Restore remaining useful generic menu contracts above against actual dependencies; see exact function-level mapping in NATIVE-MENU-COMPARISON.md. Native CI paint/pointer tests and running-app visual acceptance are separate from source guards. | Shared dropdown dependency now has a complete-read comparison; preserve remaining generic consumer contracts and verify native runtime without claiming whole-file parity.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/mod.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a12993c8ee9d578b72197d2bef9a3e173472d3bd2e22d46511d98339099c96f7","localization | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/monitor_controls.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","058ed468407494461a2153a042c9fee80d89b24851c1469e7a45efc30ff79f0b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/motion.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e9ac14b42fcdc0d1411373bbcdd330560a2a58ac1c4a3b6cccb6ad40662c249b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/open_url.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e5b7ede0460080e1f08fba0aa7ea8455e81f0e41c15de8ace675d9dd7a9904ad","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/palette.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c169db6a61b79ebb2ce00f0ca442305eefeea7b34740720a2cdf6424d6fef85d","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","desktop/src/ui/palette.rs:36 [UTF8-LF sha256=3d04f723252650661f9fdacd2e1929f3ad28fac4cd3dc40720bca32eac4f3a7c; anchor=pub fn apply(]","Native semantic visual-role mapping and actual palette JSON; appearance geometry is not overwritten. | Reread all 166 current donor lines and reviewed current Pakar apply and new production-helper geometry tests. Retained actual semantic palette roles/catalog while completing active/open widget colors so egui stock white two-pixel pressed chrome cannot override the fixed-border color-only policy traced to PCController f2260e30525de82a95b00adddd2ebb3eda8d8443 and a304c3ec366b0e9c11634526587ee9e5575acdff. Widget corners/expansion are now explicit shared chrome; window geometry remains untouched. Pealayer 5b3d5c150d714a3f951378867791b06855155094 inherited-stroke/Button-font correction is exercised through the real semantic helpers, including menu zero-width inheritance. Root canonical native Test checkpoint reports 121 ui:: filtered tests passed, zero failed. Shared-preferences parity and runtime/human acceptance remain open.","WebAppearanceState and donor native/Web shared-preferences assertions [pending] | Donor default Native palette [replaced]","WebAppearanceState and donor native/Web shared-preferences assertions: Pakar lacks the shared native/Web preferences contract. These are useful generic requirements, not media business logic; omitting them cannot be justified as superior. | Donor default Native palette: Pakar chooses Studio as its product default. Both palettes remain available; this is a preference decision, not a measured improvement.","desktop/src/ui/palette.rs:121 [UTF8-LF sha256=3d04f723252650661f9fdacd2e1929f3ad28fac4cd3dc40720bca32eac4f3a7c; anchor=fn donor_surface_text_roles_and_geometry_are_preserved_in_both_themes()] | desktop/src/ui/button_geometry_tests.rs:146 [UTF8-LF sha256=4985dc82110f0948c5153b5e9b7b472054b0f62d10a8e2dbb6a38a664848a6a1; anchor=fn button_hit_slots_and_caption_ink_survive_every_interaction_state()] | desktop/src/ui/button_geometry_tests.rs:151 [UTF8-LF sha256=4985dc82110f0948c5153b5e9b7b472054b0f62d10a8e2dbb6a38a664848a6a1; anchor=fn semantic_actions_preserve_inherited_zero_stroke_menu_geometry()]","","Embedded Web consumes the same JSON catalog through a stale-generation check. Complete mobile catalog use and live native/Web preference broadcast/readback; pure donor host-resolution tests do not prove connected-host synchronization.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/peer_browser.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bb917e1b1f8f191f327732916611feb3d118cb36832db167a4277b48d71a81b8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/preferences.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1fa2482a389fee84c79eef3d69ad8cc0ecb922c319fd222219af3e90d7e6f965","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","desktop/src/ui/preferences.rs:365 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=egui::Panel::bottom(ui.id().with(""preferences-footer""))] | desktop/src/ui/preferences.rs:67 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn sync_connection_owner(] | desktop/src/ui/preferences.rs:96 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn sync_status_owner(] | desktop/src/ui/preferences.rs:315 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn connection_summary(] | desktop/src/ui/device_settings.rs:54 [UTF8-LF sha256=c087cbbde3bfc194b6002b10a3b63bb16ac4e253ef33d1a6f951ab2e566a42f6; anchor=fn avr_page(] | desktop/src/ui/shell.rs:2909 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=pub(super) fn draw_led_settings(]","Lamp-background preference uses existing Workspace editor and actual imported saved/current/preview baselines, explicit Save and Discard. Parent agent reread all 2308 donor lines; evidence pass independently inspected donor draft lifecycle and current Workspace/Save/Discard consumers. Optional setting defaults false for existing profiles, serializes without other changes and is enabled for requested user only through guarded app-local IPC. Open Preferences blocks remote application rather than overwriting drafts. Roundtrip and preview/discard tests are source proof, not device/deployment claims. | Fully reread all2308 actual donor lines through EOF, including draft lifecycle, helper ownership, control rendering and tests. Pakar retains saved/config/previewed baselines, live preview, dirty close confirmation and rail/body/footer layout; this is a narrow adaptation, not complete Preferences equivalence. | Adapted actual PreferencesDraft::sync_external_appearance triple-baseline merge to sync_connection_owner. External selected method/enabled/endpoint/user/port update all three baselines while preserving unrelated dirty edits. Preferences now shows only the selected method's summary and delegates clean drafts to the single canonical connection dialog; unrelated Save cannot restore stale connection owner fields. | Status-bar pass extends that same live-owner triple-baseline mechanism with sync_status_owner: visibility, normalized order and leading/trailing placement update saved/current/previewed Preferences baselines without committing or discarding unrelated appearance edits. A footer change therefore survives a subsequent Preferences Save or Discard. The regression covers clean and dirty drafts; source coverage is not an installed-runtime claim. | Adapt the existing donor draft separation and clean-navigation rule to a contextual Preferences Board tab for every acknowledged device, not only buzzer boards. Device settings opens only after PC preferences are saved/discarded; no MCU draft is copied into AppConfig. The LED settings page invokes the actual shared LED controls rather than a duplicate engine or link-only placeholder; USB settings header shows its selected port only. | Preferences footer checkpoint fully reread the actual 2308-line donor at C:/Users/David/AppData/Local/Programs/Pealayer/source/Pealayer/src/ui/preferences.rs, with matching original-byte hash and revision 5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad. Adapt draw_preferences_editor's bottom-panel-first then CentralPanel allocation, the compact category selector below 560px, and the native host's 12px top/side but 2px bottom margin. Remove the guessed 260px body minimum; short viewports scroll the rail/body within real available space. Reserve Save/Cancel before truncatable status so long status text cannot displace actions. Keep all seven Pakar categories, capability gating, search, draft baselines and explicit save/discard behavior. This is geometry/draft preservation, not helper-process or full typed-Preferences parity.","NativePreferencesController helper process/HWND ownership, independent exit wake/watch, owned chrome and peer-active embedded authority [pending] | External ConfigFileWatcher90ms debounce, shared server config authority and complete dirty external-file conflict merge [pending] | preferences_contract typed sections/groups, content-derived responsive rows, inline checkbox and ChoiceSlider/MultiSelect/numeric-step controls, density/font/motion parity [pending] | Config-file open/copy/edit/folder menus, complete reload/import/export ownership, timed footer feedback and full save/preview failure lifecycle matrix [pending] | Playback/track/subtitle/history/media-association options and mpv audio refresh [not-applicable]","NativePreferencesController helper process/HWND ownership, independent exit wake/watch, owned chrome and peer-active embedded authority: Pakar uses its existing deferred egui viewport rather than the donor helper process. A matching appearance or native-dialog option does not establish owner-window, helper-exit cancellation or focus/chrome equivalence; import only after actual process/interop dependencies and host lifecycle tests are compared. | External ConfigFileWatcher90ms debounce, shared server config authority and complete dirty external-file conflict merge: The actual triple-baseline algorithm is adapted to live connection, workspace and status-bar owner fields. Other persisted/external fields and watcher/readback lifecycle are not covered by this change and must not overwrite unrelated drafts. | preferences_contract typed sections/groups, content-derived responsive rows, inline checkbox and ChoiceSlider/MultiSelect/numeric-step controls, density/font/motion parity: Existing Pakar controls implement only part of the donor editor. The full typed-contract dependency and dynamic layout/control tests were not imported in this slice; no all-controls or visual parity claim. | Config-file open/copy/edit/folder menus, complete reload/import/export ownership, timed footer feedback and full save/preview failure lifecycle matrix: Basic import/export and dirty Save/Discard behavior already exist, but do not implement the donor's complete picker/config authority, transient status and helper-exit matrix. Generic file-picker/control mechanisms remain useful, not excluded media business. | Playback/track/subtitle/history/media-association options and mpv audio refresh: The requested controller is explicitly mpv-free and has no media playback domain. Generic preference lifecycle, navigation, picker and rendering mechanisms remain independently pending rather than excluded with those options.","desktop/src/ui/preferences.rs:759 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn preferences_footer_stays_at_the_bottom_in_both_hosts_and_short_pages()] | desktop/src/config.rs:397 [UTF8-LF sha256=b84801a85e31a44b2691bd5f6ccefea0106d799952b0fb61e2d6162ee11b9414; anchor=fn cell_background_preference_is_opt_in_and_roundtrips_without_other_changes()] | desktop/src/ui/preferences.rs:918 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn lamp_background_preview_and_discard_preserve_saved_configuration()] | desktop/src/ui/preferences.rs:942 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn external_connection_owner_updates_all_baselines_without_losing_unrelated_drafts()] | desktop/src/ui/preferences.rs:996 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn status_bar_changes_survive_preferences_save_or_discard_without_erasing_drafts()] | desktop/src/ui/preferences.rs:1012 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn connection_summary_is_contextual_and_dirty_preferences_cannot_open_another_editor()] | desktop/src/ui/preferences.rs:889 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn board_settings_navigation_preserves_unsaved_application_preferences()]","One connection owner instead of conflicting Preferences editors, while preserving unrelated drafts and the donor's triple-baseline merge mechanism.","Compare/import the pending generic helper/controller/config-watcher and typed-control dependencies, then verify native visual/navigation/focus and dirty concurrent-owner behavior in the installed app. Guarded Rust tests are not live USB or human acceptance.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/pwm_policy.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6d71c9813920b32dc833c90648f005d4a0687478627afe4c2edf302af7c971ed","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/remote_location.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","55cacd2e22833a71c5b4717c51854823d15f0ea01eed44c96c8a1edad82460ea","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/rf.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c5fb24f320b3a230bdf183d5a362e5ad83d86e422643c944bdc32d22ff2d96f3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/seek_preview.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0500fdc35824e3a1acdca90e5953ecf4eb9c2db7065c63d2324cc963a4ec6957","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/status_bar.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e407025a1ee959230634f8350de20d58432313d6dd0f734ada735b8fc9fec4db","status-rgb | device-context | ui-shell","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","desktop/src/ui/status_bar.rs:409 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn item_menu(] | desktop/src/ui/status_bar.rs:36 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=impl<'de> Deserialize<'de> for Items] | desktop/src/ui/status_bar.rs:296 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn layout_plan(] | desktop/src/ui/status_bar.rs:186 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=pub struct Progress<'a>] | desktop/src/ui/shell.rs:891 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn save_status_bar_preferences(] | desktop/src/ui/shell.rs:1653 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=let firmware_progress = self.firmware_observation().filter(|p| p.active);] | desktop/src/ui/connection_controls.rs:90 [UTF8-LF sha256=02bbb46d280c606868f0f18220cb092c0dca2e07f9b06aa31bee1e4f4625ec65; anchor=pub fn draw(] | docs/CONNECTION-CONTROLS.md:1 [UTF8-LF sha256=002ee046e9c206a4cc241ad2b9033971b4933959d8e14f43958848403879f21d; anchor=# Front-panel transport dropdowns] | firmware/esp/src/WebUi.h:2566 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=function statusRgbOutput] | desktop/src/status_rgb.rs:46 [UTF8-LF sha256=3dbe61cf121e44b14fe047427fbe9d0b8e60735baa445ad3116310560631965e; anchor=pub fn retain(] | mobile/lib/status_rgb.dart:52 [UTF8-LF sha256=458f867c97d38107b37fc399dfc55f1ad2f786ce5e236a9a9b2c048d0b4fbfd0; anchor=class StatusRgbPreview]","Current complete source read through EOF independently by the status/front-panel and network/UI agents; selected target changes reviewed again during evidence integration. Actual per-item hide context menus, persistent visibility choices, bar-level restore menu and small truncating message labels remain adapted. Transport controls remain usable offline without claiming hardware readiness. | Actual status_led_display_color direct emitted RGB semantics, circle radius6, hover metadata/copy-color/hide menu and no-double-dimming test adapted into native status bar. The original20x22 donor slot is now adapted to a stable28x24 control in the compact30px Pakar bar, preserving the emitted RGB contract rather than implying exact geometry copying. Web uses the same authoritative observed channels, individual availability/output and fresh-peer guards; no locally reconstructed status animation. | Added compact physical RGB observations across native/Web/mobile without full-workspace refresh: exact board/boot, output validity and monotonic RGB revision gate each update. Observed RGB never renews the whole board lease, alters selected cells or replays old animation. Native and Flutter dedicated settings/preview modules require explicit board observations, persisted ACK/readback and safe onboard-pin confirmation; generic donor custom profile/cue editors remain pending. | Status-bar checkpoint reread all1737 actual donor lines through EOF at the recorded5a6961ce revision and exact original-byte hash. Adapt render_widget/text_widget/slot_width and item_menu/group_menu to eight contextual Pakar widgets: connection, observed physical RGB, hardware, network, measured update progress, events, message and Preferences. Fixed-height inside-only strokes and bounded caption slots keep hover/focus and changing counts/text from shifting controls; narrow widths collapse labels and move actions to a keyboard-owned overflow rather than wrapping. Persian labels and RTL placement use the existing imported localization and dropdown owners. | Adapt the donor's independent normalized order/visibility/leading-trailing configuration. Custom Items deserialization preserves all sixteen combinations of the original four boolean preferences; the new network widget inherits a hidden legacy telemetry preference, then becomes independently controllable. Unknown or duplicate order IDs are normalized without losing known widgets. Per-item menus provide move earlier/later within the selected side, place at start/end, hide and restore; direct pointer drag-and-drop remains a separate unported feature. | Project one existing firmware_observation into the footer: current peer/boot-owned phase and measured bytes, with a finite optional fraction. Unknown or prepare/verify progress is not fabricated from elapsed time, and reaching100percent is not a completion verification claim. The status renderer consumes passed-in cached observations only and performs no device, network, process or filesystem probes. Explicit Save is coalesced to one returned action; shell persistence changes only status_items in the saved AppConfig after draw, preserves unrelated drafts/dock layout and surfaces failures without claiming Saved. The live requested view remains in RAM on a save error.","current_status_message update-manager priority and OSD lifetime; fullscreen exclusion; workspace selector [pending] | draw_hardware_status board_ready/coordinator/active_transport distinction and telemetry voltage/current/temperature/warnings [pending] | prepared_timeline, media-rate/fps mode, hardware timeline revision/feedback; estop_active label [not-applicable] | Pealayer hardcoded connection dot RGB [replaced] | UI render-rate toggle/context policy, dropdown-backed FPS menu, dividers/fonts/value ranges/chart history and complete host/download operation inventory [pending] | Pointer drag-and-drop across anchored groups and drag-out-to-hide [pending]","current_status_message update-manager priority and OSD lifetime; fullscreen exclusion; workspace selector: The new bar has localized/RTL fixed-slot actions and real firmware progress, but does not import the donor's transient OSD lifetime, fullscreen exclusion or interactive workspace selector. Existing workspace controls elsewhere are not proof of this footer-specific behavior. | draw_hardware_status board_ready/coordinator/active_transport distinction and telemetry voltage/current/temperature/warnings: Pakar peer freshness/ACK gates and actual S3 physical RGB mirror now exist, but generic coordinator, sensor and warning inventories still need actual adapters before display. Native dropdown live indicators and local pixel-writer acceptance are not independent physical measurement. | prepared_timeline, media-rate/fps mode, hardware timeline revision/feedback; estop_active label: Prepared media/timeline playback is expressly excluded from this mpv-free controller. No E-stop contract is acknowledged by the current pair; reusable latch safety remains tracked in menu comparison, not fabricated as present. | Pealayer hardcoded connection dot RGB: Pakar connection presentation uses current command-route authority, contrast-aware light/dark success colors and shared neutral/error visual roles; physical RGB is a separate measured-output widget, never a locally synthesized connection animation. | UI render-rate toggle/context policy, dropdown-backed FPS menu, dividers/fonts/value ranges/chart history and complete host/download operation inventory: Independent widget ordering/visibility and current board firmware progress are now implemented; measured UI/LED render-rate selection, bounded sensor history, user metric limits and the complete host/download manager inventory remain useful unported contracts. Do not add fake telemetry, initialize a service during paint or label media-FPS exclusions as completing generic performance monitoring. Native execution and visual acceptance remain separate evidence. | Pointer drag-and-drop across anchored groups and drag-out-to-hide: Move earlier/later, leading/trailing placement and hide/restore are available through persistent keyboard-accessible menus. The donor's original-render drag ghost, pointer grab offset and drag-out affordance are not implemented by those menu operations and are not claimed as parity.","desktop/src/ui/status_bar.rs:781 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn rgb_requires_observed_output_and_does_not_double_dim] | desktop/src/ui/status_bar.rs:571 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_legacy_visibility_migrates_all_combinations_without_reviving_telemetry()] | desktop/src/ui/status_bar.rs:586 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_order_normalizes_unknown_duplicate_and_malformed_entries()] | desktop/src/ui/status_bar.rs:604 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_placement_menu_click_moves_group_and_saves_once_without_panicking()] | desktop/src/ui/status_bar.rs:629 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_connection_and_rgb_require_current_route_not_cached_peer_or_websocket()] | desktop/src/ui/status_bar.rs:650 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_measured_progress_distinguishes_unknown_zero_and_completion()] | desktop/src/ui/status_bar.rs:668 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_progress_and_focus_use_visible_accent_with_actual_dark_app_palette()] | desktop/src/main.rs:5919 [UTF8-LF sha256=919d2a1ebeaae2e2694270a8251b93cf4fc56ba882be87a3cdce5297227cff32; anchor=fn status_bar_startup_message_respects_disconnected_and_selected_route()] | desktop/src/ui/status_bar.rs:701 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_real_egui_slots_stay_single_row_in_narrow_rtl_and_scaled_views()] | desktop/src/ui/status_bar.rs:726 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_telemetry_changes_preserve_slot_bounds_and_never_request_save()] | desktop/src/ui/status_bar.rs:741 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_buttons_dispatch_click_and_keyboard_without_passive_actions()] | desktop/src/ui/status_bar.rs:763 [UTF8-LF sha256=1cca3d0a2080d33b1239ca22fa3f975c071c3a2c2c4f8cab8c1d87c136e744a9; anchor=fn status_overflow_retains_capability_gated_actions_and_arrow_keyboard_access()] | tests/interface_settings_test.mjs:46 [UTF8-LF sha256=102d6c411b732bad8106dd09358da3df3989d1140aa77c87a884c8072c66c6f3; anchor=Actual emitted RGB is not brightness-scaled again] | desktop/src/status_rgb.rs:157 [UTF8-LF sha256=3dbe61cf121e44b14fe047427fbe9d0b8e60735baa445ad3116310560631965e; anchor=fn compact_rgb_updates_only_the_matching_peer_and_newer_rgb_not_hardware_clock] | mobile/test/status_rgb_test.dart:70 [UTF8-LF sha256=908b1d6f4f4832dea297e0e36b9ab87500754569b595938d3cecfb95870bb61f; anchor=physical RGB is observed not synthesized or double dimmed] | tests/connection_controls_test.mjs:1 [UTF8-LF sha256=e3e741ccd20dcb88698a0a7cd6767b8f05921cc344e182e96a3104d6743dcc68; anchor=Source wiring guard only.] | desktop/src/ui/connection_controls.rs:378 [UTF8-LF sha256=02bbb46d280c606868f0f18220cb092c0dca2e07f9b06aa31bee1e4f4625ec65; anchor=fn lifecycle_is_one_explicit_action_and_disconnect_retains_port()]","","Native migration, progress, fixed-geometry, input and Preferences-owner checks passed (15 status tests plus the isolated viewport guard); final release framebuffer captures were inspected for connected, disconnected, warning and progress states. Candidate staged at executable SHA25602505274f29498991b2f9e693274f73e4b4cbe7b44738d1d03e2a547e3e00aab. Installed-runtime and human acceptance remain open; isolated fixtures do not prove live board health or physical RGB. Restore remaining generic status lifetime/readiness contracts in issues #3/#10. | Shared dropdown dependency now has a complete-read comparison; preserve remaining generic consumer contracts and verify native runtime without claiming whole-file parity.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/subtitles.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3617ac13b09591572d635550d0dac359e505e6768d1e010ec29ddf26a35e9c70","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/timeline_toolbar.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","99f5d7b079024850b5f7e38543c3e8c70f56d309d72ae4308f7e8c95f67235d4","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/toasts.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","30d4ff8c9a30b783f9513a3508787e9ca233881bb3a9bda2e1b9f9cd1bc9c989","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","scoped-improvement","complete","desktop/src/ui/toasts.rs:4 [UTF8-LF sha256=c6dee228dbe78715b11711d60db187601a7d116499677ea8e6499ddb4e69e5e7; anchor=pub fn draw(ctx:]","Actual donor root-only overlay: four newest messages, severity icons and semantic palette roles, bounded width, scrollable text, title, dismiss and deadline-driven repaint. The current optional details disclosure and localized label are imported unchanged in behavior.","interop::get_live_config() accessor [replaced]","interop::get_live_config() accessor: Pakar owns the same live palette through config::live(). The OS-native notification route is separate; adding an explicit in-app enable preference does not remove the donor overlay when enabled.","desktop/src/ui/toasts.rs:53 [UTF8-LF sha256=c6dee228dbe78715b11711d60db187601a7d116499677ea8e6499ddb4e69e5e7; anchor=if let Some(detail) = toast.details.as_ref()] | desktop/src/messaging.rs:199 [UTF8-LF sha256=57e357298d9dd8ae515a21bd13a4959ef77e684b345aed02da9dab818f5a204c; anchor=fn concise_notification_retains_bounded_original_diagnostics()]","Retains the donor overlay and detailed disclosure while adding Pakar's explicit in-app notification preference, concise user-facing failure summaries, bounded technical details, and separate privacy-safe Windows notification delivery.","This native overlay mapping is not shared Web/TUI message-delivery parity.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/video.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ec5937789cd5c0cc0daf1f717898a0bffce330756760a1c84b7e8202e7166860","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/ui/workspace_profiles.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","410d274f51e5e7db7ce81582d36166a97240b097e993cec5fee8707a95183e2f","cell-assignments | connection-resilience | ui-shell","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","mobile/lib/output_panel.dart:27 [UTF8-LF sha256=3cf8895bbbdfc82cb7f4c12ed8e1895623099975722753d5dc722d3eb7ebe9c3; anchor=class OutputPanel] | assets/web/feature-workspaces.js:108 [UTF8-LF sha256=13a51897342b90e6d328d84da0c7272fd6f909fb84996de23a164bb48feb88fa; anchor=function diagnosticWorkspace(value)] | web/index.html:2489 [UTF8-LF sha256=aa518a96eea2dd7d787cb0a31d5191c78886e2e31605eda64458a0cea728835d; anchor=function workspaceDiagnosticDraft()] | mobile/test/output_panel_test.dart:411 [UTF8-LF sha256=b75b25f46b391a84c0400f08361c4c520e2fda547e95f8b9030078f7f281e317; anchor=Output order is bounded, durable and independent of table selection] | mobile/lib/table_workspace.dart:13 [UTF8-LF sha256=02445683146ff2b3bdca50bfa8d1aa1dedb94261c361613fdb545e7ca4f7c83e; anchor=class TableWorkspace] | mobile/lib/main.dart:897 [UTF8-LF sha256=814e5944b0f27d21f2005ff4bfa8e391dc5721435e25f9c40ccf2c934090a7db; anchor=Future _saveWorkspaces()] | desktop/src/capabilities.rs:78 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=pub struct Presentation] | desktop/src/ui/shell.rs:1062 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=fn synchronize_context] | desktop/src/ui/layout.rs:245 [UTF8-LF sha256=b5cf537aa8ff41c7302ed081a9c5d0821af271c3042b447cceb3fec8a9d70300; anchor=presentation_context()] | desktop/src/native_workspace.rs:158 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=pub struct Store] | desktop/src/config.rs:201 [UTF8-LF sha256=b84801a85e31a44b2691bd5f6ccefea0106d799952b0fb61e2d6162ee11b9414; anchor=pub native_workspaces] | mobile/lib/table_workspace.dart:268 [UTF8-LF sha256=02445683146ff2b3bdca50bfa8d1aa1dedb94261c361613fdb545e7ca4f7c83e; anchor=class FrontPanelWorkspace] | desktop/src/workspace_layout.rs:6 [UTF8-LF sha256=e7682600d1c90ee1805b3f70838d934bfd23de795ae50fa69599c034c88906db; anchor=pub struct WorkspaceLayout]","Complete live donor read through EOF at matching original-byte hash. Adapt the actual stable-ID profile_choices/draw ownership rule to board-keyed Flutter workspaces, rather than connection-attempt keys or telemetry-dependent widget lifetime. User selection/search/effect/indicator choice and both scroll axes survive transient leases, reboot, explicit reconnect and bounded background UI-cache restoration; snapshots never persist a command, authorization or observed device state. | Reread the same complete live donor at unchanged SHA256 for the Android screen-off regression. Actual user changes now notify a bounded debounced UI snapshot writer, including indicators, multiple selection, transition, Find/selection, activity and both scroll axes. One ordered coalescing writer prevents late old saves, skips identical snapshots and permits retry after failure. Reattachment uses the latest actual offsets rather than stale scroll-end PageStorage values. Healthy sockets remain open across backgrounding; a silent pre-suspend socket gets a 750 ms read-probe recovery without resetting the workspace or replaying commands. Colour actions and selection controls are separate ordered rows. | Actual stable-ID workspace ownership adapted to immutable board identity rather than mutable friendly names or current telemetry. Retained route/board/boot-scoped ACK-only panel inventory is presentation, never live hardware authority. Native dock, selection, menus and measured panel extent survive transient lease/capability loss; new peer/boot/explicit disconnect revalidates appropriately. | Reread complete unchanged donor. Native durable board/application sessions now store sanitized dock/active tabs, egui scroll/collapse memory, unified selection/find/cursor and safe front-panel drafts, bounded16 records, equal-snapshot skips,1s sampling/debounce and5s minimum save interval. Flutter extends its existing ordered350ms/2s writer with front-panel, diagnostic and public settings drafts; reconnect requires fresh identity/readback and never restores pending actuation. Native capture/apply_workspace_profile and config structs were additionally reviewed as function slices only, not certified whole-file reads. | Reread complete unchanged workspace_profiles.rs and actual canonical restore/reveal, capture/apply function slices in donor layout.rs/app.rs (those whole files remain uncertified). Native WorkspaceLayout now separates the durable full dock and explicit hidden-panel intent from its capability-filtered projection. Reconnect/partial ACK/reboot cannot save omitted panels as user closures; missing legacy defaults recover once, explicit close-all persists, reveal restores semantic sibling/split slots and unfolds ancestors. No missing ACK grants a control lease. | Reread complete workspace_profiles.rs and scoped layout.rs card/drag/tab sections (whole layout.rs remains pending). OutputPanel extracts scene, LED output and rainbow from TablePage using the same live callbacks. Stable scene/output/diagnostics card IDs and explicit handle-only Arrange reordering persist through the existing board-owned workspace writer. Diagnostics opens the existing guarded PixelDiagnosticPage; no duplicated command engine or startup actuation. Table selection, cell transitions, mapping and scroll ownership remain unchanged. | The complete unchanged workspace_profiles.rs was reread and its original-byte hash verified again. Pakar WorkspaceLayout separates topology edits from active/focus/collapse/scroll view edits by stable Panel identity, preventing focus changes from reconstructing hidden Events/Streaming branches. This is a controller-specific improvement of retained workspace ownership, not a newly certified whole-file donor layout/app import. | Complete unchanged donor reread and live hash verified for canonical Web diagnostic persistence. Adapt stable board/application workspace identity plus the actual Flutter PixelDiagnosticWorkspace constructor/snapshot slice (mobile/lib/pixel_diagnostic.dart SHA256 c5143cb176678151bc81273fbd7ebe7d666d9a145f400efc65ac1a8e7ecb817c). Cursor, group choice, color and effect/timing drafts enter the EXISTING debounced workspace writer only on deliberate local changes; live observations never schedule writes. Reload/reboot restores a visibly local draft, never pending operations, observations, revisions or automatic commands. Invalid numeric text is retained as bounded draft text, not accepted wire data. Other boards/applications stay isolated. | Reverified unchanged stable-ID workspace donor and extended the existing canonical Web workspace owner to pixel-tool presentation: map view/open/numeric filter, Advanced disclosure and expanded rule fingerprints. No new storage key/writer. Fingerprints distinguish duplicate rules and only match freshly verified canonical rules; changed unmatched rows remain closed, never reconstructed as config. Board/application identities isolate presentation through reboot/reload. Equal snapshots and late programmatic toggle events do not write; existing owner-transition fallback retains sanitized presentation without storing secrets, rules, observations or pending commands. Actual module/core tests verify restore, zero extra requests/mutations, duplicate/changed-rule behavior and no passive writes. Expanded rendered/touch/RTL and full workspace-manager parity remain open.","draw workspace manager metadata CRUD, icon picker, profile reordering and overwrite/restore menu commands [pending] | All donor profile dialog/tab presets, media-specific panels and workspace action parity [pending] | Unsaved native privileged network/cloud/AVR form drafts [pending]","draw workspace manager metadata CRUD, icon picker, profile reordering and overwrite/restore menu commands: Useful generic workspace-management UI remains an open donor import. This regression repair adapts stable identity and user-state ownership only; it does not certify the native/Web workspace manager, add a replacement profile editor or copy egui widgets into Flutter. | All donor profile dialog/tab presets, media-specific panels and workspace action parity: Stable identity and transient-layout preservation are a scoped adaptation, not all donor profile editor/defaults/import-export UI. Media-only panels remain outside this controller; generic profile actions still need exact comparisons. | Unsaved native privileged network/cloud/AVR form drafts: They remain intentionally invalidated on peer revocation until durable public-only patches can be rebased against fresh baseline/secret ownership. General per-peer workspace controls and safe presentation drafts are persisted; this is not all editor-draft parity.","mobile/test/workspace_lifecycle_test.dart:528 [UTF8-LF sha256=537941477dab0a2460cf42aab9220a7baf8d1aecf36eb140b21179674985071e; anchor=Workspace follows board identity] | tests/web_feature_workspaces_test.mjs:321 [UTF8-LF sha256=e02d06ce8ffcd53f00ecbb4524396aebe31d9035bb6e575b10fc47cca4eb1a7a; anchor=Live observations do not trigger durable writes] | tests/web_workspace_test.mjs:124 [UTF8-LF sha256=e35df2215cf2802e9e58896204d4c44dbb12225411a7c511808f47af9679d7cf; anchor=A not-yet-attached feature owner preserves the existing scoped draft] | desktop/src/capabilities.rs:442 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=fn presentation_retains_only_prior_acks_without_reviving_live_authority] | desktop/src/capabilities.rs:504 [UTF8-LF sha256=fe68fb6d4d5262079bae60446dd4dfbfc8f69ecce59cd7b12084f7d2cf6eb2a7; anchor=fn measured_panel_height_preserves_scroll_only_for_same_board_panel_and_width] | desktop/src/native_workspace.rs:425 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=fn workspace_roundtrip_preserves_unified_selection_drafts_and_scroll_without_authority] | mobile/test/workspace_lifecycle_test.dart:135 [UTF8-LF sha256=537941477dab0a2460cf42aab9220a7baf8d1aecf36eb140b21179674985071e; anchor=Front-panel] | desktop/src/workspace_layout.rs:355 [UTF8-LF sha256=e7682600d1c90ee1805b3f70838d934bfd23de795ae50fa69599c034c88906db; anchor=fn reconnect_and_reboot_restore_splits_active_tabs_and_hidden_choices] | desktop/src/workspace_layout.rs:457 [UTF8-LF sha256=e7682600d1c90ee1805b3f70838d934bfd23de795ae50fa69599c034c88906db; anchor=fn focusing_with_hidden_events_and_streaming_retains_custom_slots_after_restart()] | desktop/src/workspace_layout.rs:514 [UTF8-LF sha256=e7682600d1c90ee1805b3f70838d934bfd23de795ae50fa69599c034c88906db; anchor=fn view_only_collapse_and_tab_scroll_do_not_rebuild_hidden_splits()] | desktop/src/workspace_layout.rs:535 [UTF8-LF sha256=e7682600d1c90ee1805b3f70838d934bfd23de795ae50fa69599c034c88906db; anchor=fn actual_split_and_tab_order_edits_still_persist()] | mobile/test/output_panel_test.dart:502 [UTF8-LF sha256=b75b25f46b391a84c0400f08361c4c520e2fda547e95f8b9030078f7f281e317; anchor=Single-mode table has no empty Scene and hidden cards keep their saved order]","","Actual Android installation, background/process pressure, Wi-Fi/router loss and human layout/selection acceptance remain open. The newer prior APK was staged but not installed because no authorized ADB target was available; never attribute its source checks to the running phone. Complete generic workspace-management imports separately; source fixtures are not phone deployment or donor-wide parity. | Issue #10/#3: runtime visual/scroll acceptance and remaining generic workspace dialog/action parity remain open. | Installed native restart/reconnect/scroll and Android process-pressure/human acceptance remain separate from serialization fixtures. Native window geometry and full named workspace manager CRUD remain pending.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","src/update.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","909e8aa4f903d1a8a63589fd2e371d77ff7b8c6c6bcb3fc9949609ab55440652","client-app-updates | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","desktop/src/client_management.rs:278 [UTF8-LF sha256=29d4d38c2785187fe4ec71ba04dd8d297d4f3ec4a8161cf84fcd6b16336d87d1; anchor=pub fn newer(] | desktop/src/client_install.rs:273 [UTF8-LF sha256=d6088c3223ee29219a4b1048d7aa5d35d03f1906e371039dd7032145e9f87186; anchor=pub fn helper(] | desktop/src/ui/preferences.rs:115 [UTF8-LF sha256=38bda5597ef69c27761de2bfc820e2d507c8fe29353d3e1f95c118a477d22448; anchor=fn app_management(]","Actual download_update / prepare_self_update / run_update_helper / inspect_executable / create_update_file adapted into streamed SHA256/PE validation, explicit current-user managed marker, pinned PID/path/helper journal and graceful-exit/health receipt. | Preferences geometry checkpoint reread the complete actual donor src/update.rs through EOF at C:/Users/David/AppData/Local/Programs/Pealayer/source/Pealayer, revision 5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad. Compared the current app_management consumer and clean-draft dispatch: download progress still uses received/expected bytes, Apply requires a managed installation and verified package, and active application/draft guards remain. The consumer is identical to its previous implementation after ignoring whitespace and optional trailing commas; only its parent body/footer geometry changed. No installer, rollback or runtime acceptance is inferred from rebinding this Preferences reference.","Donor-wide installer/recovery/platform acceptance outside this self EXE slice [pending]","Donor-wide installer/recovery/platform acceptance outside this self EXE slice: Force-kill and automatic deletion of rollback are deliberately not copied: a live editor or unverified new process must remain recoverable. Media/libmpv, archive/GitHub extraction, interactive TUI console inheritance do not apply to this GUI raw same-origin executable. Generic signed installer/removal inventory, unattended uninstall and true two-new-version helper/Windows-session/OS acceptance remain pending. Preference UI uses actual existing Pakar donor widgets; no full donor GUI parity is claimed.","desktop/src/client_management.rs:875 [UTF8-LF sha256=29d4d38c2785187fe4ec71ba04dd8d297d4f3ec4a8161cf84fcd6b16336d87d1; anchor=release_policy_checks_numeric_build_semver_platform_origin_and_integrity] | desktop/src/client_install.rs:556 [UTF8-LF sha256=d6088c3223ee29219a4b1048d7aa5d35d03f1906e371039dd7032145e9f87186; anchor=journals_bind_all_transaction_paths_and_parent_without_shell_commands]","","Issue #7: live secure enrollment, release/telemetry/command receipt and safe replacement proof separated from source fixtures; Android foreground-only and self-uninstall local/OS-consent boundaries remain.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","test-data/jellyfish.mp4","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ac5a1796476da2e218fae4cccfd4a4bc2747593a41b50aedc60e5e19a1bf2b7a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","test-data/synthetic_23fps.mp4","10fc6604a9d6068eb57da2f00d7d9404238f00c8","de62a75ac5852cb4e981325862a7ad4222b40acb1864cde2efa0383a7fb134f3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/cli_forwarding_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","777039867acb8f0bc8aaa12da0efbd846abfc62f0612054e1b9b1a6fdeb940a7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/config_persistence_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e06205e3e023e47e8a8c646e881044ce967e793628f7d52159fbbdf589a6f0d7","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","desktop/src/native_workspace.rs:48 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=pub struct Snapshot]","Completely reread actual test. Adapt fresh-session serde roundtrip and persisted layout/state assertions to the actual native board/application workspace store, using actual egui ScrollArea state and DockState. No media dependencies or per-test temporary-directory cleanup copied.","Donor playback/media config fields [not-applicable]","Donor playback/media config fields: The requested controller is mpv-free; this fixture maps reusable persistence assertions, not media runtime restoration.","desktop/src/native_workspace.rs:515 [UTF8-LF sha256=15688543f8999613f064f17e60d453f50d59a05c564e927379fb86d50bc4f0d8; anchor=fn same_peer_reboot_restores_only_its_workspace_and_other_peers_cannot_inherit_it]","","Actual installed GUI restart/scroll acceptance and complete unrelated configuration field coverage remain open.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/curve_record_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2ee2dede9ad3ee2d685312f6ac0a5f9f7263670b3a95f77649b332cf2b45ceeb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/curve_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cbd24f0c9e347cfd7b34a7f0f12613618aefd6257c65c703c1eee458e8fb455a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/frame_accurate_scrubbing_tests.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d3ecb033a7e8b11a068754e00a8b90863f30885c5c5e760934f2d4986f6479b7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/frame_cache_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3877b3522622201def1443861202c4f02749b9a4c1c173f235b66b8146cfef29","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/hardware_affordance_integration_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4205e42676753cf2c2d20401cf85c1c1b88bf59e075056ef8fbabbb41d8db2d8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/hardware_target_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","79b66a0f1703f550a7cedcc6f9be9321c63e38013b4593f1bb6505958f054f3f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/i18n_surface_audit_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","504768bc9cf2fda32a8dab8b0f50d573c74e45001734f45c7ff3120f36333f63","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","tests/localization_test.mjs:86 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=Adapt Pealayer tests/i18n_surface_audit_test.rs]","Actual donor known-raw-caption prohibition and required localized-boundary audit pattern adapted to real shell menu captions, not renamed timeline/media files. Added peer text exclusion and reversible placeholder/language tests.","Literal media cue/keyframe/player forbidden-string fixtures [not-applicable] | Complete native/Web raw-caption audit coverage [pending]","Literal media cue/keyframe/player forbidden-string fixtures: Pakar has no those media surfaces; substituting their filenames would manufacture coverage. Controller-specific boundaries and font assets are tested instead. | Complete native/Web raw-caption audit coverage: The current test protects selected imported boundaries; it is not exhaustive. Remaining native settings, transport/status and dynamic Web copy are explicitly pending, and native Cargo tests are blocked by cache budget.","tests/localization_test.mjs:67 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=for(const key of]","","Expand ownership audit as each real controller surface is translated; execute actual native renderer tests and acceptance instead of treating source guards as runtime proof.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/input_capture_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d7e003ecafc9cd965b0963bb3866b86764628b692642f9e9a8cd9b1fb7f6cf2e","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/interop_tcp_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e4ed01fc9532fad073323a5d3b20ebcd838b0ef274378fe4a046f0f2c5acf687","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/live_recording_engine_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e4f40539cd883a11b7d6d7aff89c1209b2042e6ab70740661a895cc0d5288e99","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/live_recording_sim_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6699d1778fbde46416561e36b5604da8ee4ebafb2c306393a548c55ac8300bd8","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/pccontroller_host_integration_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8c0639a897b8a2c42a64c27350129fa30d961c9068fde1f0cb0e11e462c2b4dd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/pccontroller_virtual_board_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","823d4aaca1eaa819baefe428a574465a475f2468c83c92d6d2003a90dbb1fcfc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/playback_end_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0c7b8fdedd18bc22e469561e5575ea9685118571ca0d6fc1cf4fe2564b5aaf0d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/protocol_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","166ccb6f55fb38e647659a1eb059da6f11847f2e3e3dcda3e47a15c1a865bd6b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/sim_integration_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","782b8f3b1d07adbd11433a58c4300ea6ba9ec97b0a684bc0fd02afc91352c56a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/timeline_clip_controls_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","724313f6084f5ec1fb7792510c8697656b1f84c45a797722d0c2c56402eb47fd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/timeline_history_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b6be37afc414db4dd351d2fe17e2baae9e2d03900428986d9883db6df857cca6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/timeline_pointer_regression_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f39ceaeb531b75a705bc4304af2382f8819ae702ba9efd9cec13b402379c5178","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/timeline_selection_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4c00459b42d63b00da11f2b883da000a5edd0ee96313a4cecdf6b54b9b1e44e5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/timeline_smooth_seek_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fb3feab626048b10ff419da691c3ea4acb60c8ceee46497f1c4ec1d883072a8c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/timeline_ux_integration_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6e61b457c44fe83a82543d32b1634eee41958e123b0786dbc70319992d76ba1f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/web_media_explorer_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","60562dd0e2d9ac77cddabeb9989a5df0c19bc4fd84d6da80f86dedfee50d1044","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/web_workspace_parity_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e139ed7b0a4cc63360d3dcaeb139a62212ec7c105f297bf104727d4de3bca207","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/windows_shell_suite_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3f1f8f7709dd7b0e9dad2c58d1b345e9a7b054bb1bcfbcff9c6aede6598791c6","windows-desktop | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","parity-gap","complete","desktop/src/platform/windows_notifications.rs:201 [UTF8-LF sha256=71f2254825ba2b16d83696ce0e0cf74ec7c95eedda5f60e1c3d167826693ec1a; anchor=assert!(Hook::new(42).is_err())]","Actual Preferences action/resource catalog is validated; invalid HWND registration rejects rather than claiming success; owner exclusion is tested. Live notification acceptance and shown-callback evidence are recorded independently.","Playback-duration error/paused percentages and Play/Pause thumbnail/tray labels [not-applicable] | PealayerApp::default and media playback_time/duration/is_paused assignments [replaced] | ensure_shell_initialized retry and repeated shell-lifecycle acceptance [pending]","Playback-duration error/paused percentages and Play/Pause thumbnail/tray labels: The tests model removed video playback, not device transfer progress. Pakar uses indeterminate taskbar activity only for a real pending settings/maintenance request; inventing a media percentage would publish false progress. | PealayerApp::default and media playback_time/duration/is_paused assignments: Pakar is an executable-only mpv-free controller; creating the donor media engine is inappropriate. Actual controller IPC/live smoke and direct invalid-HWND tests exercise its own lifetime instead. | ensure_shell_initialized retry and repeated shell-lifecycle acceptance: Tray creation failures are visible and close-to-tray cannot hide an app without a tray, but complete root-taskbar initialization/retry and Explorer restart acceptance are not covered by the current tests.","desktop/src/platform/windows_notifications.rs:196 [UTF8-LF sha256=71f2254825ba2b16d83696ce0e0cf74ec7c95eedda5f60e1c3d167826693ec1a; anchor=fn utf16_limits_preserve_complete_surrogates_and_termination]","","Add root-taskbar lifecycle/reinitialization and hidden-window/tray/notification-click acceptance without fabricating successful HWND installation.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tests/workspace_dock_test.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a16b32bd03351aceeb30ac49a36e3eca449f5821f220a4b0f012da839c02ac61","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tools/udp-probe/Cargo.lock","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c289c509b2b921d35ba8c0462f6dbeaaa56dbac7a7251ba55e144a9c808ae7b7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tools/udp-probe/Cargo.toml","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f858cc7851e7420766fc92cfbf16b227e7e310a420b6613ac0297bb790c9e770","build-storage","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/9","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","tools/udp-probe/src/main.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9b84d8376fbbb0e6664902e11649628076893c125a14b13894321af1e3a1efb5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","utilities/downloader/build.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","81416102abc1c98057fcef07dd48c042c124af776834b7bbaa244129017daf87","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","utilities/downloader/Cargo.toml","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f0e259a02e751f0c59a8efcc2ae0fbcecc794028976658656663bbcd90caf122","build-storage | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/9","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","utilities/downloader/src/icon.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","228fcf16796c2cc5522b1936f61adc0e63c78e6b55440c293d35759aa7ab6d2b","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","utilities/downloader/src/main.rs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f7e12741e59ef13e16977088f84290902c74b346fda3397d682e08a0c5daa11f","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/.gitignore","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6c7d15d2ab1a0b51ebcae7e88b9ad01f0713d0833bc2dbe8f3bcc7a81b66b344","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/alert.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b07538fbd4900d6f758e5f6b2d16fbd183ffe84acb1d8519a6764139de680703","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/app.css","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f8f0d47e6e8942d1fb760c23689d501116e5908c53e97732c32b5a1c0cf5377a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/app.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6d6caabfdc23a82d54f52fc568a00fecac729659762b83cb4ef82ec35ef3c426","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/ArrowDownOutlined.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","01717b1b9451af22c924b8a7dc1633bb91eeeabc1c4393c2f9a8be5d0722e576","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/ArrowUpOutlined.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e75a8d7c4982c88df005615536c8311f8b93794f8b73efd3abbf8fa8a06939ac","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/card.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","12aad43fe00cef0b0e92cb9b54c320e86d87527a49b019ff4a7f4f17e6067427","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/ColorPicker.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fa6c6866a01e13ea489d4baae0a76ec5b8cd1f6f7885c904f6681d669e8551d5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/DeleteOutlined.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d4cd4fb8ddf9cc971fab52435a4b41a5f1ba5a90a1fd1af6e48e1f7d3461bed4","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/DownloadsTab.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9ee793db7741fc5b36a8efa75d9524782ef7653fc3e7507fc72467fd0cf46512","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/dropdown.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","54fb75ef1b5b835ee89880c959d004a95509842be75c5af4343b8ad725c2f387","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/EffectsTab.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4c352fa9a96c2a27aa21b61cc83f93e48b41ff6d756bbc9a9c94a5a18ed43657","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/ElapsedTimeInput.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7d4ea5049b467942ab0c43d814873da069f67a68643e4c07bc3d1ed25aaf186d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/ExpandOutlined.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f64d920a1ce1c8b8770d666eb2cfcd66d378e8fea869d11707c9b219d49c71e1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/GroupSelect.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9d5cb0e66eda56b2d0fd2f2f696ce74039d3f49d89993b40892930eb3d87c5a5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/Hack-Regular.ttf","10fc6604a9d6068eb57da2f00d7d9404238f00c8","15f55cc0c85a2988d2b4b3a8cdb5d77fdfbaf319e1bb5309d725db9818fb7125","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/HardwareTab.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","76768b6f076bcb4f67079b4fdf61a6f87cddadff4e0994e9c9df16ee93526aec","device-context | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/jsx-runtime.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d410783b3a5ba8380dc1b40f9cf0f9b052e2134b675b293468b85e7920ffe4a6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/MediaLibraryTab.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d3712a312bd94b090d15dc5b8ff71fa48b1cc8094efc58ee18b95595ae2b19d7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/MelodySelect.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7dfcfbc0fe8a251b0250e5f3fb4b19f8e7f1a4278fcfef1efae10754d214dd9b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/modal.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f67cb934b902a3e1d44f58714b65f5addf39c02cc3049f8dc7adb266abc9541d","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/PauseOutlined.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b7b4127ef8cbe96c9eac0bbdb60d8b65b3c6e520026c5ecea32fa57fa44f0202","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/PlayCircleOutlined.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6d83ec599a168fb8b58b00152f1f45d392e042460ec7bc22196373778a571eab","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/PlayerInfoTab.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","91242af7e19ca254beb5ab24e7c4071a8eeee672312cedc1f980eab4e00cac6f","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/popconfirm.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","774c74060e8697e3b34d1594ee8d8a3969b4ba0c67ae93290d7df952af2a3656","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/popover.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a0b147935952f2184aea8176230edf5d5e62e988e19b39fd2b5959b0e503d4d5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/PreferencesTab.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5f7f920c79751ab401ff0368e3b2190bdb5594d5f801e59f6a14be3faa960408","localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/progress.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","606fac2567e285d6cd7629e60721ee65eff902d5b577d838a88b4e8b0b74c0e1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/PushpinOutlined.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","02b3d34998b678e692c60f382071ba978740c0305390b72b9ecf958b6a03b20d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/RemoteControlTab.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ea828c74b997b6327781a3b93d0775389dc8604212866500a155f5722c4d0d97","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/rolldown-runtime.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bbf7c5086ae414dc3f33777e3eebf16ea8631325b8bb4690d25091c03567f31a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/row.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d1b7b30bb0b59eb6077fefcb0ebba86f1fca01c69ec5951c05ada564611d37b0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/SafetyCertificateOutlined.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0b68ee4a6d33279d75fec6bf6d098fbe2b8d61db7d566f6658fd89a1986c7523","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/ServerFilePicker.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","eab91b5ec3359a502b92ee36bebfae06504c5b49f018b79412ca01c730207334","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/slider.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0712cad991b7ac82e0505b189cd12128f5e5fef757ad8fbce1523cec3047a7fe","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/StepRepeatFields.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","756ba53a5cc2d83236b558cc1dbe4fa18790c28ea6a3e50b1406937dafa3b19f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/StopOutlined.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9c95cf72ea5426451d58e69c16e6f7893580dd491eb46bb017a0e88dbd7be6bb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/StudioTab.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c3106d00368ab6e4fe7162c5818b729a6714c1bd77424221759141fdb385f97e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/style.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9f8e35dcf49cbc1eebe7baaa52efbcea0e8e0e42f42f032547b6d1ba01b0143c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/table.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","92eae8acd50a7ed34371b5f1faa1971e0d72d38f525ad365104d9382fbaa790a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/typography.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b2e1b277e0abeaf5f951cb37438976fb4c811dbfd6a935b9a30e96915aa0f270","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/Ubuntu-Light.ttf","10fc6604a9d6068eb57da2f00d7d9404238f00c8","80307b8da7649aa4ee4d484b232140e3ce1ec0ca093073d3c53c8f5a5ced7a70","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/useBreakpoint.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","dd431cf4d5a90e59cdb77f7e3ffda0980cd180cdd8173874086389b59459cf2d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/assets/Vazirmatn-Regular.ttf","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b69fd4c680b8f3f225feabcc655a2c585d97627b8f5f5c0f9985e894069f3a56","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/font-licenses/Hack-LICENSE.txt","10fc6604a9d6068eb57da2f00d7d9404238f00c8","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/font-licenses/Ubuntu-LICENSE.txt","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/fuji-loader.css","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fcf8940e88af0c833b6ea4a46b2ad49f5b0aa189a4d5cd9ca6e5df68df412075","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/fuji-loader.svg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9bb6239258823f43190e54a61e1e68cd8a812b13c6c84548923391d902f5a770","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/index.html","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e51ccb29a0275314b9dfd4fbe623a5c7f5d0b042bb731fcddc76f3fe8b506e11","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/manifest.webmanifest","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4d4ca66ac2ae23d9e5354770f653b27de599a5a7a654194cc6fe883a9d3cebd3","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/pwa-build.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","afd4a7ed45f6045ece111e522a95edaca90665ca503df2560fbb44870db13bfb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/dist/sw.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d4d21189e509a280ece2be65ca553fc23ba0ef81b2d4db7ca89caaf154c2d4e9","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/index.html","10fc6604a9d6068eb57da2f00d7d9404238f00c8","dd206cd22260a94270df444c3bd85b87defa2ac0ac580298eaf38282c527d7bc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/package-lock.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d26dd09dbd787e87f520cca00437e2a64623ace6704e42669d03227269827008","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/package.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","49eb339b9d40c5b97e943098e62e8c99b913b2d81093db123f6901d6e54ca032","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/public/font-licenses/Hack-LICENSE.txt","10fc6604a9d6068eb57da2f00d7d9404238f00c8","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/public/font-licenses/Ubuntu-LICENSE.txt","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/public/fuji-loader.css","10fc6604a9d6068eb57da2f00d7d9404238f00c8","fcf8940e88af0c833b6ea4a46b2ad49f5b0aa189a4d5cd9ca6e5df68df412075","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/public/fuji-loader.svg","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9bb6239258823f43190e54a61e1e68cd8a812b13c6c84548923391d902f5a770","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/public/manifest.webmanifest","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4d4ca66ac2ae23d9e5354770f653b27de599a5a7a654194cc6fe883a9d3cebd3","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/public/sw.js","10fc6604a9d6068eb57da2f00d7d9404238f00c8","dd8e3de59caed2ca4c833ff91d9a703659df6c22f6cffec668f065445ef705e5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/appearance.test.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","35f269e9463e49dbc41572683ca374be8674a93e0e97c84240838d34dc950ddc","web-presentation | ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","equivalent-behavior","complete","tests/web_appearance_test.mjs:1 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=First four tests port the actual Pealayer]","All four actual donor contract tests ported: Neutral helper default, preference merge without unrelated-field loss/resolution leakage, host/offline theme/accent and repeated native event/explicit-theme handling. Additional shipped-code tests cover all palette roles, cancel/apply, contrast, identical-write skip, media events, malformed storage, cross-tab updates and session-only storage failure.","volume:37 unrelated media setting fixture [replaced] | Direct TypeScript test import [replaced]","volume:37 unrelated media setting fixture: The unrelated value is endpoint:http://ledboard.local instead. Its preservation and original-object immutability assertions are retained; no actual test contract is removed. | Direct TypeScript test import: Tests import the actual adapted JavaScript functions; browser tests additionally execute the shipped embedded source, avoiding a separate mock appearance engine.","tests/web_appearance_test.mjs:30 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=live host theme events leave System preference unchanged]","","Test execution proves module and simulated browser contracts, not connected native event transport or physical hardware.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/finalize-pwa.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","03b8218465ac00bc76476c092c0e9ca377c1a17b0685cbced621ba30f845a1c3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-application-parity.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e95fece5a25f594af94067f6ad7099acdaa3446541c4b22528ec7f4afab068e7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-channel-folders.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","606b1984d74bbbfe7959fa06ceb7a0bb73ca4b51cb2d1912f29ebae5003dc106","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-clipboard-urls.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","7dec1674871c4314fd96c6ffea00ace39c5cf64205b1fcc9306a08a822e27915","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-control-bars.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f6ab881e6e42472a6fdca5cfd4f29b75512d5eceaa9fd7a06e98d488908a3782","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-controller-errors.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","132f8b76d5ff244220215cffc89247c2c30d0e3d7e1aadc62251f3e44fba1e9e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-cue-authoring.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f74996c2f5d6c993422fa6daabab9beddee9f58ef028e8d28afa6dccc56945a5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-file-locations.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c03b418256de95d4f1f4409be9d3827c6e5ddaba55f40dc4b9d19e2c221b3e65","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-hardware-availability.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c451251acb4aa2119b623d4d5e2236d0562ac1efd28b61661b89771d0ec7ce91","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-media-controls.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c501cdc527ff4acfbec10dc1dc288f2c3024adb3b1f321d750510a201286df35","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-messaging.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","12923b9cf8fda68b787f498fe404a50c994767bd2d8ddbdce0ea6cd49da0a841","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-os-media-session.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0ae2a410eefd275bfacbcda9e818dffac4fd5d05b15eeda5e4778985d7d4cccc","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-preference-files.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b0ae70aa9a7b438d7638d502b7c2fb88d5cd36a96866c7b62810638efd40c480","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-pwm-card.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4a017549641975eb6950e9dc65b8283e48a3519c7559cd2d25edf0256cd3af05","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-pwm-policy.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","306128ce16cd3c513011f1b00d97ca91a895aac4dd3a02dc1bb5f06e767a627c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-pwm-push.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","25977a0374aebf1cd4902821f147c8beff1507bcb42e674a261f5d3fd29edd40","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-responsive-layout.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","377d208dec92440cb6926a37f9ab972d4aa5802e722e57159155fe75d228ff86","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-rf-binding-names.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","73f8d706dbe1a2887c604aee943f40e9019f442a0cd66e1fd40d316ace9597a1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-rf-presentation.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ac608cf7ea0a9c4584f8b30524dfb918dcf7d6725694c5c9aa5425b6623277ff","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-rf-reception.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","335cc560ac9bef2a3b15c45bb7dc5a3cd0c8e826095a723a0122fc6cfe525968","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-rf-saved-layout.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","15ddfb5b28df49746d7eb047f9a74a8e035d03331b8eae644fbac124017388f9","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-seek-preview.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2514659886740dff8be645f1bb023bd3b0f8267af8c20a24f1c88a96ce034bcd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-status-widgets.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5f47f526959f03b797b97f139e12f945da9fa90a35ca85ea868e8f108a018469","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-timecode-editor.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","174d70e5179a2c9ab16b5222b362d1cdd0e06ccf74fe6b5583bdd4acdcec977e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-timeline-time.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","116d104838a6b92ad681c74ead549145939b3092188a589b5ecec04d7953ce54","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-timeline-wheel.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0ccd79835b40396046793606fc261ecae1965682e71be1f52f6a5ab27a7aa239","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/test-web-assets.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","460d22166373d030da9fa3070db467300fb9091d1f1c5b324b5530217b4c5a33","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/scripts/verify-pwa.mjs","10fc6604a9d6068eb57da2f00d7d9404238f00c8","abb3897421e75dd842f5cbeddf4bf57577dce7abed6453f76a8100990f0c8394","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/App.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ba2d7a35e2f887ec556b681cca24aaa6f263295208cbc80678bc248b61949845","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","firmware/esp/src/WebUi.h:2475 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=function createWorkspaceStorage] | assets/web/device-settings.js:93 [UTF8-LF sha256=28b490c94a63c0b55df4cac22405b02d9ef43725ee08d5e9e3cc418ae8df5492; anchor=function settingsObserve] | assets/web/workspace-studio.js:9 [UTF8-LF sha256=c5c4b999f9fb7ca6011b9193a1ded10ed293bba8b53d9c861ad1ea4c108a15f4; anchor=function studioRoute(]","Completely reread matching actual donor. Import/adapt readStoredJson/persistJson pending-map/timer/pagehide and per-surface scroll patterns into immutable board_id+application.id workspace storage. Selection/find/focus, presentation/panels, public drafts, settings navigation and scroll restore passively; equal writes skip, blocked storage retains in-memory state, and changed fresh settings keep their conflict baseline. | Reread App.tsx through EOF for actual surfaceFromLocation/setActiveTab/followLocation. Adapt the allowlisted fragment, same-path/query history update with equal-write skip, and hashchange/popstate listeners into the EXISTING Studio workspace owner. Explicit links wait for acknowledged panels rather than unhiding capabilities, and do not rebuild card/draft owners or issue commands. Generic browser-tab localStorage fallback was not duplicated; existing peer-scoped workspace persistence remains authoritative.","Cached player/runtime state, media navigation and React/Ant Design surface ownership [replaced] | Cross-origin browser workspace migration and full donor multi-surface navigation [pending]","Cached player/runtime state, media navigation and React/Ant Design surface ownership: Adapt generic persistence to embedded DOM ownership with a workspace-only allowlist; no playback engine, stale live authority, modes/cells, notifications, boot identities or pending command replay. | Cross-origin browser workspace migration and full donor multi-surface navigation: Allowlisted controls/diagnostics/effects/hardware/api/all fragment selection is adapted. Modal-only Network/Firmware settings still use their existing guarded dialog and are excluded from new deep links until draft-safe modal history is implemented. Cross-origin workspace migration/export/import and per-surface scroll parity remain pending; no broad App.tsx parity claim.","tests/web_workspace_test.mjs:94 [UTF8-LF sha256=e35df2215cf2802e9e58896204d4c44dbb12225411a7c511808f47af9679d7cf; anchor=Repeated reconnect cannot silently accept the changed baseline] | tests/web_workspace_routes_test.mjs:34 [UTF8-LF sha256=0f59c85fa0bb31a6d39d02a8fd950abbb5ccba7bf8c68c30890b34f2ea03c41d; anchor=URL never enables an unacknowledged panel]","","Browser layout/actual reconnect/reboot and physical LED acceptance remain open; DOM doubles are not visual/device proof.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/appearance.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b521c20a1f10e6f818978bcb09948c689b74caaf72df18bdec56f2f566f8db58","web-presentation | ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","assets/themes/appearance.js:4 [UTF8-LF sha256=62a7ebba994ad44f4e2d647bb97684aac9b563104f3f707b43573289e514ecdd; anchor=export function mergeAppearance] | tools/generate-web-appearance.mjs:33 [UTF8-LF sha256=e57a615bf5134b718d6df7b644e56faced0c0ef73e8662cf8cb06c05e23e59b4; anchor=replaceBlock('// BEGIN SHARED APPEARANCE'] | firmware/esp/src/WebUi.h:10 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=// BEGIN SHARED APPEARANCE]","Fully reread current source through EOF. The five previously adapted helpers remain in the target: mergeAppearance, resolvedAccent, resolvedAppearanceTheme, accentForeground and paletteName. Existing theme/palette/accent host resolution and luminance semantics remain; newer animation/density/font preference fields and font CSS helpers are explicitly pending, not claimed imported. | Generated into the shipped WebUi.h with the shared palette asset; --check rejects stale embedding. Browser preferences dialog validates theme/palette/accent, protects drafts, handles storage failure and cross-tab/System events without device writes or repetitive identical storage writes.","ui_animation_mode, ui_control_density, ui_font_family, monospace_font_family merge fields; ControlDensity/controlDensityHeight 24/28/32/36 geometry; uiFontCss and monoFontCss [pending] | AppearanceState TypeScript interface and generic T return annotation [replaced] | Connected host AppearanceState broadcast/native-Web shared preference path [pending]","ui_animation_mode, ui_control_density, ui_font_family, monospace_font_family merge fields; ControlDensity/controlDensityHeight 24/28/32/36 geometry; uiFontCss and monoFontCss: New current donor behavior was fully read during mobile-network build preflight. Existing embedded target does not consume these client preferences and does not bundle PealayerUbuntu/PealayerHack; copying their font names would imply unavailable assets. Add actual shared settings/asset support and cross-client tests before claiming parity. | AppearanceState TypeScript interface and generic T return annotation: ESP serves standalone JavaScript, not a TypeScript/React build. Browser-facing enum/color validation rejects untrusted stored values. New fields/helpers are separately tracked pending rather than silently dropped. | Connected host AppearanceState broadcast/native-Web shared preference path: Pure functions accept host state and tests preserve donor semantics, but standalone browser controls are browser-local today. No actual native appearance event/readback transport is integrated in this pass; System fallback is labeled browser-local.","tests/web_appearance_test.mjs:22 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=System theme and accent preserve donor host resolution] | tests/web_appearance_test.mjs:66 [UTF8-LF sha256=f755365a55727e1f0ad3e3e57fdf9f93e990f16d4445840694e264b88710aa7f; anchor=dialog draft/cancel never changes]","","Implement native/Web/mobile shared preference transport and live authoritative host events, while keeping device parameters separate from client appearance; verify multi-client broadcast/readback.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/channelFolders.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","066d9f8abd055555673bc44d2f7d8716e104bca9747e949abfcd9d9f4855196f","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/clipboardUrls.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f851b796fbe24ae4d94cb583e4fa0c2851e983db67804d80acfe80e69da11dc4","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/ApplicationStatusBar.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","94b9cdc6d28346bb7ae591d6d0a0ec3dd910b47471c6bb3df868582784ea99d4","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/ColorDropdown.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","49d37654faab5033df04954456d0fe980571ccbc66478caaab7007dae1b8c151","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","mobile/lib/color_picker.dart:50 [UTF8-LF sha256=8d1b4206d9b99bf4067df432e0147fdfc7fe67f60c6dab83ceb04478de2560c2; anchor=class _ColorPicker]","Read the full donor. Retained a single focused picker, bounded scrollable content, named presets and keyboard-focusable controls, with session recents shared across callers. Flutter dialog owns Cancel/Apply and returns a color rather than inventing another state or transport owner.","Ant Design popup positioning and DOM refs [replaced] | Donor directional-arrow preset roving navigation [pending]","Ant Design popup positioning and DOM refs: Flutter dialog focus and bounded scrolling provide the corresponding modal behavior without DOM-dependent code. | Donor directional-arrow preset roving navigation: Flutter retains standard focus traversal; exact directional preset navigation has not been ported or verified.","mobile/test/appearance_live_test.dart:26 [UTF8-LF sha256=77e70b48b5faf8f8ed73ccb5711b0c0ae12889e11d09870780d47a1d1c6a6b13; anchor=testWidgets]","","Issue #26: verify desktop keyboard and installed tablet/phone picker ergonomics; no claim of complete donor parity.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/ColorPicker.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","024fdabb482a714c38a91d0dde5d0be11486b20859a019f4fbc2d3dd34295022","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","scoped-improvement","complete","mobile/lib/color_picker.dart:33 [UTF8-LF sha256=8d1b4206d9b99bf4067df432e0147fdfc7fe67f60c6dab83ceb04478de2560c2; anchor=Future showLedColorPicker]","Read the complete actual donor before implementation. Adapted preset selection, uppercase RGB representation and twelve deduplicated session recent colors into the shared Flutter picker used by semantic state appearance, temporary test color and game group overrides. An explicit Apply commits the local picker choice; Cancel makes no command or recent-color write. | Added sixteen named LED swatches, HSV hue/saturation/brightness controls, validated optional hex entry, fixed circular hit targets and semantic labels. The picker itself owns no connection or persistence; existing peer-bound command/readback and game Save paths remain authoritative.","react-color ChromePicker and Ant Design runtime [replaced] | Media-effect onChangeComplete callback [replaced]","react-color ChromePicker and Ant Design runtime: Flutter uses native Material controls and HSVColor; embedding a second JavaScript UI runtime adds no useful color semantics. | Media-effect onChangeComplete callback: An explicit local Apply hands the value to the existing device-owner command path, avoiding accidental board changes while dragging a color slider.","mobile/test/appearance_live_test.dart:26 [UTF8-LF sha256=77e70b48b5faf8f8ed73ccb5711b0c0ae12889e11d09870780d47a1d1c6a6b13; anchor=testWidgets]","Named LED presets and accessible HSV channel controls replace hex-only editing while explicit Apply avoids unintended hardware commands during dragging.","Issue #26: candidate source/widget verification is not installed Android touch or physical color acceptance.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/ControlBar.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cbd6ebc09cbf23e4958c4d1979974d3e856f2096bcc2dcfd1556c5ef4c45cafd","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","web/modules/components.js:98 [UTF8-LF sha256=200e38d3a70594f6f2463b03bc74df53cc10e17e8d2264c7851c200d9beff7d4; anchor=const actionIcons=] | assets/web/application-utilities.js:47 [UTF8-LF sha256=20744bfcfc0968df0205a46aeb3bdd513b205f0f91796b168dd99dcb16fdbbf1; anchor=function refreshLabels(]","The Web owner fully read actual C:/Users/David/AppData/Local/Programs/Pealayer/source/Pealayer/web_ui/src/components/ControlBar.tsx. Adapt its explicitly mapped contextual action/icon identities and separate localized captions to the existing controller actionIcons/controlIcons and semantic caption refresh. No transport, ACK or capability authority is replaced by the presentation pass; existing handlers and disabled state remain attached to their original controls.","Media transport, track selectors, playback volume and timeline-specific actions [not-applicable] | Complete shared toolbar customization, drag/context layout authority and draft/ACK lifecycle [pending] | Rotating/glowing decorative action treatment [replaced]","Media transport, track selectors, playback volume and timeline-specific actions: There is no corresponding media domain in the controller; generic control identity is retained independently. | Complete shared toolbar customization, drag/context layout authority and draft/ACK lifecycle: The named action/icon/caption adaptation does not establish equivalence to the donor's full customizable control-bar model or its layout persistence/input ownership. | Rotating/glowing decorative action treatment: Stable glyphs and reduced-motion-safe treatment avoid recurring visual distraction or suggesting command progress where none is observed.","tests/web_control_presentation_test.mjs:34 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Existing action handlers survive hydration] | tests/web_control_presentation_test.mjs:93 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Semantic caption updates reuse the stable label slot]","","Issue #3: complete generic toolbar customization/ownership parity and installed input/visual acceptance without adding media business.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/DesignerFieldLabel.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ed527ea04c4dc8e9f51e755c0dc92b8cd9a71a414b2fbcfbaba96e97cd7916a7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","web/modules/components.js:99 [UTF8-LF sha256=200e38d3a70594f6f2463b03bc74df53cc10e17e8d2264c7851c200d9beff7d4; anchor=const controlIcons=] | assets/web/localization.js:43 [UTF8-LF sha256=fc7a39cae41e490fba858a8c7129abf0a7064811c486ddf9ba1b115b79e7c0fb; anchor=function renderUiText(]","Read the actual complete canonical Pealayer field-label component. Its explicit field-to-icon dictionary, decorative aria-hidden glyph and separate translated copy inform the controller's explicit action/control icon dictionaries and stable label hydration. Unknown peer-provided text is not classified by translated spelling; SVG remains independent of the localizer's owned label. This is a focused icon/caption adaptation, not a claim that all designer fields exist in Pakar.","Media/timeline-specific field dictionary entries [not-applicable] | Complete generic field-label coverage across all controller settings [pending]","Media/timeline-specific field dictionary entries: Only actual controller actions receive mappings; unrelated media designer labels are not fabricated. | Complete generic field-label coverage across all controller settings: This pass binds current action/control icon and caption consumers. Full settings-field inventory and installed translated field layout remain additional work.","tests/web_control_presentation_test.mjs:55 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Peer-provided copy is not guessed as an application action] | tests/web_control_presentation_test.mjs:41 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Language switching cannot erase decorative SVG]","","Issue #3: reconcile remaining applicable setting labels and inspect real responsive/RTL field alignment.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/downloads.css","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5301e1a83619229834082effbc6078f4fb4cd2bae0940695a9df68ae198e0b78","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/DownloadsTab.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6586e81dfa2de5e7e5dc71bd21e153e027e137c6f03dfb8aa6335efe5b0e5c60","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/EffectGroupDialog.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","8c90f7a85286efada6d5a1e24212a03dd1ae14e51bea1767f8d195a538ec8f80","ui-shell | preferences | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","assets/web/feature-workspaces.js:383 [UTF8-LF sha256=13a51897342b90e6d328d84da0c7272fd6f909fb84996de23a164bb48feb88fa; anchor=async function reloadCorrections(] | web/modules/components.js:135 [UTF8-LF sha256=200e38d3a70594f6f2463b03bc74df53cc10e17e8d2264c7851c200d9beff7d4; anchor=function dialog(] | assets/web/application-utilities.js:116 [UTF8-LF sha256=20744bfcfc0968df0205a46aeb3bdd513b205f0f91796b168dd99dcb16fdbbf1; anchor=initialFocus:search] | assets/web/pixel-groups.js:58 [UTF8-LF sha256=24abe18fbf1f11fe248f2f1ac5fe6b7149014be1290fae0f8b3bef59c256e617; anchor=async function reloadGroups(]","Read the full donor through EOF and verified live bytes match the inventory. Adapt the retained local-draft modal, explicit localized cancel/commit actions, separate semantic icons and destroy-on-dismiss lifecycle through Pakar's existing WebUI.dialog; no second UI runtime or connection owner is introduced. | The canonical Web correction Reload confirmation also follows the actual Flutter PixelCorrectionsPage.reload guard: Cancel/close keeps edits, approval reads only the original peer, duplicate prompts are suppressed, and disconnect/capability loss/peer change/disposal dismiss the pending decision. Missing dialog support fails closed. This scoped comparison does not certify every EffectGroupDialog feature. | Reread the full donor for its explicit localized actions, auto-focused editor and destroy-on-dismiss behavior. Existing HTML dialog now links its description for assistive technology, accepts localized close labels and deliberate initial focus, focuses Cancel for correction discard and search for the command palette, serializes asynchronous footer actions, restores disabled states after failures, and retires late callbacks after dismissal. No duplicate modal runtime, connection owner or board command was added. | Pixel-group Reload now reuses this same modal with localized title/close and Cancel focus, following the actual Flutter correction reload guard. Cancel retains the draft, approval performs only the existing peer-pinned read, duplicate prompts are suppressed, and peer/boot/capability loss or disposal retire the decision. Missing shared dialog support fails closed without discarding edits.","React/Ant Design Modal runtime [replaced] | Effect-group name/original_name save and media-group mutation [not-applicable] | EffectIconPicker searchable icon presets and live group-name/glyph preview [pending]","React/Ant Design Modal runtime: Reuse Pakar's existing native HTML dialog with focus restoration and shared branding rather than loading a duplicate framework into the onboard build. | Effect-group name/original_name save and media-group mutation: This correction reload reads saved board configuration; it must not mutate media effect groups. | EffectIconPicker searchable icon presets and live group-name/glyph preview: Generic icon-picker behavior remains useful for configurable app elements. This narrow reload dialog has no editable icon/name and does not imply that picker has been imported or its dependencies reviewed.","tests/web_feature_workspaces_test.mjs:118 [UTF8-LF sha256=e02d06ce8ffcd53f00ecbb4524396aebe31d9035bb6e575b10fc47cca4eb1a7a; anchor=Only one confirmation may own the editor] | tests/web_dialog_test.mjs:53 [UTF8-LF sha256=63745a228e1e9748f7d8eb89c7f1a3eaa4f4e1e5d34b6fe5f6805c03e668552d; anchor=Only one asynchronous action owns the dialog] | tests/web_feature_workspaces_test.mjs:390 [UTF8-LF sha256=e02d06ce8ffcd53f00ecbb4524396aebe31d9035bb6e575b10fc47cca4eb1a7a; anchor=Only one group confirmation owns the draft]","","2026-10-27 desktop browser verification reproduced approval losing focus while Reload was disabled. Both correction and group confirmations now retain the existing async dialog owner through the read; delayed-read tests verify the trigger is enabled before close and stale approval stays inert. Actual correction Reload restores focus, Escape preserves drafts, and Cancel receives initial focus. Expanded map/filter/cursor numbering and persisted filter were also inspected. Phone/tablet/Persian RTL, real board reads and group-dialog rendered acceptance remain open.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/EffectRecorder.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","60f0592a17464e82aef7d96ad391648fb72add8dea3b07bdb74727934863176c","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/EffectsTab.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1e05d85e102ccf8fe8a1b928d9d948a0818d7c2a69e29e1ceaec9e94d0e1fa84","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/ElapsedTimeInput.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3486788299c7d562735fc9e9dbabe5c803349a360279197fbcecf85dd92a7519","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/FileLocationSelect.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4d8f2b5cecca02476322d171ad04a8e9bc28055947fd2035620ae1d6c8be3530","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/FujiLoader.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e1ffd53b29e78aa7153c7a22f0282a5a9d7a2c559832f45e21ffa323d265e7a4","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/GroupSelect.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","14bdd722273e5b80603ecf1f3ae3ac92176c5be49f97edeb8ad82d7595335931","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/HardwareFolders.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","a3114bf641485cedaf16bf79b07cff271708bb1e6dd187ce41df5cae4da42b8a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/HardwareTab.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","66b453097073e72ead2fc89f36056371509557d43bcd0053299cc1e99f304712","device-context | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/HeaderBar.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","ad53ee284d969054f69b65e8447a313498b5928eae0aed2564e95f8c71e70d04","application-identity | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","tools/generate-branding.mjs:3 [UTF8-LF sha256=816544b2525d3c9210a586b8c2c5d59ed6c51fab8ca4bda27fbf2edbdd451367; anchor=Pakar embeds it for the standalone ESP surface] | mobile/lib/header_controls.dart:17 [UTF8-LF sha256=fdbae404068b75de261d1add7d5768e1b6844272ddfe4edb1b92b338f6cf4f87; anchor=class HeaderLayout] | mobile/lib/main.dart:767 [UTF8-LF sha256=814e5944b0f27d21f2005ff4bfa8e391dc5721435e25f9c40ccf2c934090a7db; anchor=Future _openConnection()] | firmware/esp/src/WebUi.h:399 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=] | docs/BRANDING-PARITY.md:60 [UTF8-LF sha256=0bfa8122dc9d6034551304f2fed472ddebcff170e14a23f63011177aab75d2d3; anchor=## Explicit unfinished useful code and reasons] | firmware/esp/src/WebUi.h:3078 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=function renderApplicationIdentity] | assets/web/device-settings.js:120 [UTF8-LF sha256=28b490c94a63c0b55df4cac22405b02d9ef43725ee08d5e9e3cc418ae8df5492; anchor=function settingsCanClose()] | docs/INTERFACE-CONTRACT.md:8 [UTF8-LF sha256=37a0aec859267e0fd62b546ffc044eaa02ae04d2f9a298c5d94a5c24c803cb1b; anchor=## One catalog, distinct transport and platform adapters]","Actual resolved-artwork img/alt binding adapted to standalone header/login, replacing diamond and font fallback. | Firmware name/title/artwork binding replaces fixed header branding; stale/disconnected peer resets title/header/favicon/touch artwork and validates bounded inline PNG. | Actual retained Modal/draft lifecycle adapted to grouped device settings; separate same-instance WebSocket actions preserve HTTP refresh and reject obsolete socket callbacks. Native Draft/SecretEdit/Write validation/readback semantics are reused. | Current 223-line donor was fully reread. Existing shared artwork/draft mapping is retained; accessible Enter/Space connection-pill activation, responsive overflow copies and capability-specific browser controls are not implied by that mapping. | Flutter header review: adapted the donor retained connection modal and responsive overflow behavior using the existing SettingsPage/ConnectionDraft owner. The whole status icon/text opens that modal without issuing commands; Material InkWell supplies keyboard activation. HeaderLayout stores allowlisted ordered/visible actions in existing coalesced workspace preferences, keeping overflow permanently recoverable. Refresh is stale-only in the toolbar, not a game reset. Link/unlink/cancel icons describe the action. PCController workspace_chrome.dart and unified/preferences.dart were also fully reread for stable touch targets and persistence. Browser-wide omissions remain open.","Header collapse; arbitrary remote connectionTarget/draftTarget endpoint modal; localization/RTL [pending] | capability-aware Dropdown install/update/share/fullscreen/notifications/haptics/audio/wake-lock cluster [pending] | Current keyboard-activatable connection-pill, collapsible action overflow parity and capability-aware web-feature preference switches [pending]","Header collapse; arbitrary remote connectionTarget/draftTarget endpoint modal; localization/RTL: The new grouped device-settings modal and same-instance WebSocket dropdown are not arbitrary remote endpoint selection or localized navigation. Standalone-device origin/auth and preferences adapters still need porting and tests. | capability-aware Dropdown install/update/share/fullscreen/notifications/haptics/audio/wake-lock cluster: Requires actual WebPlatform integration and ownership/permission tests; not excluded media business. | Current keyboard-activatable connection-pill, collapsible action overflow parity and capability-aware web-feature preference switches: Pakar must adapt actual endpoint lifecycle, capability/permission detection and keyboard semantics rather than presenting nonfunctional shortcuts. Shared static artwork and device-settings drafts do not provide these generic browser/header behaviors.","mobile/test/header_controls_test.dart:100 [UTF8-LF sha256=db7a6c884949c426561569544a4a17e1be668e6f599a920ffe56f0f3a65539d9; anchor=Header customization saves and restores without changing board state] | mobile/test/status_bar_layout_test.dart:93 [UTF8-LF sha256=52cb9e5aef5b21cb81477077b515c21c5108b075168eb410ce5617ba9614e447; anchor=Entire connection status icon and text open connection, errors stay inspectable] | tests/branding_test.mjs:12 [UTF8-LF sha256=c39528379a8b6e97561e0e0deb5e435a182f75bce2b385780c7b9ee853455fbb; anchor=actual Pealayer icon_data_from_bytes import] | tests/web_identity_test.mjs:40 [UTF8-LF sha256=c4824a7923009f8698e0cde21c1d693609d1af98f55c47dbc20a140293a576be; anchor=Actual Web application identity] | tests/interface_settings_test.mjs:33 [UTF8-LF sha256=102d6c411b732bad8106dd09358da3df3989d1140aa77c87a884c8072c66c6f3; anchor=Failed saves preserve the draft]","","Complete generic omissions and missing editors named in INTERFACE-CONTRACT.md; native/mobile/deployed acceptance remains open.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/MediaLibraryTab.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","853eacc37f9d53ba900b17682062c320711eef4f560b1474150a7912abc7d43a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/MediaSurface.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","251fe24c5946d813beacf8760e063e32fcb9978a6fe350890d5967576c4ce35d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/MediaTrackSelectors.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0eb6fd5d33db144dab7204131e6f0472bf1a0a3d446af4161c81189e68b64587","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/MelodySelect.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c82b79b849c6bc72ce8079dbf089630e2c44bb7305300c11c01477b1cac50782","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/NumericValueControl.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6f1e99cd5ae8ef0bae30d43a86f22a22371c6543498c5d8938e486cff151d218","pixel-group-layout | pixel-workbench","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","mobile/lib/pixel_corrections_editor.dart:115 [UTF8-LF sha256=7b307453c53c084f22bb5e3845b43ba56e34a83633447b36041c4b1facad64c5; anchor=class PixelCorrectionNumberControl] | assets/web/pixel-groups.js:44 [UTF8-LF sha256=24abe18fbf1f11fe248f2f1ac5fe6b7149014be1290fae0f8b3bef59c256e617; anchor=function create(options)] | assets/web/feature-workspaces.js:299 [UTF8-LF sha256=13a51897342b90e6d328d84da0c7272fd6f909fb84996de23a164bb48feb88fa; anchor=function stepped(] | assets/web/command-transport.js:63 [UTF8-LF sha256=829ced127abe461595384f58822a18dc1e8e5388a6907bca945d566d53fe1e73; anchor=if(path==='/api/led/diagnostic')] | assets/web/studio.css:122 [UTF8-LF sha256=4d87d4cc97b3a53b2144912cd0c123ebc21b9b7677bdb02e6901a6c695e36e22; anchor=.studio .mapping-pixel>.mapping-dot] | assets/web/controller-copy.json:300 [UTF8-LF sha256=441c7b489b0e5b683da61cd667f9251d3542e0be57b1abb2e0780497455a0b22; anchor=Rule preview]","Correction-editor owner read the complete donor. Adapted bounded +/- stepping, disabled endpoint controls, named numeric fields and typed-value validation into the existing Flutter theme; no additional styling framework or duplicate settings owner. | Per-group pixel sizing additionally adapts the bounded +/- stepper, local numeric draft and explicit commit to the existing DOM Web controls. Physical address ranges preview cumulative counts without writing the board; save uses revisioned ownership and exact readback. The complete donor was reread for this addition. | Reread the complete donor for Web correction per-row pixel and signed-offset steppers. Adapt bounded one-pixel +/- and disabled endpoints, input labels and local-only draft edits using existing shared icon buttons, with fixed square geometry. Approximate rule labels reuse the actual Flutter pixelCorrectionSources/pixelCorrectionAddress projection, respecting preceding enabled rules, current physical spans and logical permutation; stale/missing layouts fail closed. | The Web per-rule cursor action reuses the same bounded local draft control and actual Flutter selectedDiagnosticPixel/importPixel semantics. Copy the selected output slot only, not projected raw/lit source; an unsent diagnostic selection remains authoritative over newer live observations until following is requested. Missing/invalid capability or cursor disables the action; captured row/model/owner checks reject late retired callbacks. No preview/diagnostic/configuration command or clipboard runtime is added. | Reread complete NumericValueControl and actual PCController pwm_control at their inventoried hashes. Hardened the existing Web group bounded editor: a reproduced old-session reset callback removed a new peer's row. Group inputs, +/- and Use default now require captured peer/boot, model, render generation, row identity and current nonbusy ownership. Same-peer redraw and old-boot retained callbacks are regression-tested; edits remain local until explicit Save. | A second reproduced regression replaced a cleared count with its previous5 after structural redraw. Following the reread donor's owned-draft/validated-commit split, Web group rows now retain typed strings across redraw and peer return, mark aria-invalid and block Save in both UI and command callback while invalid. Explicit +/- recovers from last valid value; only normalized numeric overrides enter the board contract and verified Save retires drafts. | Reread the complete bounded donor for correction-row safety too. Reproduced a cleared correction pixel reverting to1 after Add rule; pixel/offset typed drafts now survive reorder/redraw/peer return with model-level Save validation and numeric-only payloads. Every row toggle, kind, numeric input, step, cursor, reorder and delete requires its original peer/model/rendered row identity. Stale callbacks cannot alter replacement rows; valid Save/readback remains explicit. | For local preview, read the full existing Flutter pixel_corrections_editor.dart and actual PixelCorrectionsPage.mappingPreview method. Reuse the existing port of pixelCorrectionSources in an explicit Applied/Draft wire-map selector: applied data stays board-provided, drafts project ordered enabled rules locally, invalid text clears the projection, view choice remains peer-model scoped, filtering sends no requests, and closed maps do not build hidden tiles. No board request, preview lease, write or duplicate renderer/transport is introduced. | The same bounded numeric/local-draft controls now expose board-owned diagnostic timing/brightness under a capability-gated Advanced section. Actual full Flutter pixel_diagnostic.dart, complete commandPacket function and current firmware command/PixelDiagnostic/receipt contracts were read. Editing sends nothing; explicit Show uses shared typed WS-first transport and exact option/revision readback plus published-frame observation. One pinned read may settle pending publication, never a mutation replay. All off forces global clear/solid defaults independently of invalid overlay/effect drafts. | Reread complete unchanged NumericValueControl, PCController PwmSetpointControl and complete current Flutter pixel_corrections_editor.dart, plus observedRgb/mappingPreview function slices in pixel_corrections_page.dart (page file SHA256 392cc722fcfcf4731c6ef8880d31d26ba52a4a926be32f8b415669e42a9513a0; not a whole-page read claim). Adapt PixelCorrectionDiagram into the existing Applied/Draft Web map: fixed32px circles, wire numbers above, projected source numbers inside, crossed black slots, neutral dashed unavailable RGB and luminance-selected text. Actual LedGrid pixelFrameJson/presentation slices establish published_ as pre-correction scene data. RGB requires current peer, completed published frame, exact capacity, valid numeric/hex fields and matching acknowledged group topology. Color updates reuse circles without structural redraw or new polling/subscriptions/commands. Expanded browser/RTL/touch acceptance and per-rule focused-window diagrams remain pending. | Verified unchanged Pealayer NumericValueControl source and reread actual Flutter operationOption/PixelCorrectionDiagram function slices. Reuse operationOption's clamped six-slot window and prefix-through-current-rule projection in optional collapsed Web row disclosures; actual enabled/global flags remain authoritative for this local projection. Main map and compact row windows now share mappingPixel/paintDiagram and existing observed RGB validation, not duplicated engines. Descriptions include black/remove/positive-negative shift semantics with Persian copy. Invalid current/prior numeric drafts clear dependent previews, late retired disclosure callbacks are fenced, live RGB retains nodes, reorder carries expanded presentation state and no previewOpen field enters canonical saves. Browser expanded/RTL/touch and rich operation-menu parity remain open. | 2026-10-29 game-settings audit rereads the complete unchanged NumericValueControl and EffectGroupDialog plus current mobile typed command producer. Keep typed finite/bounded validation and explicit draft commit: Web transport now admits the boot/display/timer fields already exposed by its form, validates first/last and booleans, and preserves WS-first same-request receipt ownership. Unknown fields and invalid types still fail before sending; isolated transport/DOM tests cover controls. This fixes actual command coverage rather than weakening rejection or claiming live hardware acceptance.","React/CSS execution and media-value callers [replaced] | Custom fine/coarse modifier step configuration and clipboard context menu [pending]","React/CSS execution and media-value callers: Flutter or Pakar's canonical DOM owns rendering. The bounded-control interaction is adapted rather than embedding a second framework; pixel addresses and signed offsets replace media-value domains. | Custom fine/coarse modifier step configuration and clipboard context menu: The pixel-count editor uses bounded integer one-pixel steps and explicit reset. Donor custom modifier steps/clipboard menu were read but are not yet imported; this is a scoped sizing feature, not complete NumericValueControl parity.","mobile/test/pixel_corrections_editor_test.dart:145 [UTF8-LF sha256=ab953eb195c5f8ba3c086666c2f5a7444bccd7d2fb03433c2434d412a8aedeb4; anchor=void main()] | tests/web_feature_workspaces_test.mjs:407 [UTF8-LF sha256=e02d06ce8ffcd53f00ecbb4524396aebe31d9035bb6e575b10fc47cca4eb1a7a; anchor=Retired group row callbacks cannot mutate replacement draft] | tests/web_command_transport_test.mjs:59 [UTF8-LF sha256=14e3581c9d9289f2059c9f23f4de5bcd4ff803e813f7c9db062ca0408e4b671f; anchor=captured.composite,'overlay'] | tests/web_control_presentation_test.mjs:96 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Pixel circles retain fixed square geometry] | tests/web_feature_workspaces_test.mjs:42 [UTF8-LF sha256=e02d06ce8ffcd53f00ecbb4524396aebe31d9035bb6e575b10fc47cca4eb1a7a; anchor=Rule window includes its prefix, not later rules]","","Rust correction editor does not yet expose these new per-row/preview controls; no cross-client parity claimed.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/PlaybackButton.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","10b2c97e2b85d1f5390790992b53a8250dc49847ce0c4b1679f5928e30b9fe5a","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","assets/web/application-utilities.js:37 [UTF8-LF sha256=20744bfcfc0968df0205a46aeb3bdd513b205f0f91796b168dd99dcb16fdbbf1; anchor=function setControlCaption(] | web/index.html:3274 [UTF8-LF sha256=aa518a96eea2dd7d787cb0a31d5191c78886e2e31605eda64458a0cea728835d; anchor=function renderAssignmentTools(]","The Web owner fully read the actual canonical Pealayer component. Preserve its authoritative-snapshot action meaning, disabled unknown/unavailable state and matching icon/label/accessibility rather than optimistic click-state toggling. Existing cell ACK/capability gates remain authoritative; state-caption refresh uses the existing semantic state model and stable label slot. Selection by lost/won identity remains correct even when a user changes the configured RGB color. | Only canonical Pealayer web_ui/src/styles.css lines 77-102 and 521-552 were inspected as styling dependencies, SHA256 2d08f0129a28e29b55a137c708b9296d5282bd0aaffb6c2fdba6b9d5cf16462d. Fixed borders, optical glyph alignment and restrained tonal states were adapted; the whole stylesheet is not certified read.","Play/Pause media command and React/Ant component runtime [not-applicable] | Full cross-surface unavailable/focus/hover/runtime acceptance and unreviewed CSS sections [pending]","Play/Pause media command and React/Ant component runtime: The board application has no media player; only authoritative state and visual/action identity are adapted into its existing DOM model. | Full cross-surface unavailable/focus/hover/runtime acceptance and unreviewed CSS sections: Source assertions do not certify installed browser state changes or every donor style. Current optical layout and peer-state checks remain separate acceptance gates.","tests/web_control_presentation_test.mjs:87 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Selection follows lost semantic identity even when its configured color is green] | tests/web_control_presentation_test.mjs:93 [UTF8-LF sha256=f563ad7b87d95fdb08b84737436774bfc4d21a709678007287d25706f05c2272; anchor=Semantic caption updates reuse the stable label slot]","","Issue #3: inspect installed semantic action state, keyboard/accessibility and all responsive sizes; no claim of completed donor Web application parity.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/PlayerInfoTab.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3d771590a1e6b5392ed8f294068a26ee5403284808eab786eca6caeaf3eff2a7","updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/PreferencesTab.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","30a63cc1db61a46346c2d4c30ce011dc74081a8a6da2e29853e56d39811a0de1","mobile-settings | localization | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","mobile/lib/device_settings_page.dart:18 [UTF8-LF sha256=b187bcc1ed640dc8b7052ce03c4f36a840289396f8908dbc77b967190eb9e9ee; anchor=class DeviceSettingsPage] | mobile/lib/device_settings.dart:413 [UTF8-LF sha256=0c10e5c712bae2b4fe2f706326115ee703f07e426a64a50728c09575efb71e9a; anchor=class DeviceSettingsSession] | mobile/lib/led_backend_control.dart:9 [UTF8-LF sha256=4769c24f714e241c5acb41987f5cbefef35681a86fbcda40c92ffb7db934c33a; anchor=class LedBackendControl] | mobile/lib/led_backend.dart:5 [UTF8-LF sha256=ccea33fd885d514027e622061bf55daf4d0c3564f977529b9956c6df42d57491; anchor=class LedBackendState] | web/index.html:2641 [UTF8-LF sha256=aa518a96eea2dd7d787cb0a31d5191c78886e2e31605eda64458a0cea728835d; anchor=function renderLedBackendControl(anchor){] | web/index.html:2612 [UTF8-LF sha256=aa518a96eea2dd7d787cb0a31d5191c78886e2e31605eda64458a0cea728835d; anchor=function waitForLedBackend(]","Actual contract-driven sections/selected-section navigation, grouped labeled typed controls, contextual options, retained draft on section changes, descriptions, load/save status and reload adapted to Flutter DeviceSettingsPage using the existing shared Pakar catalog. Tablet uses a searchable navigation rail; phone uses wrapping section chips. Actual Phosphor repertoire supplies verified icon codepoints. | Actual valueAtPath/updatePaths structured settings ownership adapted to separate public drafts and secret actions. DeviceSettingsSession uses the fully read canonical Pakar native/Web validation, observe/conflict and positive acknowledgment/exact public readback workflow rather than generic optimistic UI success. In-memory secrets never enter saved client preferences; one POST body per explicit operation, no mutation replay. | Runtime LED transmitter checkpoint reread all563 donor lines and verified SHA30a63cc1. Adapt actual contract-derived select options, field-scoped saving state and external-observation refresh to Flutter LedBackendControl/LedBackendState and the single canonical Web selector. Only the intersection of advertised compiled choices is offered; selection reflects actual driver telemetry and renderer mode stays independent. Replace updatePaths optimistic save with one correlated mutation and same-peer requested/active/readiness/error/persistence observation. WebSocket events settle the result; configured bounded HTTP fallback reads never replay the mutation. This is a scoped mechanism adaptation, not a direct TSX component import or full PreferencesTab parity.","updatePaths optimistic autosave to /api/config and playback.preference_set [replaced] | Ant Design components and ServerFilePicker transport [replaced] | AccentColorPicker, color swatches, appearance live preview, NumericValueControl steps/defaults, multi_select rich options, replacement_list add/delete, Collapsible groups, ServerFilePicker and refreshAudioOutputs two-stage option refresh [pending] | tr(locale, ...) complete control/description localization [pending] | timelineWheelPreferences merge, playback audio-output RPC and media-extension preference consumers [not-applicable] | Current ColorDropdown custom/accent popup, discrete choice_slider indexed preview/commit and NumericValueControl persisted per-field adjustment steps [pending]","updatePaths optimistic autosave to /api/config and playback.preference_set: These are Pealayer state/RPC contracts, not Pakar persisted board endpoints. Password replacement and network restart require explicit confirmation, positive accepted/updated ACK and exact public readback. No optimistic physical save success or automatic write replay. | Ant Design components and ServerFilePicker transport: Android Flutter cannot import TSX/Ant Design components directly. Actual section/group/control logic is adapted to Material controls with the shared Studio palette, Vazirmatn and verified Phosphor glyphs. Mobile firmware now uses the fully read ServerFilePicker selection/ownership contract with native Android SAF; exact mapping and remaining generic consumers have their own comparison row. | AccentColorPicker, color swatches, appearance live preview, NumericValueControl steps/defaults, multi_select rich options, replacement_list add/delete, Collapsible groups, ServerFilePicker and refreshAudioOutputs two-stage option refresh: Device Wi-Fi/cloud/identity/access editors are implemented, not the entire application preference framework. Generic appearance, collection editors, defaults/step controls, reusable file picking and dynamic options remain useful and require actual client/device capability contracts and tests before importing their controls. | tr(locale, ...) complete control/description localization: Vazirmatn is loaded and the actual RayanLamp digit map normalizes numeric fields, but the new settings copy is English. Full mobile locale/direction must be audited and rendered before claiming Persian preference parity. | timelineWheelPreferences merge, playback audio-output RPC and media-extension preference consumers: Timeline/cue/media playback business was explicitly excluded from Pakar. Their generic dynamic-option and file-picker mechanisms remain pending above; they are not excluded as media business. | Current ColorDropdown custom/accent popup, discrete choice_slider indexed preview/commit and NumericValueControl persisted per-field adjustment steps: Current 563-line donor was completely reread. These generic typed controls are not in the mobile device settings implementation; shared appearance controls, structured batch changes and keyboard/locale acceptance must be imported with their dependencies instead of claiming the earlier section/group adaptation covers them.","mobile/test/device_settings_test.dart:307 [UTF8-LF sha256=f9887ced8439ac531c05348bc39f5ab7344c6386eade342d18809a50a2741751; anchor=Settings write $behavior: one POST] | mobile/test/device_settings_page_test.dart:409 [UTF8-LF sha256=41f54cfc79f980609f2c5b117534f0f054c3633627dcbefa170ef31493569ea2; anchor=Acknowledged $route handoff after old view closes] | mobile/test/capture_test.dart:195 [UTF8-LF sha256=9363580ff944f31aa581ed3e2eb1e882fade4cfcb22bdd218bc26af0fd7bb222; anchor=Capture must never issue a device mutation] | mobile/test/led_backend_test.dart:55 [UTF8-LF sha256=9f7ffb5cba172f4dd6f837ad2de1bfea3bcdf01bfa46779e0ffebc1af84d8ccf; anchor=Backend ACK is not applied state, and failure or unsaved choice never verifies] | mobile/test/led_backend_test.dart:193 [UTF8-LF sha256=9f7ffb5cba172f4dd6f837ad2de1bfea3bcdf01bfa46779e0ffebc1af84d8ccf; anchor=Backend control fits narrow view with errors and does not offer absent drivers] | mobile/test/led_backend_transport_test.dart:15 [UTF8-LF sha256=baf04d8697b6029abad475b4ae564bc9e052ec74cc4e1433d80365991ce372a3; anchor=WebSocket backend handoff] | tests/web_led_backend_test.mjs:93 [UTF8-LF sha256=bb4a14a6c5ec3e8df0b01581bc4ff5f6818a756e9b2808407d1b6097cf4db3d6; anchor=// Exercise shipped WS-first command transport + post success gating together.]","","Mobile firmware/update/backup and Android picker workflows are implemented in the separate ServerFilePicker row; physical acceptance remains. Complete connection/discovery controls, unsaved Android-back/quit protection, client appearance/localization, generic typed preference controls and applicable donor dependencies. Verify physical phone/tablet configuration readback and hostname/credential handoffs; current API lacks transactional compare-and-set and encrypted HTTP transport. | Transmitter model/widget/socket/DOM fixture coverage is not installed Android/tablet/browser hardware acceptance. Verify both directions, persistent reboot, driver/storage failures, small-screen layout and unchanged effects/current frame on the real board; prior generic PreferencesTab omissions remain open.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/PublishingAuthority.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","62cffd9ba3d502aaaf30c4dc52dba5f09e151c9cd4309b105b16c0ce36d5ef6d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/PwmPolicyEditor.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","10f7fa2276a093924c41c1dac3045c5d70e7291905ab5e42f97c4f2d566b042e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/RemoteControlTab.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4a3cd14c6ba51e4aa489230b5820a77b247a482c52eb8318dc43c16af055b13e","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/RemoteLocationDialog.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1b6571793fd747f13ebee92e078b9b2989f3b52178ea7756fe52be49d8f7e415","ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/RfManager.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e283b2479cf0f1f8e66dde43ddc61b6dd4e2a97a6ed3c3d8b89535011f541cd3","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/RfSavedRuleCards.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f8724fdb919712182b10f752914c9ce322fe4984fcec9ce5ddd53d6745bf2045","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/seekbar.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","50cfe8d64c183500ecb9a766a340b24437a214f6977abd400d3314db6d48913c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/SeekThumbnailPreview.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","957406b4b0a465dee14657300b4c86aca81f2a693b1e7312cb7cbf8b4ff6bce7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/SequenceTimeline.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","773b16ce81c478c3b1719de69efd1259e8ae9df48bffd2af637d94c3ee6f86d7","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/ServerFilePicker.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","df5b59007e0b726c815bed0eafcce87e4f5a6e4a59e8c79a1414f2cc7be89316","user-files | cell-assignments | mobile-firmware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/28","parity-gap","complete","assets/web/user-files.js:35 [UTF8-LF sha256=8b25d6925e5a604b95769d844c1c1d7d06ae9e49a33a9e2307bae5c75d77ec5f; anchor=function create(o)] | mobile/lib/documents.dart:19 [UTF8-LF sha256=9b447b248f21e855c2481e28c6c31e66969af5ab837fd32e4d57eb76164b9ff5; anchor=class AndroidDocuments] | mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/MainActivity.kt:52 [UTF8-LF sha256=262271e184d4287fa3e2a6dc8cac9cae7f5cb0cdf7e2b143ecfaa4288bdfd0cf; anchor=Intent.ACTION_OPEN_DOCUMENT] | mobile/lib/firmware_page.dart:17 [UTF8-LF sha256=391a60a7d166bcf295acd403826a5e696e617236debb525e794d6b9924ba8745; anchor=class FirmwarePage] | mobile/lib/firmware.dart:178 [UTF8-LF sha256=3d104c5c0e23ada43fc07a88092788e7be015e31b5b7cd38fc096ebd072ebd07; anchor=class FirmwareController] | mobile/lib/api.dart:1563 [UTF8-LF sha256=bbb407cc65ccd54e10d7a21328d07831ce5fa3eff70eebe99a6a10b3815257e8; anchor=Future maintenanceBytes]","Issue #28: reread the complete picker and preferenceFiles helper. Adapt bounded list/filter, explicit file actions and stale asynchronous reply rejection into the canonical Web Files panel. Board-managed names replace arbitrary host paths; uploads are staged and verified, and file replacement is explicitly confirmed. Original bytes and modification timestamps are kept together; PAX export preserves timestamps without claiming browser filesystem permissions. | Fully read actual typed single-file selection, disabled/unselected/loading state, extension filtering, cancellation, stale-result protection and explicit acceptance. Adapted into Flutter AndroidDocuments + native SAF; firmware imports are validated and separately confirmed before any upload. Parent navigation is locked during maintenance confirmation/picking and writes; selected bytes never automatically program either board. | Canonical Pakar desktop maintenance and actual firmware routes were read, not fabricated mobile endpoints. FirmwareController pins remote job/boot/hash/targets and verifies a fresh identity before apply/cancel; single-dispatch bounded HTTP refuses redirects/replay. FirmwarePage gates each ISP/OTA domain on individual live feature ACK, distinguishes stage/apply/completion, and exposes real full flash/EEPROM exports. | 2026-10-29: retain the existing document-export adapter while selecting a backup from the current acknowledged AVR maintenance owner. Urboot exports use the exact completed request-scoped artifact, not unrelated ISP files. Busy, wrong-boot, incomplete and replaced jobs fail before creating an Android document; exact full memory length and stable owner are checked. Exported backups remain historical recovery data, not asserted to be the current running AVR.","React/Ant Design modal/table row handlers, server /api/fs/browse, Directory.path/parent_path and AbortController network browse [replaced] | initialFile parent path, remembered folder, custom icon table/size labels and full localized picker controls [pending] | Current FileLocationSelect location/drive/network-root selector and disabled-while-loading navigation [pending]","React/Ant Design modal/table row handlers, server /api/fs/browse, Directory.path/parent_path and AbortController network browse: Android SAF owns user-granted document navigation, search, single selection and cancellation. ESP has no arbitrary host filesystem browse contract; inventing that endpoint or accepting Windows paths would be incorrect. The native picker reads bounded bytes on its executor; captured board ownership is checked after picker/HTTP awaits. Only a one-use user-created destination token can be exported, with no broad storage permissions. | initialFile parent path, remembered folder, custom icon table/size labels and full localized picker controls: SAF system navigation is available, but mobile app-owned retained-folder hints and a complete localized review/preview workflow still need actual provider/phone tests. Donor custom server file-browser behavior remains useful for native/Web preference consumers; this Android adaptation is not whole-app picker parity. | Current FileLocationSelect location/drive/network-root selector and disabled-while-loading navigation: Current donor was completely reread. The new FileLocationSelect dependency is not yet fully reviewed/imported for native/Web consumers. Android SAF provides provider-owned navigation but does not establish parity with the donor server's filesystem location contract.","mobile/test/documents_test.dart:38 [UTF8-LF sha256=641aee7d7a005c5c309683cf98154f571c1e3c398dd5674fc68b020807807df0; anchor=Changed owner while choosing export] | mobile/test/firmware_test.dart:267 [UTF8-LF sha256=dcdc186e4339fe92ff57d962eed1d5c9966c24c2f0de46d8170dc37c00c63cda; anchor=Lost mutating GET probe] | mobile/test/firmware_page_test.dart:164 [UTF8-LF sha256=a8f8dcbddecdb44e81142714c1f7874dbd99de08961b516cc3b81ab4970c885a; anchor=Cancelled file selection] | mobile/test/capture_test.dart:200 [UTF8-LF sha256=9363580ff944f31aa581ed3e2eb1e882fade4cfcb22bdd218bc26af0fd7bb222; anchor=Firmware capture must never issue a device mutation] | mobile/test/firmware_test.dart:508 [UTF8-LF sha256=dcdc186e4339fe92ff57d962eed1d5c9966c24c2f0de46d8170dc37c00c63cda; anchor=Disposed backup owner discards received bytes before document creation]","","Verify Android provider cancellation/rotation/process death and real import/export; actual board update/readback/power-loss acceptance and production APK signing remain open. Generic donor file-browser consumers and full locale/direction still require review. Shared manual AVR staging has no advertised hash/CAS; pinned remote job is preferred and manual limitation is explicit.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/SevenSegmentDisplay.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","07cb90f243998086623f6957a7dc14ee2eb9a8ad4c9a644ae74da68a37a78fce","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. legacy-unverified is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/SharedToasts.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1cff480ef57bf5bdd84c316e8b990611db7c21619c7763529c03abc0bc3726ba","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/SoundEffectFields.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","9b024984dc77ca37a4199afdcedb8f32b9fdc7149e9e618e8964c3c32b8159be","games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/StepRepeatFields.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","12aed954f80392f1e111fa8b5cd2842f2dc883469c561cdc2288796175504187","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/StudioTab.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","c2e36cec1fab36df6224c665c4fb4d374320a62c9820c16e046e30690b4a1642","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/TimeValueField.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","492b290193674b99e055606d2006c8b11c8e57381fec61abb7c68e8b7534870d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/VolumeControl.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5bb7d7d51744d3ff627b3406295eb650e5221055fa04deffa63c3e76090133c6","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/components/WebViewBoundary.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","eabda2c06bc1bc3f88d6f6f0790e0061e5857f2102c1fdf89a2ad01e7e0d60bb","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/controlBars.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","eae3066c6d65c4057248bcc9cb4191246a84320bd60df49bbd830c3f6f1decb0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/controllerErrors.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b7c5bec5e656b587637f77a72729fb4eb7bfeea3138d538fdbb9e642d3eb618c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/cueAuthoring.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e9b6489f7b321c71d269eb072e38e20f3622d6bf5943312433522a4f55634925","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/effectIcons.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0836bbb837af44ef85cc03a7fad3eec437dd321d20aaa759aab8d440ea36f90e","ui-shell | games-streaming","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/fileLocations.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2aca81029dce9db9b1989c63d6663d70943245bc13a4ae77b11156dd35b20fad","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/hardwareAvailability.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cd0f51eb347cfbf3f90505ed318497829ca84a763a16e52fd5e0c834591747ad","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/hardwareIdentity.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","f6b7b03b69478de271f531eb061ea216b60e1cdbfcbc6abadd1b3352c3b914a0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/i18n.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","331d2545379e36ea717fcf2876508315437bc5abe49923170f50a4f1bb1b47fc","localization","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","parity-gap","complete","assets/web/localization.js:19 [UTF8-LF sha256=fc7a39cae41e490fba858a8c7129abf0a7064811c486ddf9ba1b115b79e7c0fb; anchor=function uiTr(text,values)] | tools/generate-font-assets.mjs:62 [UTF8-LF sha256=fdf6b75dac5afebad8598abbe408cd44bbf09cb306d4db91ee515add5ebb1412; anchor=const dictionary={}] | firmware/esp/src/WebUi.h:795 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=// BEGIN SHARED LOCALIZATION]","Fully reread all 630 current donor lines through EOF. Actual fa-dictionary fallback semantics remain reused for application copy, rather than translating arbitrary runtime data. Applicable native dictionary subset generates into the canonical Web module and actual firmware HTML; the new generic hardware/status/font/control vocabulary is useful pending consumer work, not an automatic dictionary import. | Added system/explicit language and Auto/LTR/RTL preferences, owned-template text/placeholder/accessibility snapshots, per-browser low-write persistence, shared font route and immutable peer-name boundary. | Persian Web regression slice: controller captions now include preferences, network/cloud/access/firmware and cell dialogs; capability mode labels participate in dictionary generation. Live telemetry and dynamic accessibility labels refresh in the selected language, real addresses release stale caption ownership, option values remain protocol-stable, and Persian text omits Latin letter spacing. Read-only actual HTML browser inspection verified mobile-width preferences/settings and reversible persistent locale switching; this is not live board acceptance. | Native interaction checkpoint rereview: read the complete unchanged donor dictionary and tr through EOF, and the complete current localization runtime, font generator and its HTML-source/gzip helpers. Reviewed the generated dictionary-only change against HEAD and the generator migration to canonical web/index.html; current WebUi.h embeds the identical localization module through build-web.mjs. Shared font bytes, owned-caption/peer-value separation, reversible locale and dynamic-label tests passed via node tests/localization_test.mjs. These refreshed target hashes attest this localization slice, not the unrelated full Web application, deployment or exhaustive Persian acceptance.","Media-library, player, playback, cue/timeline and libmpv-specific Web dictionary/surfaces [not-applicable] | Remaining generic Web copy and native/Web/mobile preference synchronization [pending]","Media-library, player, playback, cue/timeline and libmpv-specific Web dictionary/surfaces: Those surfaces belong to excluded media business and would add unrelated controls, not controller capabilities. | Remaining generic Web copy and native/Web/mobile preference synchronization: The controller subset is integrated, not the entire donor Web feature set. Preferences/settings/cell captions and live status now have focused regression and read-only mobile-width browser evidence. Other dynamic errors, confirmations and advanced diagnostics, live-board and Android locale acceptance remain; browser locale is not silently written to another client or firmware.","tests/localization_test.mjs:45 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=No identical storage writes] | tests/localization_test.mjs:43 [UTF8-LF sha256=da500a29e5ebdb93f52cf275ec1e77f34881d5a66e729f99b67d3e29e1472249; anchor=assert.equal(attrs.placeholder]","","Finish remaining dynamic errors/confirmations/advanced diagnostic copy and controller-safe shared preference contracts; execute live-device and Android locale tests. Mobile-width actual Web fixture inspection is complete for preferences/settings, not hardware or exhaustive translation acceptance.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/main.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b7578041f5caa4aecf591daad49dcc16b418432952f4e8b3595f08b8abd78873","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/mediaControlsPolicy.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d2195135c00dd0b36b1743a4837977ae7bfe5fc3457d05bcfad96270e13290ed","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/mediaLabel.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d9f5a045fbe398f8e3a4f97753b1d974d4edcc38295a57036d0b8432f3465f02","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/mediaSession.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","cf032eef087338f65c6ca486f4287b495745b29afd7f971ea75d6f8f555df496","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/melodyCatalog.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e0b3bbe4b902b9c0f653dcfcefaba8f148bca88101d26b33b78e5774eca55386","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/messaging.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e2f8b33b5ba9e4983ed4ea78838aa0d41f5476a641a80803fbd2f532763cbb38","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/preferenceFiles.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","4580d1396b36f5a907cad6cf2f33a38486c3a7e6948a3bb222974e1b8a2a4af4","cell-assignments | mobile-firmware","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","equivalent-behavior","complete","mobile/lib/documents.dart:6 [UTF8-LF sha256=9b447b248f21e855c2481e28c6c31e66969af5ab837fd32e4d57eb76164b9ff5; anchor=bool preferenceFileAllowed] | assets/web/cell-assignments.js:3 [UTF8-LF sha256=510c03217f05a1938a27466a4dd571446d8db96cdffeb204109c5865632391d2; anchor=function cellAssignmentFileAllowed]","Actual case-insensitive dot-extension suffix rule translated directly to Dart preferenceFileAllowed and used by the real Android firmware picker. Additional bounds/name and image-format checks do not treat filename as authenticity. | Reread complete current donor through EOF with identical source hash. Adapted the same extensions.some(name.toLowerCase().endsWith) rule directly into the embedded Web JSON/CSV assignment chooser. Suffix is only admission; the bounded logical-cell semantic parser independently validates all rows before confirmation.","preferenceFileParent path regex [replaced]","preferenceFileParent path regex: SAF content URIs are provider-managed identities, not slash-delimited filesystem paths. Android owns the directory picker; deriving a parent by string slicing would select the wrong resource. Host/server parent navigation remains represented in the ServerFilePicker pending row, not silently excluded.","mobile/test/documents_test.dart:8 [UTF8-LF sha256=641aee7d7a005c5c309683cf98154f571c1e3c398dd5674fc68b020807807df0; anchor=Actual donor extension rule is case-insensitive] | tests/web_cell_assignments_test.mjs:12 [UTF8-LF sha256=98288cce817943f682428f6f3ce992f38591caf5d4568aafde7a55d067775200; anchor=CELLS.CSV]","","Physical Android document-provider verification is separate from exact helper equivalence.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/pwmCard.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1ef17e576921f1422f06fc0486572aa7642284cc98c70d0c39e0cac0b31d9935","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/pwmDrafts.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","593948d5662ccbb86b18fc4778907a3f899830e93a2ac9056181222adb817165","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/pwmPolicy.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e3faf4aa22877a0b6503bb8b4e07847084be2eea158824857d0ca29b9676b3f0","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/remote-location.css","10fc6604a9d6068eb57da2f00d7d9404238f00c8","bd063aee5d61b8ae380d894747ac8ad0d7d3971078ec2f6b6a7ca8597d13e84d","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/rf-manager.css","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6b84c381f383386bc646d6e3a10f1fd595a54e16d2937616ade40c464057cf2c","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/rf-presentation.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","80fcb835a2d1b9d108d20916f75d4959c9d5d0e5c2b9aaf6e5a600472b9fc172","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/rf-reception.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","e11b67861d7ae0a42f576ce2b1544b81855b0feb85dae13446174be329585cba","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/rf-saved-rules.css","10fc6604a9d6068eb57da2f00d7d9404238f00c8","0ed5053e0b3b836004b804e6cd9db82558f52c27b78f023f334c0947de5d33ba","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/rfBindingNames.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2282a81d3c39630b2b173bd6d9ec09e7801f7483fdcb56e4196cbd6a198c6624","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/seekPreview.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","66423333b22e2d455b5a1057598bde9abfcb580d68d496c57ccdd0a20cea8c56","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/shared-toasts.css","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d5b9b58bf54587e5726c2e236d0a60b6e2911c70ab7ea945c22933d92415b794","windows-desktop","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/5","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/statusWidgets.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","3b748364e740dba009eb781ee496b7890ba83f8f6e051ffba7560af5e02365e1","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/styles.css","10fc6604a9d6068eb57da2f00d7d9404238f00c8","2d08f0129a28e29b55a137c708b9296d5282bd0aaffb6c2fdba6b9d5cf16462d","localization | ui-shell | preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. stale-review is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/timecodeEditor.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","909317930eb43d8a41be86734d997ae2c6b4efa50e42dcf8057db903e223d649","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/timelineTime.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","6820ca9d8f9ca62f0cf08651eb4f6f1ccd8e8a68e68cb68e7a759173e658e3ee","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/timelineWheel.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","1910311a3acba2f1d22d9d4fb57d43e08bcf6ee91f3ea567e381ae90e8a487cd","table-viewport","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","web/modules/table-layout.js:7 [UTF8-LF sha256=30162a2894f72d2467b34fc2cb3e682e09b4da0a1b252ccf6579a25273b53542; anchor=function zoomAt] | mobile/lib/table_viewport.dart:158 [UTF8-LF sha256=d7fe024ea911c1610e36e88a8a1fc412e0b95c615584ebb30322d5870ee032a7; anchor=void zoomAt] | desktop/src/ui/shell.rs:409 [UTF8-LF sha256=015877d9b262b596d4e27fdddcbd03a42c8c1e1cbe2b15f46632a88bce7ccce8; anchor=egui::Scene::new()]","Read complete donor. Adapted exponential wheel zoom and pointer-anchor equation to two dimensions and fit-relative 0.5-8x scale. Flutter and canonical Web use this math; Rust uses the locked egui Scene implementation with matching anchor semantics and transformed hit testing. Fit follows the dock or client viewport; telemetry does not reset manual zoom. | Web presentation checkpoint reread the complete actual timelineWheel.ts dependency. The current table-layout attach changes only Fit/zoom button glyphs, translated captions and accessible names; zoomAt mathematics, gesture ownership and view persistence are unchanged. The target reference is rebound for that reviewed presentation change without claiming new zoom behavior or physical gesture acceptance. | Tablet refinement reread the complete donor and retained its anchored exponential zoom. Flutter now applies continuous scale ratios against current view state, including multiple updates before a render, hides explicit controls only for Android/iOS tablets at least 600 logical pixels on the shortest side, and gives the zoomed canvas touch/wheel pan ownership without stealing fitted-page scrolling. Phone/desktop controls and the same user-owned controller remain. Focused gesture tests and isolated tablet rendering are source/fixture evidence, not installed touch acceptance.","sequenceWheelNavigation time scale, duration and track gutter [not-applicable] | Configurable plain, Shift and Alt wheel policies and physical horizontal modifier precedence [pending]","sequenceWheelNavigation time scale, duration and track gutter: The controller table is a fixed spatial cell canvas, not a media sequence. | Configurable plain, Shift and Alt wheel policies and physical horizontal modifier precedence: Flutter now routes plain wheel to canvas panning while zoomed and Shift-wheel swaps axes; fitted view preserves ordinary page scrolling. Shared configurable plain/Shift/Alt policies and full physical-horizontal modifier precedence across clients remain unfinished; native Scene also supports trackpad pan.","tests/table_zoom_test.mjs:7 [UTF8-LF sha256=0d7b5629ce4967cdfad392d035e6bc8617876da1824326115c1604a0b1d66048; anchor=for(const factor] | mobile/test/table_viewport_test.dart:244 [UTF8-LF sha256=a68444f3d21c88ba16651920f6c22cb496cad082d609d69b59a66258a1ceb9b0; anchor=Pinch zoom]","","Issue #3: source tests do not certify deployed clients or real touch hardware. Preserve primary selection and order-edit ownership; verify native trackpad, tablet pinch and browser pointer behavior on installed clients.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/vite-env.d.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/webPlatform.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","d6ee8217c05e96be2e20f9a40ab4c46249d57f58871c661a31c33e2310a92f0e","application-identity | ui-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/10","parity-gap","complete","tools/generate-branding.mjs:18 [UTF8-LF sha256=816544b2525d3c9210a586b8c2c5d59ed6c51fab8ca4bda27fbf2edbdd451367; anchor='FAVICON':] | firmware/esp/src/WebUi.h:142 [UTF8-LF sha256=dcd9e175d488ecbcb4c824fa7c7fd2004c5da9411c67851831940a4ba8881a73; anchor=] | docs/BRANDING-PARITY.md:60 [UTF8-LF sha256=0bfa8122dc9d6034551304f2fed472ddebcff170e14a23f63011177aab75d2d3; anchor=## Explicit unfinished useful code and reasons]","Same resolved artwork binds favicon/touch/header before login; ESP embeds data instead of requesting a protected host filesystem icon. | Current 383-line donor was completely reread. Existing favicon/header/touch artwork mapping remains valid; this is not browser-platform parity.","storedBoolean/supportsStandaloneMode/useWebPlatform capabilities/events; install/share/toggleFullscreen/enableNotifications/applyUpdate; settings setters/signalInteraction [pending] | registerPealayerServiceWorker/update/controllerchange, wake-lock cancellation/visibility and offline badge [pending] | mediaTitle/current_video state icon resolution, MediaSession video metadata/play/pause/seek/chapter handlers [not-applicable] | Current app_icon_revision-qualified touch/manifest URL refresh, dynamic application-title metadata and explicit media-action callback retirement/position clearing [pending]","storedBoolean/supportsStandaloneMode/useWebPlatform capabilities/events; install/share/toggleFullscreen/enableNotifications/applyUpdate; settings setters/signalInteraction: Generic browser capabilities/lifecycle/preferences need controller-specific integration and tests; static branding does not certify them. | registerPealayerServiceWorker/update/controllerchange, wake-lock cancellation/visibility and offline badge: PWA manifest/high-resolution artwork/cache ownership and streaming-specific wake-lock state remain open. | mediaTitle/current_video state icon resolution, MediaSession video metadata/play/pause/seek/chapter handlers: Video title/track/session business is excluded; generic browser capabilities are still pending. | Current app_icon_revision-qualified touch/manifest URL refresh, dynamic application-title metadata and explicit media-action callback retirement/position clearing: Generic artwork revision/title refresh must be adapted to board-owned application identity and actual PWA resources. Retained stale media callbacks and position cleanup illustrate useful lifecycle patterns, not permission to expose playback actions on a controller. Generic event ownership must be tested in Pakar's real contexts.","tests/branding_test.mjs:12 [UTF8-LF sha256=c39528379a8b6e97561e0e0deb5e435a182f75bce2b385780c7b9ee853455fbb; anchor=actual Pealayer icon_data_from_bytes import]","","Complete named generic omissions with preference/endpoint/runtime tests; source checks are not deployed acceptance. See BRANDING-PARITY.md.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/workspacePresentation.tsx","10fc6604a9d6068eb57da2f00d7d9404238f00c8","b4e696358d80f3a3e6720b29f5921d5e478d9ec92a5c0aaac6562920259128b2","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/src/workspaces.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","43fba86291b61e60a132a30e6080fec91c25d700e0b6410760e2dc07e0dea24e","ui-shell","https://github.com/atomicdeploy/PakarController/issues/3","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/tsconfig.json","10fc6604a9d6068eb57da2f00d7d9404238f00c8","00adaef3cb5f1cc832be92b2867c32ec31a6fabd05b58a6a827eebfd782532ff","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" +"Pealayer","web_ui/vite.config.ts","10fc6604a9d6068eb57da2f00d7d9404238f00c8","5d1a2dbcbe761be8e775577274ced51d6a068e6b19af072f5d3fd698c75a9918","preferences","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/4","pending-comparison","not-certified-by-this-comparison","","","Not yet determined; not an accepted exclusion","No approved reason to leave this file out. screened is not behavior-comparison proof.","","","Read and compare this exact donor; map every applicable behavior and justify each omission.","Not established by source/hash/test-code comparison; see issue #2" "portable-shell","_codeql_detected_source_root","67c5dcb8a63f4055cbdaf02e9ff271c53b46410d","cdb4ee2aea69cc6a83331bbe96dc2caa9a299d21329efb0336fc02a82e1839a8","portable-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/29","equivalent-behavior","complete","third_party/portable-shell/README.md:1 [UTF8-LF sha256=dbdd9653cb23ba484160e050ed8c3c409d314b128ec0398620b391334c7bf24c; anchor=# Portable Shell source integration]","Inspected Git mode 120000 and target '.' at the pinned revision; accounted for without creating a recursive reference.","CodeQL root symlink to '.' [not-applicable]","CodeQL root symlink to '.': Environment-specific analysis marker is not shell code; recreating it would introduce self-referential source traversal.","tests/portable_shell_source_test.mjs:5 [UTF8-LF sha256=f9b52abd7672d2053463adad77078e55c4fdd0bb3102463ce8c20c3895193773; anchor=const source=]","","Issue #29: source/fixture acceptance only; no production flash or live USB/Telnet session acceptance in this integration task.","Not established by source/hash/test-code comparison; see issue #2" "portable-shell",".gitignore","67c5dcb8a63f4055cbdaf02e9ff271c53b46410d","b7abe7efbbcb839e230ceb828522604b59f4faaf7b28b697aecb4c9df9f77fe0","portable-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/29","equivalent-behavior","complete","third_party/portable-shell/README.md:1 [UTF8-LF sha256=dbdd9653cb23ba484160e050ed8c3c409d314b128ec0398620b391334c7bf24c; anchor=# Portable Shell source integration]","Build/editor artifact exclusions retained in the exact reference snapshot; Pakar keeps its existing repository ignore policy.","Global wildcard ignores [replaced]","Global wildcard ignores: Applying *.exe, *.a and IDE exclusions repo-wide would hide tracked recovery/test assets and existing project policies.","tests/portable_shell_source_test.mjs:5 [UTF8-LF sha256=f9b52abd7672d2053463adad77078e55c4fdd0bb3102463ce8c20c3895193773; anchor=const source=]","","Issue #29: source/fixture acceptance only; no production flash or live USB/Telnet session acceptance in this integration task.","Not established by source/hash/test-code comparison; see issue #2" "portable-shell","CHANGELOG.md","67c5dcb8a63f4055cbdaf02e9ff271c53b46410d","7dd7e6e515634cc0c81ff1b1528ad5f0e5c29631417c427d50916a0de132224f","portable-shell","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/29","equivalent-behavior","complete","third_party/portable-shell/README.md:1 [UTF8-LF sha256=dbdd9653cb23ba484160e050ed8c3c409d314b128ec0398620b391334c7bf24c; anchor=# Portable Shell source integration]","Read complete historical claims; retained verbatim as donor history, not imported as Pakar release certification.","Complete/security/performance claims [replaced]","Complete/security/performance claims: Source inspection shows placeholders and allocation in history/parser; an old claim of zero alerts cannot establish current safety.","tests/portable_shell_source_test.mjs:5 [UTF8-LF sha256=f9b52abd7672d2053463adad77078e55c4fdd0bb3102463ce8c20c3895193773; anchor=const source=]","","Issue #29: source/fixture acceptance only; no production flash or live USB/Telnet session acceptance in this integration task.","Not established by source/hash/test-code comparison; see issue #2" @@ -2259,8 +2265,8 @@ "portable-shell","tests/test_shell.c","67c5dcb8a63f4055cbdaf02e9ff271c53b46410d","f26c767cd4ab7471a586b3b1500f9a613cc0ce00ac3f0ad23733e0c04af526eb","portable-shell | device-shell","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/29","scoped-improvement","complete","tests/portable_shell_test.cpp:8 [UTF8-LF sha256=1ce65230a875baf56a04184dc7b586cc7c15946b2fb066b12453759a84afb31f; anchor=int main()] | tests/portable_shell_source_test.mjs:5 [UTF8-LF sha256=f9b52abd7672d2053463adad77078e55c4fdd0bb3102463ce8c20c3895193773; anchor=const source=]","Read all eight donor test scenarios; retained original tests and adapted independent-context, built-in, command-lookup, line-edit and VT100 output assertions into production-header fixtures.","Mock no-crash checks as completeness evidence [replaced]","Mock no-crash checks as completeness evidence: New tests assert exact bytes, safe aliases, bounds, password isolation, ambiguous/property completion and fragmented escape handling, alongside existing history/TUI/USB/lease tests.","tests/portable_shell_test.cpp:8 [UTF8-LF sha256=1ce65230a875baf56a04184dc7b586cc7c15946b2fb066b12453759a84afb31f; anchor=int main()] | tests/portable_shell_source_test.mjs:5 [UTF8-LF sha256=f9b52abd7672d2053463adad77078e55c4fdd0bb3102463ce8c20c3895193773; anchor=const source=]","Actual command/VT100 integration preserves bounded authenticated owners and adds tested, non-executing command/property completion instead of a Tab bell placeholder.","Issue #29: source/fixture acceptance only; no production flash or live USB/Telnet session acceptance in this integration task.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP",".gitattributes","431104072952f694a35b3a83c19f13fbb098ca5b","d7fdbf0bc704830296234f2143889503714b9798941d52de7d8c4de593862fcc","pu-foundation","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete",".gitattributes:1 [UTF8-LF sha256=3f36f7f02cd536503301801b4961dbc09a1ba4fb2c1ed0dad759be1d02ee61b9; anchor=* text=auto eol=lf] | docs/PU850-PARITY.md:307 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: foundation slice, 2026-10-19]","Every section/function read through EOF: cmd/bat/ps1 CRLF; sh/yml/yaml LF | Function-by-function disposition and exact remaining behaviors are recorded in docs/PU850-PARITY.md foundation slice.","Donor script-specific CRLF policy [replaced]","Donor script-specific CRLF policy: Current LF text/binary rules work with the actual cross-platform interpreters; no CRLF runtime requirement.","","","","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP",".github/dependabot.yml","431104072952f694a35b3a83c19f13fbb098ca5b","f418e551baccfcd1b21210c0c45fd5d4e75de0906e4e9aef8977e1a6368b9265","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete",".github/dependabot.yml:3 [UTF8-LF sha256=136887ba77b56544d0bcd367a31d2daaa7637ecdb8b997d63df6cb552d6f08e8; anchor=package-ecosystem: github-actions]","Read exact ecosystem/schedule/group settings and retain Pakar's existing pinned Action/Cargo/pub maintenance. Firmware registry pins use the new dedicated checker instead of pretending Dependabot understands Arduino board/library indices.","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging [replaced]","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging: Use exact successful main source/run/artifact identity and existing Pakar jobs. Automatic writes require an explicitly authorized runner/environment and repository opt-in.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Execute actual new GitHub jobs; verify bot policy and authorized runner/environment before activation. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP",".github/workflows/build.yml","431104072952f694a35b3a83c19f13fbb098ca5b","49d608184ca52242cc845026d05384081669eec57007733f43ede09539c79cb6","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete",".github/workflows/build.yml:106 [UTF8-LF sha256=2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e; anchor=name: ""🔧 ESP32-S3 + AVR""] | tools/firmware-report.mjs:57 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function artifactMarkdown]","Adapt actual artifact size/checksum/download summary and staged build workflow mechanisms into existing Pealayer-derived build.yml plus firmware-report.mjs. Retain separate matched firmware outputs and draft-release provenance; no external progress image or rewritten timestamp header.","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging [replaced]","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging: Use exact successful main source/run/artifact identity and existing Pakar jobs. Automatic writes require an explicitly authorized runner/environment and repository opt-in.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Execute actual new GitHub jobs; verify bot policy and authorized runner/environment before activation. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP",".github/workflows/tooling.yml","431104072952f694a35b3a83c19f13fbb098ca5b","06b31df1731e5ab45fb0f1c714f95c46470cf1006f6c50150dc9a461d95a52d0","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete",".github/workflows/build.yml:74 [UTF8-LF sha256=2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e; anchor=name: ""🧰 Scripts · ${{ matrix.os }}""] | .github/actionlint.yaml:3 [UTF8-LF sha256=5b3c6b07ca38aaadb14a1d6eb2d35ac83b705f065901fdafba8210afc9be4960; anchor=pakar-deploy]","Adapt actual tooling verification intent into Windows/Linux/macOS fixture/plan matrix before product jobs. Use one Node/PowerShell owner with explicit Windows-only utility boundaries; no donor-client build/test execution is falsely certified.","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging [replaced]","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging: Use exact successful main source/run/artifact identity and existing Pakar jobs. Automatic writes require an explicitly authorized runner/environment and repository opt-in.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Execute actual new GitHub jobs; verify bot policy and authorized runner/environment before activation. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP",".github/workflows/build.yml","431104072952f694a35b3a83c19f13fbb098ca5b","49d608184ca52242cc845026d05384081669eec57007733f43ede09539c79cb6","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete",".github/workflows/build.yml:108 [UTF8-LF sha256=88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861; anchor=name: ""🔧 ESP32-S3 + AVR""] | tools/firmware-report.mjs:57 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function artifactMarkdown]","Adapt actual artifact size/checksum/download summary and staged build workflow mechanisms into existing Pealayer-derived build.yml plus firmware-report.mjs. Retain separate matched firmware outputs and draft-release provenance; no external progress image or rewritten timestamp header.","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging [replaced]","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging: Use exact successful main source/run/artifact identity and existing Pakar jobs. Automatic writes require an explicitly authorized runner/environment and repository opt-in.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Execute actual new GitHub jobs; verify bot policy and authorized runner/environment before activation. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP",".github/workflows/tooling.yml","431104072952f694a35b3a83c19f13fbb098ca5b","06b31df1731e5ab45fb0f1c714f95c46470cf1006f6c50150dc9a461d95a52d0","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete",".github/workflows/build.yml:76 [UTF8-LF sha256=88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861; anchor=name: ""🧰 Scripts · ${{ matrix.os }}""] | .github/actionlint.yaml:3 [UTF8-LF sha256=5b3c6b07ca38aaadb14a1d6eb2d35ac83b705f065901fdafba8210afc9be4960; anchor=pakar-deploy]","Adapt actual tooling verification intent into Windows/Linux/macOS fixture/plan matrix before product jobs. Use one Node/PowerShell owner with explicit Windows-only utility boundaries; no donor-client build/test execution is falsely certified.","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging [replaced]","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging: Use exact successful main source/run/artifact identity and existing Pakar jobs. Automatic writes require an explicitly authorized runner/environment and repository opt-in.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Execute actual new GitHub jobs; verify bot policy and authorized runner/environment before activation. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP",".github/workflows/update-dependencies.yml","431104072952f694a35b3a83c19f13fbb098ca5b","b157e47dc961e437bdf4aa22c1f95a31f38a99cff01b6544edff4563c011e16a","pu-tooling | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete",".github/workflows/update-dependencies.yml:2 [UTF8-LF sha256=deaf864e3f11a7abb6f6c85c2958fef8deb6800338eb389ffd46504473951fca; anchor=name: ""📦 Firmware dependency updates""] | tools/firmware-dependencies.mjs:77 [UTF8-LF sha256=903bd1fdd6e50218cab22db4fc21fb64aee44da2b025faf329fcee4703506ab1; anchor=export function applyUpdates]","Adapt scheduled registry check and guarded pin-change PR proposal into update-dependencies.yml. Report-only default, exact locked pin file, draft/no-auto-merge, pinned Actions and no device or SDK writes.","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging [replaced]","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging: Use exact successful main source/run/artifact identity and existing Pakar jobs. Automatic writes require an explicitly authorized runner/environment and repository opt-in.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Execute actual new GitHub jobs; verify bot policy and authorized runner/environment before activation. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP",".github/workflows/upload.yml","431104072952f694a35b3a83c19f13fbb098ca5b","478acaff966c65549cd691c160dee24a635136b87f082b0cd3477710bf3ca8b7","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete",".github/workflows/upload.yml:2 [UTF8-LF sha256=aa6b4a47d77ea9890aea6099deb6580e55a08c5c5fe2872bb999c5b7e59179a5; anchor=name: ""📡 Verified firmware deployment""] | tools/deploy-artifact.mjs:8 [UTF8-LF sha256=0710b78d5359b0d6ece4dd48f9129acebe1809c370ed4bb6b6767fd4917bf55d; anchor=export function trustedBuild]","Adapt completed-build artifact-to-device flow into opt-in upload.yml/deploy-artifact.mjs. Verify exact repository/head/event/main workflow/run/SHA plus clean artifact report/hash before invoking the same current updater; no guessed latest/first binary.","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging [replaced]","Unconditional latest-success/first-binary auto-flash and donor-specific test/product packaging: Use exact successful main source/run/artifact identity and existing Pakar jobs. Automatic writes require an explicitly authorized runner/environment and repository opt-in.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Execute actual new GitHub jobs; verify bot policy and authorized runner/environment before activation. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP",".gitignore","431104072952f694a35b3a83c19f13fbb098ca5b","4e8df980915336db111442a9099dfefd1e01287b7925073f804e1726012e2059","pu-foundation","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete",".gitignore:10 [UTF8-LF sha256=2d5301c89aab48d6108d9c12c7c7a1ac32514aa3628944d07bc70463e080059c; anchor=~secrets.h] | docs/PU850-PARITY.md:307 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: foundation slice, 2026-10-19]","Every section/function read through EOF: logs/prerequisites/objects/link/PCH/library/executable/debug/kernel/IDE/build/SDK/private-header/Node/uploader/workflow rules | Function-by-function disposition and exact remaining behaviors are recorded in docs/PU850-PARITY.md foundation slice.","Donor product uploader output directories [replaced]","Donor product uploader output directories: Current target build/target and service node_modules exclusions apply; actual ~local.h/~secrets.h patterns are imported.","","","","Not established by source/hash/test-code comparison; see issue #2" @@ -2307,18 +2313,18 @@ "PU850-ESP","LocalLib/SSDPDevice.h","431104072952f694a35b3a83c19f13fbb098ca5b","3d94b63400ab64c0e556b1e73c722b40f7adade996aaf40ce73f88d1d0ab7cf2","lan-link-discovery | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/19","parity-gap","complete","firmware/esp32s3/src/SsdpDevice.h:98 [UTF8-LF sha256=11297a36d29bade8c44c67ce9bb9f805429c633d0f1f6164cfb2c2f9667291da; anchor=class SsdpDevice {]","Network agent fully read the actual donor; evidence owner reviewed the complete header diff. Retains packet templates, bounded queue and metadata fields, public discovery/description setters, cache interval and protocol structures. Adds truthful running() state from the real socket/interface.","ESP8266WiFi/WiFiUDP/IGMP includes, ProductConfig and extern singleton declaration [replaced]","ESP8266WiFi/WiFiUDP/IGMP includes, ProductConfig and extern singleton declaration: ESP32 WiFi, explicit socket adapter, Pakar DiscoveryConfig and namespace-owned instance replace platform-specific includes/global ownership. SERVER announces ESP32-S3 rather than falsely identifying as ESP8266. Useful public protocol behavior is retained; physical discovery remains open.","","","Validate actual S3 AP/STA multicast membership, M-SEARCH responses, alive/update/byebye/rename lifecycle, interface-correct LOCATION, escaped description and router/phone interoperability. Source anchors and compilation do not prove on-LAN discovery.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","LocalLib/Telnet.cpp","431104072952f694a35b3a83c19f13fbb098ca5b","a78d88c149d19d8989c6db3dce0731189c2bf46c45fd64b73e9871a80f6c9bdd","device-shell | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","firmware/esp/src/TelnetShell.h:7 [UTF8-LF sha256=69b28602442267c2c524cf05660f789725cbdfed3db8ef7ecb088c387a9d9e97; anchor=class TelnetParser] | firmware/esp/src/ShellService.h:450 [UTF8-LF sha256=988751a727abecc9737d9f7b9b3e8d14c8031deb761a83133632d404da2215df; anchor=void serviceDeviceShells()] | firmware/esp/src/ShellSettings.h:10 [UTF8-LF sha256=9e73a173b820cf54b70e4fc6506bccbb67fee5e4ab600fc9660503d05c491417; anchor=class ShellSettings] | firmware/esp/src/ShellBuild.h:5 [UTF8-LF sha256=64e2f53b7c399cd564fc41f942af57433a9baf3e0362190e138bd5a6f0ce4ce5; anchor=PAKAR_TELNET_SESSIONS]","Actual five-state IAC/option/subnegotiation parser, escaped IAC, server ECHO/SGA greeting and unsupported-option rejection are retained. Option state suppresses greeting-ACK negotiation loops. | Native WiFiServer/WiFiClient sessions use independent parser/editor/TUI/auth state, configurable bounded session count, 64-byte input budget, bounded output and nonblocking S3 socket writes; slow or overfull sessions retire rather than blocking LED/UART work. | ShellSettings persists enable, TCP port and color with checksum, pending write/readback/rename and unchanged-write suppression. Configuration schedules listener retirement/rebind after its response; published discovery port comes from the actual bound listener. | Authentication readiness/security revision fences both Telnet and framed USB; asynchronous close requests are deferred to the main loop so callbacks do not delete a live loop-owned editor/socket.","ESPTelnet dependency and ESP8266WEBSERVER_H synchronous-header suppression [replaced] | Single global TelnetShellSession and legacy product greeting callbacks [replaced] | TelnetNetworkAvailable stop/restart and mDNS remove on every AP/station loss [pending]","ESPTelnet dependency and ESP8266WEBSERVER_H synchronous-header suppression: Native WiFiServer/WiFiClient avoids the conflicting synchronous web header while retaining the actual Telnet protocol/parser behavior, not merely newline input. | Single global TelnetShellSession and legacy product greeting callbacks: Bounded independent sessions use Pakar application/hostname identity and the existing access owner. Telnet is still plaintext and is not claimed encrypted; disabling it or compile-time gating remains available. | TelnetNetworkAvailable stop/restart and mDNS remove on every AP/station loss: Source now supports durable enable/port rebind and truthful actual-listener discovery. Exact donor network-loss transition parity and multi-interface socket behavior still need explicit review/live acceptance rather than being inferred from settings tests.","tests/shell_service_test.mjs:18 [UTF8-LF sha256=287a22bebfcf0457e307416b1bb6524d71a28a8876646691b449df017b023be6; anchor=Actual shell fixture extraction markers changed] | tests/shell_service_test.cpp:137 [UTF8-LF sha256=076058d45758b87cf76c294e94827929dd74a7e7075cee533aa4ee7251f7e47b; anchor=Accept crosses millis rollover.] | tests/telnet_shell_test.cpp:18 [UTF8-LF sha256=9554e3744bd58435e52bbc0879ebcb6fe24a965eb9db111e05812d7db8739b62; anchor=No negotiation loops on greeting acknowledgements.] | tests/shell_wire_test.cpp:34 [UTF8-LF sha256=d3b4221251b6d150bdec3b9a9e78d3506e9d9c123b5699eef2919cc957da8562; anchor=fs.failRename=true] | tests/shell_wire_test.cpp:36 [UTF8-LF sha256=d3b4221251b6d150bdec3b9a9e78d3506e9d9c123b5699eef2919cc957da8562; anchor=!corrupt.enabled()] | tools/test-shell.ps1:5 [UTF8-LF sha256=51673e6f5ae86036a7a439214e3e456a0b8dab6f4dc17485e1244ca862174967; anchor=-Concern device-shell -Gate]","Source comparison and hash-bound fixture references only; deployment, terminal interoperability and hardware acceptance remain pending.","Compile and deploy the integrated shell, then prove simultaneous bounded Telnet sessions, AP/station/Ethernet listener and discovery changes, and framed USB recovery alongside normal protocol commands. | Exercise authentication changes, disconnect/reconnect, slow-reader backpressure and maintenance exclusion on the actual board; an immediate OK/queued command is not proof of AVR execution or physical LED/display/audio success.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","LocalLib/Telnet.h","431104072952f694a35b3a83c19f13fbb098ca5b","e85f5f1a4f2767323d9886313ddb2aabfd3acad7d781c2770bc8d2b2d2c6cb15","device-shell | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","firmware/esp/src/TelnetShell.h:7 [UTF8-LF sha256=69b28602442267c2c524cf05660f789725cbdfed3db8ef7ecb088c387a9d9e97; anchor=class TelnetParser] | firmware/esp/src/ShellService.h:450 [UTF8-LF sha256=988751a727abecc9737d9f7b9b3e8d14c8031deb761a83133632d404da2215df; anchor=void serviceDeviceShells()] | firmware/esp/src/ShellSettings.h:10 [UTF8-LF sha256=9e73a173b820cf54b70e4fc6506bccbb67fee5e4ab600fc9660503d05c491417; anchor=class ShellSettings] | firmware/esp/src/ShellBuild.h:5 [UTF8-LF sha256=64e2f53b7c399cd564fc41f942af57433a9baf3e0362190e138bd5a6f0ce4ce5; anchor=PAKAR_TELNET_SESSIONS]","Actual five-state IAC/option/subnegotiation parser, escaped IAC, server ECHO/SGA greeting and unsupported-option rejection are retained. Option state suppresses greeting-ACK negotiation loops. | Native WiFiServer/WiFiClient sessions use independent parser/editor/TUI/auth state, configurable bounded session count, 64-byte input budget, bounded output and nonblocking S3 socket writes; slow or overfull sessions retire rather than blocking LED/UART work. | ShellSettings persists enable, TCP port and color with checksum, pending write/readback/rename and unchanged-write suppression. Configuration schedules listener retirement/rebind after its response; published discovery port comes from the actual bound listener. | Authentication readiness/security revision fences both Telnet and framed USB; asynchronous close requests are deferred to the main loop so callbacks do not delete a live loop-owned editor/socket.","ESPTelnet dependency and ESP8266WEBSERVER_H synchronous-header suppression [replaced] | Single global TelnetShellSession and legacy product greeting callbacks [replaced] | TelnetNetworkAvailable stop/restart and mDNS remove on every AP/station loss [pending]","ESPTelnet dependency and ESP8266WEBSERVER_H synchronous-header suppression: Native WiFiServer/WiFiClient avoids the conflicting synchronous web header while retaining the actual Telnet protocol/parser behavior, not merely newline input. | Single global TelnetShellSession and legacy product greeting callbacks: Bounded independent sessions use Pakar application/hostname identity and the existing access owner. Telnet is still plaintext and is not claimed encrypted; disabling it or compile-time gating remains available. | TelnetNetworkAvailable stop/restart and mDNS remove on every AP/station loss: Source now supports durable enable/port rebind and truthful actual-listener discovery. Exact donor network-loss transition parity and multi-interface socket behavior still need explicit review/live acceptance rather than being inferred from settings tests.","tests/shell_service_test.mjs:18 [UTF8-LF sha256=287a22bebfcf0457e307416b1bb6524d71a28a8876646691b449df017b023be6; anchor=Actual shell fixture extraction markers changed] | tests/shell_service_test.cpp:137 [UTF8-LF sha256=076058d45758b87cf76c294e94827929dd74a7e7075cee533aa4ee7251f7e47b; anchor=Accept crosses millis rollover.] | tests/telnet_shell_test.cpp:18 [UTF8-LF sha256=9554e3744bd58435e52bbc0879ebcb6fe24a965eb9db111e05812d7db8739b62; anchor=No negotiation loops on greeting acknowledgements.] | tests/shell_wire_test.cpp:34 [UTF8-LF sha256=d3b4221251b6d150bdec3b9a9e78d3506e9d9c123b5699eef2919cc957da8562; anchor=fs.failRename=true] | tests/shell_wire_test.cpp:36 [UTF8-LF sha256=d3b4221251b6d150bdec3b9a9e78d3506e9d9c123b5699eef2919cc957da8562; anchor=!corrupt.enabled()] | tools/test-shell.ps1:5 [UTF8-LF sha256=51673e6f5ae86036a7a439214e3e456a0b8dab6f4dc17485e1244ca862174967; anchor=-Concern device-shell -Gate]","Source comparison and hash-bound fixture references only; deployment, terminal interoperability and hardware acceptance remain pending.","Compile and deploy the integrated shell, then prove simultaneous bounded Telnet sessions, AP/station/Ethernet listener and discovery changes, and framed USB recovery alongside normal protocol commands. | Exercise authentication changes, disconnect/reconnect, slow-reader backpressure and maintenance exclusion on the actual board; an immediate OK/queued command is not proof of AVR execution or physical LED/display/audio success.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP","LocalLib/UART.cpp","431104072952f694a35b3a83c19f13fbb098ca5b","8c8201cad39550cffb8567b279447a093061bba7b9a188dbe2f47dbd22ef9a45","pu-uart","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","libraries/BoardCore/src/SerialLink.h:12 [UTF8-LF sha256=99373bc4c090e34324cfd2ae8c94d6666c227ad7e157a47fbd85125aac6c13a0; anchor=class SerialLink {] | libraries/BoardCore/src/UartFlow.h:26 [UTF8-LF sha256=44f8638f725c9cf83a6f53639144f107aace1556dd254d6dcebcaed4853c6469; anchor=inline uint16_t receiveBudget(] | libraries/BoardCore/src/Protocol.h:219 [UTF8-LF sha256=6031ecc3f760f2e4fc7a766e5977b1ea990a602de27808ddb060e56bf81c6f47; anchor=inline bool decode(] | docs/PU850-PARITY.md:141 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C++ transfer and UART, 2026-10-19]","Every transport and endpoint function read through EOF; current bounded COBS/CRC/sequence/explicit ownership remains, with exact generic pending and business-only omissions. | Complete section/function decisions and concrete unsafe legacy defects recorded in the C++ transfer and UART section of docs/PU850-PARITY.md.","SOH/EOT framing/RevisionMatch/bulk ring/string endpoints/baud/drain/response match [replaced] | Generic panel/title/buttons/icons/language/clock/voltage/topology/file bulk/backpressure/cancel/session/diagnostic/logging [pending] | Weight/hidden-weight/tare/receipt/report payloads only [not-applicable]","SOH/EOT framing/RevisionMatch/bulk ring/string endpoints/baud/drain/response match: Bounded COBS/CRC/sequence/current capability owner replaces unframed legacy ABI. Exact modulo-zero, sizeof(pointer), U16 wrapping, ten-byte string overflow, AP wrong-interface and baud fallthrough defects are recorded in PU850-PARITY. | Generic panel/title/buttons/icons/language/clock/voltage/topology/file bulk/backpressure/cancel/session/diagnostic/logging: Not business exclusions. Current low-level transport and HTTP backup do not prove these high-level paired capabilities; unwired power is Unknown, raw credential traces prohibited, file receive and diagnostic placeholders not claimed implemented. | Weight/hidden-weight/tare/receipt/report payloads only: Exact PU weighing/report business operations have no PakarController consumer; this does not exclude generic settings, file, UI or diagnostic code.","","","Not business exclusions. Current low-level transport and HTTP backup do not prove these high-level paired capabilities; unwired power is Unknown, raw credential traces prohibited, file receive and diagnostic placeholders not claimed implemented.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP","LocalLib/UART.h","431104072952f694a35b3a83c19f13fbb098ca5b","13d3ec4617363d32ba58595a9e24137c45501cbda4f923b5e08e561e066e50fc","pu-uart","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","libraries/BoardCore/src/SerialLink.h:12 [UTF8-LF sha256=99373bc4c090e34324cfd2ae8c94d6666c227ad7e157a47fbd85125aac6c13a0; anchor=class SerialLink {] | libraries/BoardCore/src/UartFlow.h:26 [UTF8-LF sha256=44f8638f725c9cf83a6f53639144f107aace1556dd254d6dcebcaed4853c6469; anchor=inline uint16_t receiveBudget(] | libraries/BoardCore/src/Protocol.h:219 [UTF8-LF sha256=6031ecc3f760f2e4fc7a766e5977b1ea990a602de27808ddb060e56bf81c6f47; anchor=inline bool decode(] | docs/PU850-PARITY.md:141 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C++ transfer and UART, 2026-10-19]","Every transport and endpoint function read through EOF; current bounded COBS/CRC/sequence/explicit ownership remains, with exact generic pending and business-only omissions. | Complete section/function decisions and concrete unsafe legacy defects recorded in the C++ transfer and UART section of docs/PU850-PARITY.md.","SOH/EOT framing/RevisionMatch/bulk ring/string endpoints/baud/drain/response match [replaced] | Generic panel/title/buttons/icons/language/clock/voltage/topology/file bulk/backpressure/cancel/session/diagnostic/logging [pending] | Weight/hidden-weight/tare/receipt/report payloads only [not-applicable]","SOH/EOT framing/RevisionMatch/bulk ring/string endpoints/baud/drain/response match: Bounded COBS/CRC/sequence/current capability owner replaces unframed legacy ABI. Exact modulo-zero, sizeof(pointer), U16 wrapping, ten-byte string overflow, AP wrong-interface and baud fallthrough defects are recorded in PU850-PARITY. | Generic panel/title/buttons/icons/language/clock/voltage/topology/file bulk/backpressure/cancel/session/diagnostic/logging: Not business exclusions. Current low-level transport and HTTP backup do not prove these high-level paired capabilities; unwired power is Unknown, raw credential traces prohibited, file receive and diagnostic placeholders not claimed implemented. | Weight/hidden-weight/tare/receipt/report payloads only: Exact PU weighing/report business operations have no PakarController consumer; this does not exclude generic settings, file, UI or diagnostic code.","","","Not business exclusions. Current low-level transport and HTTP backup do not prove these high-level paired capabilities; unwired power is Unknown, raw credential traces prohibited, file receive and diagnostic placeholders not claimed implemented.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP","LocalLib/UART.cpp","431104072952f694a35b3a83c19f13fbb098ca5b","8c8201cad39550cffb8567b279447a093061bba7b9a188dbe2f47dbd22ef9a45","pu-uart","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","libraries/BoardCore/src/SerialLink.h:12 [UTF8-LF sha256=99373bc4c090e34324cfd2ae8c94d6666c227ad7e157a47fbd85125aac6c13a0; anchor=class SerialLink {] | libraries/BoardCore/src/UartFlow.h:26 [UTF8-LF sha256=44f8638f725c9cf83a6f53639144f107aace1556dd254d6dcebcaed4853c6469; anchor=inline uint16_t receiveBudget(] | libraries/BoardCore/src/Protocol.h:137 [UTF8-LF sha256=331f68dfe248de399304210d34bfc51d97a39d84610731d7abe6d44587634059; anchor=inline bool decode(] | docs/PU850-PARITY.md:141 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C++ transfer and UART, 2026-10-19]","Every transport and endpoint function read through EOF; current bounded COBS/CRC/sequence/explicit ownership remains, with exact generic pending and business-only omissions. | Complete section/function decisions and concrete unsafe legacy defects recorded in the C++ transfer and UART section of docs/PU850-PARITY.md.","SOH/EOT framing/RevisionMatch/bulk ring/string endpoints/baud/drain/response match [replaced] | Generic panel/title/buttons/icons/language/clock/voltage/topology/file bulk/backpressure/cancel/session/diagnostic/logging [pending] | Weight/hidden-weight/tare/receipt/report payloads only [not-applicable]","SOH/EOT framing/RevisionMatch/bulk ring/string endpoints/baud/drain/response match: Bounded COBS/CRC/sequence/current capability owner replaces unframed legacy ABI. Exact modulo-zero, sizeof(pointer), U16 wrapping, ten-byte string overflow, AP wrong-interface and baud fallthrough defects are recorded in PU850-PARITY. | Generic panel/title/buttons/icons/language/clock/voltage/topology/file bulk/backpressure/cancel/session/diagnostic/logging: Not business exclusions. Current low-level transport and HTTP backup do not prove these high-level paired capabilities; unwired power is Unknown, raw credential traces prohibited, file receive and diagnostic placeholders not claimed implemented. | Weight/hidden-weight/tare/receipt/report payloads only: Exact PU weighing/report business operations have no PakarController consumer; this does not exclude generic settings, file, UI or diagnostic code.","","","Not business exclusions. Current low-level transport and HTTP backup do not prove these high-level paired capabilities; unwired power is Unknown, raw credential traces prohibited, file receive and diagnostic placeholders not claimed implemented.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP","LocalLib/UART.h","431104072952f694a35b3a83c19f13fbb098ca5b","13d3ec4617363d32ba58595a9e24137c45501cbda4f923b5e08e561e066e50fc","pu-uart","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","libraries/BoardCore/src/SerialLink.h:12 [UTF8-LF sha256=99373bc4c090e34324cfd2ae8c94d6666c227ad7e157a47fbd85125aac6c13a0; anchor=class SerialLink {] | libraries/BoardCore/src/UartFlow.h:26 [UTF8-LF sha256=44f8638f725c9cf83a6f53639144f107aace1556dd254d6dcebcaed4853c6469; anchor=inline uint16_t receiveBudget(] | libraries/BoardCore/src/Protocol.h:137 [UTF8-LF sha256=331f68dfe248de399304210d34bfc51d97a39d84610731d7abe6d44587634059; anchor=inline bool decode(] | docs/PU850-PARITY.md:141 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C++ transfer and UART, 2026-10-19]","Every transport and endpoint function read through EOF; current bounded COBS/CRC/sequence/explicit ownership remains, with exact generic pending and business-only omissions. | Complete section/function decisions and concrete unsafe legacy defects recorded in the C++ transfer and UART section of docs/PU850-PARITY.md.","SOH/EOT framing/RevisionMatch/bulk ring/string endpoints/baud/drain/response match [replaced] | Generic panel/title/buttons/icons/language/clock/voltage/topology/file bulk/backpressure/cancel/session/diagnostic/logging [pending] | Weight/hidden-weight/tare/receipt/report payloads only [not-applicable]","SOH/EOT framing/RevisionMatch/bulk ring/string endpoints/baud/drain/response match: Bounded COBS/CRC/sequence/current capability owner replaces unframed legacy ABI. Exact modulo-zero, sizeof(pointer), U16 wrapping, ten-byte string overflow, AP wrong-interface and baud fallthrough defects are recorded in PU850-PARITY. | Generic panel/title/buttons/icons/language/clock/voltage/topology/file bulk/backpressure/cancel/session/diagnostic/logging: Not business exclusions. Current low-level transport and HTTP backup do not prove these high-level paired capabilities; unwired power is Unknown, raw credential traces prohibited, file receive and diagnostic placeholders not claimed implemented. | Weight/hidden-weight/tare/receipt/report payloads only: Exact PU weighing/report business operations have no PakarController consumer; this does not exclude generic settings, file, UI or diagnostic code.","","","Not business exclusions. Current low-level transport and HTTP backup do not prove these high-level paired capabilities; unwired power is Unknown, raw credential traces prohibited, file receive and diagnostic placeholders not claimed implemented.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","PRODUCT-PROFILES.md","431104072952f694a35b3a83c19f13fbb098ca5b","b396143fd17590b35455f91fc17fc15bfb52862d3419198df10da62b86340aaa","pu-foundation","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","docs/PU850-PARITY.md:307 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: foundation slice, 2026-10-19]","Every section/function read through EOF: identity/overrides; secret-safe flags; all unversioned transfer routes; range/ETag/hash-pair/downstream/redaction contracts | Function-by-function disposition and exact remaining behaviors are recorded in docs/PU850-PARITY.md foundation slice.","Full cross-language uploader/download/resume/gzip/manifest compatibility [pending]","Full cross-language uploader/download/resume/gzip/manifest compatibility: Read and adapt every actual client/test; strict current auth/identity/integrity and supported-release policy remain authoritative. PU weighing/report identity is specifically out of scope.","","","Read and adapt every actual client/test; strict current auth/identity/integrity and supported-release policy remain authoritative. PU weighing/report identity is specifically out of scope.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","ProductConfig.h","431104072952f694a35b3a83c19f13fbb098ca5b","61ad4d13aa9416ac0dc2008722f2c092eceed521fd980407a23beff2258e684a","pu-foundation","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","docs/PU850-PARITY.md:307 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: foundation slice, 2026-10-19]","Every section/function read through EOF: both profile IDs; every product/manufacturer/HTTP/WS/MNDP override; UPnP schema/service/cache/TTL/server; firmware/full-flash/bearer/redaction flags | Function-by-function disposition and exact remaining behaviors are recorded in docs/PU850-PARITY.md foundation slice.","Unmapped generic compile-default and override knobs [pending]","Unmapped generic compile-default and override knobs: Reconcile actual discovery/transfer consumers individually. Preserve centralized Pakar identity, no absent SOAP/GENA advertisement or bearer bypass.","","","Reconcile actual discovery/transfer consumers individually. Preserve centralized Pakar identity, no absent SOAP/GENA advertisement or bearer bypass.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","pu850-esp.ino","431104072952f694a35b3a83c19f13fbb098ca5b","75d5492a67cc754e7e6617354016e549856aa015f93016460eed024534f4f3b1","pu-routes | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","firmware/esp/src/NetworkConfig.cpp:253 [UTF8-LF sha256=b852ac3e88606148bb6feacffb12ec040fb1d26e28b0e3cb0042b0f66db35074; anchor=bool NetworkConfigStore::configure(] | firmware/esp/src/NetworkPath.h:56 [UTF8-LF sha256=cab7eb5a6e7985dfb8e5120b19991b9d434bcb4f083d5509678636b5adbda662; anchor=inline bool service()] | firmware/esp/src/EspFrontPanel.h:82 [UTF8-LF sha256=373453bd3730a23b62740ebcbd672d9de15bffac40068bb2e4868b4344ef8e04; anchor=Queries report the actual current connection/settings] | firmware/esp32s3/src/Discovery.h:16 [UTF8-LF sha256=d2cd172d2934642d6255106edb2a417a5bf128ff021dd353ad4de57262277cd0; anchor=mdnsReady_ = startDiscoveryMdns(] | firmware/esp32s3/src/DiscoveryMdns.h:16 [UTF8-LF sha256=970da9d6bf5565bc8d11729c002cfe45c04479621a51aa31827e637169399960; anchor=bool startDiscoveryMdns(] | firmware/esp/src/StaticAssetService.h:7 [UTF8-LF sha256=959c630339f75a5385ebde79f914746041786034e6b312af25cadaac62fc0bac; anchor=inline void serveStaticAsset(] | firmware/esp/src/NetworkTools.h:15 [UTF8-LF sha256=fcfdf0fd0c6aed205f4d3dfdf9942e1e4c9cd60d78e915ce5cacf1a12516f058; anchor=class NetworkTools] | firmware/esp/src/NetworkToolsSettings.h:6 [UTF8-LF sha256=fd347ade47d48bab7b85545a911e3fdaccfdc95d46fa6ed011554903d529c8fd; anchor=class NetworkToolsSettings] | firmware/esp/src/NetworkToolsBinding.h:4 [UTF8-LF sha256=64a39090d37d6278a1ec432694c9f1c967b1b72062bf53e33c8eae12834e776c; anchor=String networkToolsJson()] | mobile/lib/advanced_page.dart:11 [UTF8-LF sha256=25b0d7098fceb6b7b381f238783a37f0ac95a975e121b6057f3efcf6631aa279; anchor=class AdvancedPage] | mobile/lib/network_tools_page.dart:8 [UTF8-LF sha256=adb69dbb63ea65b2da6551dd89a8a9bc5604f75a36e845db781e62bc2bdf631e; anchor=class NetworkToolsPage]","Actual complete 65234-byte donor sketch read through EOF, not keyword-screened. WiFi_Setup, Settings_Read/Settings_Write, setNetFlags, hostname change and ConfirmSettings were compared to the integrated Pakar network/configuration owner. Persisted AP-only/STA-only/AP+STA, stable configured hostname without chip suffixes, station credentials, DHCP/static address/gateway/subnet/DNS and reconnect behavior map to NetworkConfigStore and NetworkPath; no second network service or PU business state is introduced. | Actual donor startup/service ownership is adapted to the S3 checked mDNS/DNS-SD registration helper and existing SSDP/MNDP interface owners. Every required service/TXT registration is checked, partial initialization is retired before bounded retry, and failed registration is not reported ready. AP SSID is explicitly bounded to32 bytes while full DNS hostname remains unchanged; a failed STA configuration preserves genuinely started AP recovery. | ESP settings are exposed through the same persisted network owner used by API/Web/native/mobile. The paired AVR front-panel adapter offers actual fresh mode/DHCP/connectivity/hostname preview and queues reconnect/scan; queries never replay stale snapshots or evict the previous mutation receipt. Scan admission is not misrepresented as completed SSID results. | Donor storage writes are adapted to checksum/exact private-layout validation, identical-write suppression, pending-file readback and rename. Invalid enabled-empty SSIDs fail closed to AP recovery; static profiles are retained while DHCP is selected. Accepted default-route and resolver changes are distinct, avoiding cloud-session teardown on DNS-only refreshes. | S3 latency policy adapts the actual donor WiFi_Setup wake/reconnect ownership to Arduino-ESP32 setSleep before and after interface startup: externally powered default explicitly disables modem sleep, with opt-in PAKAR_S3_WIFI_MODEM_SLEEP=1. Actual esp_wifi_get_ps readback is exposed separately from the requested policy; AP recovery is preserved even if setting latency policy fails. ESP8266 behavior and private persisted network layout are unchanged. | 2026-10-28 scoped time/network follow-up: reread dormant NTPClient /ntp/get slice 1148-1180 and LocalLib/Public.cpp and RemoteCommand.cpp through EOF. Preserve configurable time/scan intent, not commented blocking forceUpdate or blanket UDP success. NetworkTools uses the existing shared command owner, bounded DNS/ICMP/verified HTTPS worker, staged typed settings and peer-bound telemetry/events. DHCP NTP is configured before interface startup; no cloud enablement or board changes are implied.","ASA0002E PU-specific EEPROM/business settings and device/product globals [replaced] | Live configurable Telnet enable/port rebind and matching discovery lifecycle acceptance [pending] | S3 NBNS live acceptance, WINS/LLMNR compatibility and complete physical network editors [pending] | All generic sketch routes, cloud/time diagnostics, storage/control surfaces and complete donor-wide parity outside this network/front-panel slice [pending]","ASA0002E PU-specific EEPROM/business settings and device/product globals: Pakar has a different AVR/S3 protocol, matrix/game capabilities and private flash records. The reusable network identity/settings behavior is retained through current typed owners; blindly copying PU EEPROM addresses, serial/model state or business commands would corrupt identity/settings rather than add a supported feature. | Live configurable Telnet enable/port rebind and matching discovery lifecycle acceptance: The device-shell slice now exposes durable enabled/port/color via typed API/cloud commands and shell properties, closes/rebinds sessions on the loop owner, and advertises only the actually bound port. Focused registration/settings fixtures do not establish real restart, network-loss and multi-client lifecycle acceptance across AP/STA/Ethernet or parity in every client settings UI. | S3 NBNS live acceptance, WINS/LLMNR compatibility and complete physical network editors: The link-discovery slice implements bounded interface-bound S3 NB/NBSTAT replies; physical Windows/W5500 acceptance, WINS arbitration and LLMNR remain separate unfinished work. AVR front-panel mode/DHCP/reconnect/scan still does not implement full SSID/password/static-address text editors or completed scan-result navigation; those useful features remain open. | All generic sketch routes, cloud/time diagnostics, storage/control surfaces and complete donor-wide parity outside this network/front-panel slice: Dedicated AsyncWebServer/AsyncOTA/FirmwareTransfer/Authentication/SSDP/MNDP comparisons preserve their own exact mappings and remaining acceptance. A complete sketch read is not an assertion that every route, shell action, network mode or generic tool was imported, deployed or physically accepted; each remaining behavior still requires its owning row and live evidence.","tests/network_config_test.cpp:157 [UTF8-LF sha256=6e2d13df417cbd7373ccddd1fb1d6d1978ea4c13e6b20b123a628219bcf62e0a; anchor=AP remains genuinely available on STA apply failure] | tests/network_path_test.cpp:69 [UTF8-LF sha256=fb78d7364432aa95ae1e4fe547ee4599ec0e7f0e9a97a629c0445c6c7b842b07; anchor=state().routeChanges==fallbackRoutes] | tests/esp_front_panel_test.cpp:94 [UTF8-LF sha256=58220f795fcb6d16277308285f37f7cede5af7f431ceafd675ad8bfe6f3c5013; anchor=f=request(E::Scan);f.sequence=12;service.handle(f,110] | tests/discovery_mdns_test.cpp:52 [UTF8-LF sha256=145885cd9c34501d9f94205116bf4d231172e4a32901c17c84917120c3258f76; anchor=for(unsigned at=1;at<=15;++at)] | tests/async_http_test.cpp:253 [UTF8-LF sha256=1d3dc679c85dc177b7d255ad8a46eaa2d38f022f3f248d8c0720433aad50a9de; anchor=Static assets: negotiation, validators] | tests/web_compressed_test.mjs:27 [UTF8-LF sha256=c8b6d8c98234c067eda07d621cd8d677be1927cfa9ad6b3d091602e5d1dc917f; anchor=ETag covers actual gzip bytes] | tests/network_observation_test.cpp:4 [UTF8-LF sha256=19f9d1b0ff7d3cc14c9f54558daa2c0162656c382b01fa0a85d629544b07bec7; anchor=int main()] | tests/network_tools_settings_test.cpp:5 [UTF8-LF sha256=0b8ed672742308c4300acea079a628ead9bd0edec30b4448d63137d00868d94c; anchor=int main()] | mobile/test/network_tools_page_test.dart:43 [UTF8-LF sha256=beb532b298bee9de898b4f7d957aaf3b02f3e81812331fa17fa04926c49cf298; anchor=void main()] | tests/network_tools_wiring_test.mjs:10 [UTF8-LF sha256=f64edc0bf768ea0a67678cea42eb3abfa1e0f3e1eef4b841884fe45d45d7ef6e; anchor=const ntp =] | desktop/src/device_settings.rs:860 [UTF8-LF sha256=5bce7f14b9d6225d9aaa660838b8d07f7e14bda364c520a51f1c92e83d302ed6; anchor=fn async_wifi_scan_preserves_list_yields_between_reads_and_never_restarts_scan]","","Issue #2: verify persisted AP/STA/both across reboots, actual authorized DRS Tether scan/association, hostname/DHCP/static behavior and recovery without exposing credentials. Source fixtures do not prove RF, association or user visibility. | Verify real AP/STA/Ethernet mDNS/DNS-SD/SSDP/MNDP discovery/rename and HTTP/WebSocket service under concurrent matrix/cloud traffic; resolve intermittent HTTP response loss before production acceptance. Complete the useful Telnet lifecycle, NetBIOS/LLMNR and physical text/scan editors rather than certifying whole-sketch parity. | Issue #7: clock/DHCP NTP, verified HTTPS public-IP/Date, SSID selection and remote MQTT/WebSocket round-trip need actual deployment/network acceptance. HTTPS never bootstraps an unset clock insecurely; IPv6 public-IP and traceroute are explicitly unsupported. No production firmware/settings/cloud policy was changed in this source pass.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP","sketch.yaml","431104072952f694a35b3a83c19f13fbb098ca5b","54df8b54e56a589f85b981f15996813e447fc14245ea8048c5f87cfd1f3fdf51","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/firmware-dependencies.json:2 [UTF8-LF sha256=95a5da284e415b35c47d8f4e9048381ec41c3e181261c437ec91b9cdcf1090c1; anchor=""platforms""] | tools/build-firmware.ps1:208 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=esp32:esp32:esp32s3:CDCOnBoot]","Read complete donor board profile/platform/library locks. Retain exact ESP8266 core/ArduinoJson/ESP Async TCP pins where applicable, preserve existing reviewed Pakar dependency pins, and keep actual S3/AVR FQBN/flags in the canonical wrapper.","PU-specific board/profile and separate dependency/config write paths [replaced]","PU-specific board/profile and separate dependency/config write paths: Reuse applicable exact versions/official registries in one reviewed pin owner. Preserve operator config and Pakar hardware flags; no silent downgrade, duplicate Arduino_JSON API, unsupported library additions or automatic SDK initialization.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Run live registry check and review any candidate version changes with full build/hardware acceptance; pins were not upgraded by this slice. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP","sketch.yaml","431104072952f694a35b3a83c19f13fbb098ca5b","54df8b54e56a589f85b981f15996813e447fc14245ea8048c5f87cfd1f3fdf51","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/firmware-dependencies.json:2 [UTF8-LF sha256=95a5da284e415b35c47d8f4e9048381ec41c3e181261c437ec91b9cdcf1090c1; anchor=""platforms""] | tools/build-firmware.ps1:210 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=esp32:esp32:esp32s3:CDCOnBoot]","Read complete donor board profile/platform/library locks. Retain exact ESP8266 core/ArduinoJson/ESP Async TCP pins where applicable, preserve existing reviewed Pakar dependency pins, and keep actual S3/AVR FQBN/flags in the canonical wrapper.","PU-specific board/profile and separate dependency/config write paths [replaced]","PU-specific board/profile and separate dependency/config write paths: Reuse applicable exact versions/official registries in one reviewed pin owner. Preserve operator config and Pakar hardware flags; no silent downgrade, duplicate Arduino_JSON API, unsupported library additions or automatic SDK initialization.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Run live registry check and review any candidate version changes with full build/hardware acceptance; pins were not upgraded by this slice. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Temp/Always.h","431104072952f694a35b3a83c19f13fbb098ca5b","08fc271ee313bced76acf687e782aacd8eb03517e440910ff591c62aaedd0adf","pu-foundation","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","docs/PU850-PARITY.md:307 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: foundation slice, 2026-10-19]","Every section/function read through EOF: all scalar/pointer/flash/BOOL aliases/sentinels; High/Low/IsHigh/IsLow/byte/word/Pack/ReverseOrder/Null macros | Function-by-function disposition and exact remaining behaviors are recorded in docs/PU850-PARITY.md foundation slice.","Generic byte packing reconciliation [pending]","Generic byte packing reconciliation: Use existing stdint/typed COBS owners instead of width-dependent aliases and repeated-evaluation/token-fragment macros; full UART function review still required.","","","Use existing stdint/typed COBS owners instead of width-dependent aliases and repeated-evaluation/token-fragment macros; full UART function review still required.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Temp/ChartIndex.h","431104072952f694a35b3a83c19f13fbb098ca5b","f7b7cf3dd40a64c4de41420a0bdd7ce8aa4685ed895b30e7f7b838cb009069c7","pu-foundation","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","docs/PU850-PARITY.md:307 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: foundation slice, 2026-10-19]","Every section/function read through EOF: all access roles/chart classes/menu/form/list/page/reserved indices | Function-by-function disposition and exact remaining behaviors are recorded in docs/PU850-PARITY.md foundation slice.","Generic Wi-Fi/settings/diagnostics/terminal/password/clock screen behavior [pending]","Generic Wi-Fi/settings/diagnostics/terminal/password/clock screen behavior: Reconcile actual UI/session/runtime owners; only exact weighing/report/printer/calibration charts are PU business. Do not copy donor role credential hints.","","","Reconcile actual UI/session/runtime owners; only exact weighing/report/printer/calibration charts are PU business. Do not copy donor role credential hints.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Temp/CommonDefine.h","431104072952f694a35b3a83c19f13fbb098ca5b","e78774e8b164205479d73ec5bee1651160140d3fc3e5f0e204e6ff127fb958ca","pu-foundation","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","docs/PU850-PARITY.md:307 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: foundation slice, 2026-10-19]","Every section/function read through EOF: all generic readiness/result/calendar/toggle/comparison/format constants; ADC/weigh/calibration/DLC commands/limits/brands/status/factors | Function-by-function disposition and exact remaining behaviors are recorded in docs/PU850-PARITY.md foundation slice.","Generic readiness/result/calendar/format semantics [pending]","Generic readiness/result/calendar/format semantics: Map real typed consumers in UART/clock review; only exact load-cell/calibration/weighing command groups are PU business exclusions.","","","Map real typed consumers in UART/clock review; only exact load-cell/calibration/weighing command groups are PU business exclusions.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Temp/ESP_Master_Common.h","431104072952f694a35b3a83c19f13fbb098ca5b","33789905b19368d1f35d133fc38e16e8530e8841500ddfab5a0e5dcc2de421cf","pu-foundation","https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","docs/PU850-PARITY.md:307 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: foundation slice, 2026-10-19]","Every section/function read through EOF: revision/icons/network/internet/control tables; every prefix/numeric/string/request/order/bulk/file/LCD/diagnostic/programming suffix; groups/HTTP/results/baud/ResultPack | Function-by-function disposition and exact remaining behaviors are recorded in docs/PU850-PARITY.md foundation slice.","Generic network/clock/message/file/LCD/session/diagnostic/programming semantics [pending]","Generic network/clock/message/file/LCD/session/diagnostic/programming semantics: Complete UART function review and import useful current authenticated behavior; a second legacy parser/version selector is replaced by living COBS/capability/ACK. Only weight/tare/receipt/report payloads are business exclusions.","","","Complete UART function review and import useful current authenticated behavior; a second legacy parser/version selector is replaced by living COBS/capability/ACK. Only weight/tare/receipt/report payloads are business exclusions.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/build-all.ps1","431104072952f694a35b3a83c19f13fbb098ca5b","441ecba0c01223a1b91679cb531fccb37bb339b1938f196524489afdc53fa5b2","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/script-runtime.ps1:12 [UTF8-LF sha256=6fbe86a1ba2d5347abd1b70c4ab3dfee91f4dd7a58415324d9d291232ca07fcc; anchor=function Invoke-PakarNative] | tools/pakar.mjs:10 [UTF8-LF sha256=0875bb298a832a275d62e3595c2e2691c38eef442ac5246a85fb4445c3715bd3; anchor=export const commands] | tools/build-all.ps1:6 [UTF8-LF sha256=8175e248b0a79227467dc334dac932454df4b59d48588673f8b9446b086f31a3; anchor=$taskSelected=[Collections.Generic.HashSet[string]]]","Import actual case-insensitive HashSet selection, Write-Step, Assert-Executable, Invoke-Native, scoped working directory and elapsed result. Typed hashtable splatting selects Firmware/Desktop/Mobile, defaults to plans and stops on failure.","Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP","Tool/C#/build.ps1","431104072952f694a35b3a83c19f13fbb098ca5b","f3e6a8ed2eae52c8ab7f1f178b85c3a1fe4ad2a85bce2a27a67a0b1c07a24d6c","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/build-desktop.ps1:81 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Invoke-PakarNative -WorkingDirectory] | tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]","Adapt actual native-command failure preservation and build/test/publish stage dispatch into script-runtime.ps1 and build-all.ps1. Existing Rust/Flutter owners remain responsible for Pakar client outputs, with an explicit Release/preview choice.","Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced] | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP","Tool/C#/build.ps1","431104072952f694a35b3a83c19f13fbb098ca5b","f3e6a8ed2eae52c8ab7f1f178b85c3a1fe4ad2a85bce2a27a67a0b1c07a24d6c","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/build-desktop.ps1:83 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Invoke-PakarNative -WorkingDirectory] | tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]","Adapt actual native-command failure preservation and build/test/publish stage dispatch into script-runtime.ps1 and build-all.ps1. Existing Rust/Flutter owners remain responsible for Pakar client outputs, with an explicit Release/preview choice.","Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced] | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/C#/README.md","431104072952f694a35b3a83c19f13fbb098ca5b","0f40d6726756d86f30b82dac4fbe8fe11a5dc85ecba2cf8d68f5cb6771da0229","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","docs/SCRIPT-TOOLING.md:97 [UTF8-LF sha256=c245c9e419cddb2493d6b75b388d7f73d97ec8d69a08333d562670cbaeade3a8; anchor=Actual PU850 source import] | tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware]","Read full .NET documented upload/download/watch/backup/timeouts and platform outputs. Map one-shot preflight/identity/postboot behavior to the existing updater; document remaining download/resume/watch and package gaps rather than substituting a second client.","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass [replaced] | Content-stable auto-upload watch, resumable atomic CLI download and verified pre-update CLI backup [pending] | Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced]","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass: Current Pakar S3 uses raw application validation and structured JSON/update endpoints with board/boot fences. Mandatory auth-off/new-boot/full-SHA checks must not be weakened to preserve an incompatible donor wire protocol. | Content-stable auto-upload watch, resumable atomic CLI download and verified pre-update CLI backup: One-shot updater and readback are not complete watch/resume/backup parity. Import these only with peer identity, stable snapshot and no ambiguous-write replay guards; keep useful donor cases open. | Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Implement and exercise watch/resume/export/pre-update-backup contracts and remaining donor negative cases. | Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/C#/Uploader/ConsoleUi.cs","431104072952f694a35b3a83c19f13fbb098ca5b","727fcb1631802567cabff2c5212bc649496bfcbf39e344015653a40629705c9b","pu-client-manifest","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/script-console.mjs:14 [UTF8-LF sha256=2243be58e4dce21a7592865121e94ebdb64f21286f3333358c8259bb2bdedafb; anchor=export function createLogger(] | docs/PU850-PARITY.md:196 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C# manifest and deflate slice, 2026-10-19]","Entire file/sections read through EOF: All fields/constructors and heading/info/success/warning/error/detail/upload/download/transfer/poll/clear/verbose/write/sanitize/byte/color methods | Exact function dispositions are in the C# manifest/deflate slice of docs/PU850-PARITY.md.","TransferProgress independent streams/redirected10percent/bar; PollProgress spinner [pending]","TransferProgress independent streams/redirected10percent/bar; PollProgress spinner: Redirected progress buckets/bar/spinner remain useful pending. Actual C# independent stdout/stderr color policy is now imported into current Node logger with both redirection directions and NO_COLOR/TERM=dumb/JSON fixtures; stronger control/OSC sanitation retained.","tests/script_tooling_test.mjs:22 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=const independent=createLogger(]","","Redirected progress buckets/bar/spinner remain useful pending. Actual C# independent stdout/stderr color policy is now imported into current Node logger with both redirection directions and NO_COLOR/TERM=dumb/JSON fixtures; stronger control/OSC sanitation retained.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/C#/Uploader/DownloadApp.cs","431104072952f694a35b3a83c19f13fbb098ca5b","14c0831141b761e303110955ba0141bc683b0d80c18890b842dce6a65f77d920","pu-backup-update | pu-client-manifest | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/download-firmware.mjs:55 [UTF8-LF sha256=1fd7047bd6c35cc97eb30f6c9073f841db06b74bc5794c0278098e627bc466c8; anchor=export async function downloadFirmware(] | docs/PU850-PARITY.md:196 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C# manifest and deflate slice, 2026-10-19] | tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware(] | tools/peer-identity.mjs:54 [UTF8-LF sha256=869e9ea5db1887dde58b170c66d4c2b379aa6fb7d3c123adc5c023e1b8db1ce7; anchor=export function boardPeer(] | docs/PU850-PARITY.md:3 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Actual backup-before-update orchestration, 2026-10-19]","Entire file/sections read through EOF: RunAsync/DownloadOnceAsync/Finish/ReportFailure every retry/hash/commit/error branch | Exact function dispositions are in the C# manifest/deflate slice of docs/PU850-PARITY.md. | Actual Node performUpload and C# BackupInstalledFirmwareAsync backup-before-write sequencing now serves existing updater with explicit --backup/--resume-backup, first-read expected-peer fencing, metadata match and fresh auth/job/boot/latch admission before local upload or remote stage/apply.","DownloadOnceAsync progress/error categories and remaining transport/platform acceptance [pending]","DownloadOnceAsync progress/error categories and remaining transport/platform acceptance: Actual verified pre-update backup and ranged/resumable export now implemented through existing owners with same-peer/release/auth/job/boot/latch and no-overwrite checks. Watch/coalescing/graceful stop/skip-identical/progress, remaining gzip consumer/platform/filesystem/transport and exact unported negative scenarios remain pending as applicable. No donor tests, SDK builds, live update/restore or physical proof claimed.","tests/download_firmware_test.mjs:36 [UTF8-LF sha256=3c09ca35f587c750dc89e2ca21b8eca541a96bc99fe44f6eb50aab22ed2f74ac; anchor=for(const scenario of [] | tests/update_backup_test.mjs:53 [UTF8-LF sha256=9fad7b056864a821193c642fbc8739ca60f6b490fc358853906564fd242b75cc; anchor=Backup must precede even remote staging]","","Explicit verified backup-before-update and resumable export now imported. Remaining stable watcher/coalescing/graceful stop/skip-identical/progress, gzip consumer/platform/filesystem/transport and unported negative scenarios need applicable implementation/acceptance; no source fixture closes live/physical/restore gates.","Not established by source/hash/test-code comparison; see issue #2" @@ -2334,8 +2340,8 @@ "PU850-ESP","Tool/C#/Uploader/UploaderApp.cs","431104072952f694a35b3a83c19f13fbb098ca5b","eaf663a9f81dc3372a378ab6332177c7b17d22170020b572a7c865575eada68f","pu-backup-update | pu-client-manifest","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware(] | docs/PU850-PARITY.md:196 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C# manifest and deflate slice, 2026-10-19] | tools/peer-identity.mjs:54 [UTF8-LF sha256=869e9ea5db1887dde58b170c66d4c2b379aa6fb7d3c123adc5c023e1b8db1ce7; anchor=export function boardPeer(] | docs/PU850-PARITY.md:3 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Actual backup-before-update orchestration, 2026-10-19]","Entire file/sections read through EOF: RunAsync all preflight/manifest/hash/backup/skip/upload/retry/verify branches; VerifyAfterRebootAsync/WriteUsefulInfo/BackupInstalledFirmwareAsync; SynchronousProgress.Report and UploaderRuntime | Exact function dispositions are in the C# manifest/deflate slice of docs/PU850-PARITY.md. | Actual Node performUpload and C# BackupInstalledFirmwareAsync backup-before-write sequencing now serves existing updater with explicit --backup/--resume-backup, first-read expected-peer fencing, metadata match and fresh auth/job/boot/latch admission before local upload or remote stage/apply.","SkipIdentical policy and WriteUsefulInfo/progress consumer [pending]","SkipIdentical policy and WriteUsefulInfo/progress consumer: Actual verified pre-update backup and ranged/resumable export now implemented through existing owners with same-peer/release/auth/job/boot/latch and no-overwrite checks. Watch/coalescing/graceful stop/skip-identical/progress, remaining gzip consumer/platform/filesystem/transport and exact unported negative scenarios remain pending as applicable. No donor tests, SDK builds, live update/restore or physical proof claimed.","tests/update_backup_test.mjs:53 [UTF8-LF sha256=9fad7b056864a821193c642fbc8739ca60f6b490fc358853906564fd242b75cc; anchor=Backup must precede even remote staging]","","Explicit verified backup-before-update and resumable export now imported. Remaining stable watcher/coalescing/graceful stop/skip-identical/progress, gzip consumer/platform/filesystem/transport and unported negative scenarios need applicable implementation/acceptance; no source fixture closes live/physical/restore gates.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/C#/Uploader/UploaderOptions.cs","431104072952f694a35b3a83c19f13fbb098ca5b","dd61d42256dfa14782a6495794508fe240c7c57135316c4fa6332fbf0168234e","pu-client-manifest","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/pakar.mjs:59 [UTF8-LF sha256=0875bb298a832a275d62e3595c2e2691c38eef442ac5246a85fb4445c3715bd3; anchor=export async function main(] | docs/PU850-PARITY.md:196 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C# manifest and deflate slice, 2026-10-19]","Entire file/sections read through EOF: All enums/records/options/defaults/parse branches, URL/header/time/value validators, help/derived URL and ParseResult factories | Exact function dispositions are in the C# manifest/deflate slice of docs/PU850-PARITY.md.","Parse applicable connect/upload/download/reboot/poll/debounce/help/verbose/backup/watch options [pending]","Parse applicable connect/upload/download/reboot/poll/debounce/help/verbose/backup/watch options: Applicable timeout/help/verbose/backup/watch parity remains pending. Current explicit-run/strict URL/auth/identity/integrity owners reject no-verify/bearer aliases/arbitrary critical headers.","","","Applicable timeout/help/verbose/backup/watch parity remains pending. Current explicit-run/strict URL/auth/identity/integrity owners reject no-verify/bearer aliases/arbitrary critical headers.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/C#/Uploader/WatchUploader.cs","431104072952f694a35b3a83c19f13fbb098ca5b","53c27d11d347092c0addd510ac2de5e47ecd2e7ad7fa1dd26dbd4e1a7265ad54","pu-client-manifest","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/download-firmware.mjs:55 [UTF8-LF sha256=1fd7047bd6c35cc97eb30f6c9073f841db06b74bc5794c0278098e627bc466c8; anchor=export async function downloadFirmware(] | docs/PU850-PARITY.md:196 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C# manifest and deflate slice, 2026-10-19]","Entire file/sections read through EOF: Every WatchUploader, WatchStopController, BuildWatchMonitor, WatchStateMachine, observation/stable/stamp/identity member and branch | Exact function dispositions are in the C# manifest/deflate slice of docs/PU850-PARITY.md.","WatchStopController/BuildWatchMonitor/WatchStateMachine complete optional watcher lifecycle [pending]","WatchStopController/BuildWatchMonitor/WatchStateMachine complete optional watcher lifecycle: Generic event-plus-poll/generation/debounce/coalesce/graceful-stop/operation ownership/status/disposal remains useful pending real optional watcher. Existing hash+file-stability backup guard retained; metadata-only polling must not replace it.","","","Generic event-plus-poll/generation/debounce/coalesce/graceful-stop/operation ownership/status/disposal remains useful pending real optional watcher. Existing hash+file-stability backup guard retained; metadata-only polling must not replace it.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP","Tool/C++/build.ps1","431104072952f694a35b3a83c19f13fbb098ca5b","7379ae908f01676ed3db145f11579bb2bf07b79a7b5da2bdfe3cc8baa172e297","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/build-desktop.ps1:81 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Invoke-PakarNative -WorkingDirectory] | tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]","Retain executable preflight, bounded native failure handling and explicit selected component dispatch in shared PowerShell helpers. Windows package/capture utilities remain explicitly platform-specific, not advertised as Unix binaries.","Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced] | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP","Tool/C++/build.sh","431104072952f694a35b3a83c19f13fbb098ca5b","0af1f4b0ba2a7014d7f0938f69885b7d7a46763513408058cffeab4772d5827d","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/build-desktop.ps1:81 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Invoke-PakarNative -WorkingDirectory] | tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]","Retain Bash preflight/delegation to an explicit component owner. pakar.sh shares dispatch with Windows and CI; a MinGW cross-build of WinHTTP is not represented as a Linux-native Pakar application.","Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced] | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP","Tool/C++/build.ps1","431104072952f694a35b3a83c19f13fbb098ca5b","7379ae908f01676ed3db145f11579bb2bf07b79a7b5da2bdfe3cc8baa172e297","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/build-desktop.ps1:83 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Invoke-PakarNative -WorkingDirectory] | tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]","Retain executable preflight, bounded native failure handling and explicit selected component dispatch in shared PowerShell helpers. Windows package/capture utilities remain explicitly platform-specific, not advertised as Unix binaries.","Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced] | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP","Tool/C++/build.sh","431104072952f694a35b3a83c19f13fbb098ca5b","0af1f4b0ba2a7014d7f0938f69885b7d7a46763513408058cffeab4772d5827d","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/build-desktop.ps1:83 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Invoke-PakarNative -WorkingDirectory] | tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]","Retain Bash preflight/delegation to an explicit component owner. pakar.sh shares dispatch with Windows and CI; a MinGW cross-build of WinHTTP is not represented as a Linux-native Pakar application.","Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced] | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/C++/cmake/mingw-w64-x64.cmake","431104072952f694a35b3a83c19f13fbb098ca5b","8f376d6737245386a856b2c3b568a4281ec1cff5848db24d7eb4b471dbf2b1df","pu-client-manifest","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","docs/PU850-PARITY.md:196 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C# manifest and deflate slice, 2026-10-19]","Entire file/sections read through EOF: System/processor/C/C++/RC compilers and all four root search modes | Exact function dispositions are in the C# manifest/deflate slice of docs/PU850-PARITY.md.","x64 target compilers/root-path-only dependency isolation and native distribution [pending]","x64 target compilers/root-path-only dependency isolation and native distribution: Existing explicit host/runtime owners replace duplicate cross-build; x64 native packaging/target-only dependency search acceptance remains pending if required.","","","Existing explicit host/runtime owners replace duplicate cross-build; x64 native packaging/target-only dependency search acceptance remains pending if required.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/C++/cmake/mingw-w64-x86.cmake","431104072952f694a35b3a83c19f13fbb098ca5b","5850c058156b64c0db96561a907c869fdcf53d939abf62c326dda8a34d1de5b5","pu-client-manifest","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","docs/PU850-PARITY.md:196 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C# manifest and deflate slice, 2026-10-19]","Entire file/sections read through EOF: System/processor/C/C++/RC compilers and all four root search modes | Exact function dispositions are in the C# manifest/deflate slice of docs/PU850-PARITY.md.","x86 target compilers/root-path-only dependency isolation and native distribution [pending]","x86 target compilers/root-path-only dependency isolation and native distribution: Existing explicit host/runtime owners replace duplicate cross-build; x86 native packaging/target-only dependency search acceptance remains pending if required.","","","Existing explicit host/runtime owners replace duplicate cross-build; x86 native packaging/target-only dependency search acceptance remains pending if required.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/C++/CMakeLists.txt","431104072952f694a35b3a83c19f13fbb098ca5b","0fb5ee784250ed0eb356db4ba273c9dcf6eddffc9bd8466af87f5a0d7b83d2cb","pu-client-manifest","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","docs/PU850-PARITY.md:196 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C# manifest and deflate slice, 2026-10-19]","Entire file/sections read through EOF: Every platform guard/executable/standards/defines/library/MSVC/MinGW option; CTest/selftest/Python/integration/timeout/install stanza | Exact function dispositions are in the C# manifest/deflate slice of docs/PU850-PARITY.md.","Windows WinHTTP/BCrypt/Winsock/Win7 native executable and distribution build contract [pending]","Windows WinHTTP/BCrypt/Winsock/Win7 native executable and distribution build contract: Windows WinHTTP/BCrypt/Winsock/Win7/native binary distribution is not silently equated with Node. Existing guarded runtime/CI serves actual port; exact legacy-OS/native-distribution acceptance remains pending, no extra compiler/cache.","","","Windows WinHTTP/BCrypt/Winsock/Win7/native binary distribution is not silently equated with Node. Existing guarded runtime/CI serves actual port; exact legacy-OS/native-distribution acceptance remains pending, no extra compiler/cache.","Not established by source/hash/test-code comparison; see issue #2" @@ -2344,8 +2350,8 @@ "PU850-ESP","Tool/C++/README.md","431104072952f694a35b3a83c19f13fbb098ca5b","92c5355d3cbb855acbb60352b9250926e94856905a7845ecaf541489db5bc2d7","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","docs/SCRIPT-TOOLING.md:97 [UTF8-LF sha256=c245c9e419cddb2493d6b75b388d7f73d97ec8d69a08333d562670cbaeade3a8; anchor=Actual PU850 source import] | tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware]","Read full WinHTTP/puff/gzip/manifest, cached DNS, no-replay, atomic resume, auth and exit contracts. Retain host identity/no-replay/integrity concepts; clearly distinguish Windows cross-builds from actual Linux-native outputs.","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass [replaced] | Content-stable auto-upload watch, resumable atomic CLI download and verified pre-update CLI backup [pending] | Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced]","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass: Current Pakar S3 uses raw application validation and structured JSON/update endpoints with board/boot fences. Mandatory auth-off/new-boot/full-SHA checks must not be weakened to preserve an incompatible donor wire protocol. | Content-stable auto-upload watch, resumable atomic CLI download and verified pre-update CLI backup: One-shot updater and readback are not complete watch/resume/backup parity. Import these only with peer identity, stable snapshot and no ambiguous-write replay guards; keep useful donor cases open. | Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Implement and exercise watch/resume/export/pre-update-backup contracts and remaining donor negative cases. | Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/C++/tests/integration_test.py","431104072952f694a35b3a83c19f13fbb098ca5b","176dabcb53d4b1db79c4493b08958e1d1b0546151f6046603e589bd534308bb9","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tests/script_tooling_test.mjs:74 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=const cliPlan=] | tests/update_tool_test.mjs:237 [UTF8-LF sha256=f77db2458acdf69bc16d9e187911d2856e8b4990027371bd7ed85d4efc192889; anchor=await uploadImage(origin,peer,image,identity)]","Adapt loopback/subprocess fixture structure and fail-before-contact/integrity assertions without requiring a WinHTTP executable or Python test server. Existing updater fixtures exercise actual multipart bytes and fragmented WS; new CLI subprocess fixtures exercise offline/invalid argument behavior.","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass [replaced] | Content-stable auto-upload watch, resumable atomic CLI download and verified pre-update CLI backup [pending] | Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced]","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass: Current Pakar S3 uses raw application validation and structured JSON/update endpoints with board/boot fences. Mandatory auth-off/new-boot/full-SHA checks must not be weakened to preserve an incompatible donor wire protocol. | Content-stable auto-upload watch, resumable atomic CLI download and verified pre-update CLI backup: One-shot updater and readback are not complete watch/resume/backup parity. Import these only with peer identity, stable snapshot and no ambiguous-write replay guards; keep useful donor cases open. | Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse] | tests/update_tool_test.mjs:291 [UTF8-LF sha256=f77db2458acdf69bc16d9e187911d2856e8b4990027371bd7ed85d4efc192889; anchor=Automatic updater plan/preflight]","","Implement and exercise watch/resume/export/pre-update-backup contracts and remaining donor negative cases. | Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/C++/upload.cpp","431104072952f694a35b3a83c19f13fbb098ca5b","b5f810636d9acbbe8df4079acf10f00cf7aa71d0130023bb558205d146e69fa2","pu-backup-update | pu-cpp-transfer","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","tools/download-firmware.mjs:25 [UTF8-LF sha256=1fd7047bd6c35cc97eb30f6c9073f841db06b74bc5794c0278098e627bc466c8; anchor=export function parseDigestMD5(] | tools/check-ethernet-live.mjs:58 [UTF8-LF sha256=69c61ad7a70fc4a49487ad89abb21e855cbda69da46d0b872bc8161f09c6b87c; anchor=distinctHeaders:response.headersDistinct] | docs/PU850-PARITY.md:141 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: C++ transfer and UART, 2026-10-19] | tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware(] | tools/peer-identity.mjs:54 [UTF8-LF sha256=869e9ea5db1887dde58b170c66d4c2b379aa6fb7d3c123adc5c023e1b8db1ce7; anchor=export function boardPeer(] | docs/PU850-PARITY.md:3 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Actual backup-before-update orchestration, 2026-10-19]","Actual single_header/parse_header_md5/collect_download_hashes implementation adapted for critical duplicate rejection and canonical full Digest-MD5; range Content-MD5 remains section integrity. | Complete section/function decisions and concrete unsafe legacy defects recorded in the C++ transfer and UART section of docs/PU850-PARITY.md. | Actual Node performUpload and C# BackupInstalledFirmwareAsync backup-before-write sequencing now serves existing updater with explicit --backup/--resume-backup, first-read expected-peer fencing, metadata match and fresh auth/job/boot/latch admission before local upload or remote stage/apply.","WinHTTP/BCrypt/UTF8/console/metadata selection and async close lifecycle [replaced] | verified_download/replace/truncate/delete/retry/no-verify branches [replaced] | Multipart streaming/progress/watch/coalescing/IPv6/native console and complete gzip corpus [pending]","WinHTTP/BCrypt/UTF8/console/metadata selection and async close lifecycle: Existing Node request/crypto/logger and exact typed identity owner retain finite deadlines, hostname-preserving pinned TLS and stronger sanitation. Donor final HANDLE_CLOSING wait is unbounded; do not copy it. | verified_download/replace/truncate/delete/retry/no-verify branches: Mandatory integrity, explicit resume, exclusive stable partial descriptor and no-replace atomic publication retain failures and existing backups; no ambiguous retry or no-hash success. | Multipart streaming/progress/watch/coalescing/IPv6/native console and complete gzip corpus: Actual verified pre-update backup and ranged/resumable export now implemented through existing owners with same-peer/release/auth/job/boot/latch and no-overwrite checks. Watch/coalescing/graceful stop/skip-identical/progress, remaining gzip consumer/platform/filesystem/transport and exact unported negative scenarios remain pending as applicable. No donor tests, SDK builds, live update/restore or physical proof claimed.","tests/download_firmware_test.mjs:33 [UTF8-LF sha256=3c09ca35f587c750dc89e2ca21b8eca541a96bc99fe44f6eb50aab22ed2f74ac; anchor=assert.equal(observed.distinctHeaders.etag.length,2);] | tests/update_backup_test.mjs:53 [UTF8-LF sha256=9fad7b056864a821193c642fbc8739ca60f6b490fc358853906564fd242b75cc; anchor=Backup must precede even remote staging]","","Useful generic behavior remains pending integration and actual filesystem/transport/platform acceptance; no donor/native build or live operation performed.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP","Tool/Go/build.ps1","431104072952f694a35b3a83c19f13fbb098ca5b","7a7d58167051cdfa2bab660a4128d0b29400c17a653bdf751226f86607da246a","pu-client-download | pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/build-desktop.ps1:81 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Invoke-PakarNative -WorkingDirectory] | tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]","Adapt actual selected-target orchestration, tool preflight and raw native exit preservation without installing a duplicate Go application stack. Existing Rust checks/tests/Release and Flutter preview remain explicit.","Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced] | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP","Tool/Go/build.sh","431104072952f694a35b3a83c19f13fbb098ca5b","746e6667fba804bce07d90acf6bf370e0f7b62100c83d806cf057ef77f600ff7","pu-client-download | pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/build-desktop.ps1:81 [UTF8-LF sha256=8ebd02ebcd5556bd70f97216faed6ea3c03ec8e92950514118e1b9901132e037; anchor=Invoke-PakarNative -WorkingDirectory] | tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]","Retain shell launcher preflight and one delegated owner with explicit testing/build selection. Pakar Bash and Windows now reach identical guarded component wrappers rather than separate drifting build recipes.","Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced] | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP","Tool/Go/build.ps1","431104072952f694a35b3a83c19f13fbb098ca5b","7a7d58167051cdfa2bab660a4128d0b29400c17a653bdf751226f86607da246a","pu-client-download | pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/build-desktop.ps1:83 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Invoke-PakarNative -WorkingDirectory] | tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]","Adapt actual selected-target orchestration, tool preflight and raw native exit preservation without installing a duplicate Go application stack. Existing Rust checks/tests/Release and Flutter preview remain explicit.","Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced] | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP","Tool/Go/build.sh","431104072952f694a35b3a83c19f13fbb098ca5b","746e6667fba804bce07d90acf6bf370e0f7b62100c83d806cf057ef77f600ff7","pu-client-download | pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/build-desktop.ps1:83 [UTF8-LF sha256=720dad8eeffa5fb7da1e5460b582478d2a7c7f4b8645ca5695cc336884d8b410; anchor=Invoke-PakarNative -WorkingDirectory] | tools/firmware-report.mjs:40 [UTF8-LF sha256=a374a5172a8e9d366e1bbe124311004e2f093ab648e94a54cd8c4a1ca18b4423; anchor=export function collectArtifacts]","Retain shell launcher preflight and one delegated owner with explicit testing/build selection. Pakar Bash and Windows now reach identical guarded component wrappers rather than separate drifting build recipes.","Build and distribute parallel .NET/WinHTTP/Go ASA clients [replaced] | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects [replaced]","Build and distribute parallel .NET/WinHTTP/Go ASA clients: Pakar already owns Rust and Flutter applications and the standard-library Node updater. Avoid three duplicate client stacks/SDK caches; reusable command/preflight/transfer contracts are mapped separately. | Forced cleans/no-cache recompiles, PU profile/name, timestamp/personal build headers and audible failure side effects: Use existing Pakar board/link flags and generated-file checks, stable warm output/cache paths and quiet explicit actions. Do not wear SSDs, alter identity or start devices as an implicit build action.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Verify full native distributable/platform parity; Windows cross-build output is not Linux-native execution. | Run configured OS-matrix command plans and affected real SDK builds on their matching hosts. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/Go/console_other.go","431104072952f694a35b3a83c19f13fbb098ca5b","c6d5b649d1ff9ceb7469a7dad0f1020e6fb0e085fed9b94dda438660f5c451b6","pu-client-download","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","equivalent-behavior","complete","tools/pakar.mjs:59 [UTF8-LF sha256=0875bb298a832a275d62e3595c2e2691c38eef442ac5246a85fb4445c3715bd3; anchor=export async function main(] | docs/PU850-PARITY.md:244 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: editor and Go client slice, 2026-10-19]","Complete EOF read: enableVirtualTerminal/isCharacterDevice call | Exact function-by-function adaptations, safety defects and remaining contracts are recorded in the editor/Go slice of docs/PU850-PARITY.md.","Go terminal runtime copy [replaced]","Go terminal runtime copy: Existing Node TTY/NO_COLOR/TERM ownership serves script terminal detection without a duplicate Go runtime or terminal mutation.","","","","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/Go/console_windows.go","431104072952f694a35b3a83c19f13fbb098ca5b","fb558b089a87dd62ba560db249402d424428c45f50c1286c656de4b8f8a9b440","pu-client-download","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","tools/pakar.mjs:59 [UTF8-LF sha256=0875bb298a832a275d62e3595c2e2691c38eef442ac5246a85fb4445c3715bd3; anchor=export async function main(] | docs/PU850-PARITY.md:244 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: editor and Go client slice, 2026-10-19]","Complete EOF read: VT flag/kernel32 procedures; complete enableVirtualTerminal GetConsoleMode/SetConsoleMode flow | Exact function-by-function adaptations, safety defects and remaining contracts are recorded in the editor/Go slice of docs/PU850-PARITY.md.","Legacy Windows console VT acceptance [pending]","Legacy Windows console VT acceptance: Current script logger and native CLI own terminal setup; prove actual older Windows VT behavior before closing this generic gap.","","","Current script logger and native CLI own terminal setup; prove actual older Windows VT behavior before closing this generic gap.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/Go/download_test.go","431104072952f694a35b3a83c19f13fbb098ca5b","c33bfe1e8ebfabbf03db06a96ced7e08045599cbc1bda7592b04cdd5a3942fc7","pu-backup-update | pu-client-download | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","tools/pakar.mjs:59 [UTF8-LF sha256=0875bb298a832a275d62e3595c2e2691c38eef442ac5246a85fb4445c3715bd3; anchor=export async function main(] | docs/PU850-PARITY.md:244 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: editor and Go client slice, 2026-10-19] | tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware(] | tools/peer-identity.mjs:54 [UTF8-LF sha256=869e9ea5db1887dde58b170c66d4c2b379aa6fb7d3c123adc5c023e1b8db1ce7; anchor=export function boardPeer(] | docs/PU850-PARITY.md:3 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Actual backup-before-update orchestration, 2026-10-19]","Complete EOF read: every test function/helper and all HTTP branches | Exact function-by-function adaptations, safety defects and remaining contracts are recorded in the editor/Go slice of docs/PU850-PARITY.md. | Actual Node performUpload and C# BackupInstalledFirmwareAsync backup-before-write sequencing now serves existing updater with explicit --backup/--resume-backup, first-read expected-peer fencing, metadata match and fresh auth/job/boot/latch admission before local upload or remote stage/apply.","Raw skip/fallback-specific and remaining applicable fixtures [pending]","Raw skip/fallback-specific and remaining applicable fixtures: Actual verified pre-update backup and ranged/resumable export now implemented through existing owners with same-peer/release/auth/job/boot/latch and no-overwrite checks. Watch/coalescing/graceful stop/skip-identical/progress, remaining gzip consumer/platform/filesystem/transport and exact unported negative scenarios remain pending as applicable. No donor tests, SDK builds, live update/restore or physical proof claimed.","tests/download_firmware_test.mjs:36 [UTF8-LF sha256=3c09ca35f587c750dc89e2ca21b8eca541a96bc99fe44f6eb50aab22ed2f74ac; anchor=for(const scenario of [] | tests/update_backup_test.mjs:53 [UTF8-LF sha256=9fad7b056864a821193c642fbc8739ca60f6b490fc358853906564fd242b75cc; anchor=Backup must precede even remote staging]","","Actual byte verification, exact resume and mismatch/atomic preservation scenarios ported into shipped Node fixture plus multi-range/peer/release/cancel/time/stale partial/no-overwrite cases. Remaining uploader/gzip behaviors await real implementation; donor tests are not claimed executed.","Not established by source/hash/test-code comparison; see issue #2" @@ -2360,14 +2366,14 @@ "PU850-ESP","Tool/Go/watch.go","431104072952f694a35b3a83c19f13fbb098ca5b","46468b3f00791504df0b62d58adfbf6f416b840875febecf7a46868ae7051d40","pu-client-download","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7","parity-gap","complete","tools/download-firmware.mjs:55 [UTF8-LF sha256=1fd7047bd6c35cc97eb30f6c9073f841db06b74bc5794c0278098e627bc466c8; anchor=export async function downloadFirmware(] | docs/PU850-PARITY.md:244 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: editor and Go client slice, 2026-10-19]","Actual digestUnchangedFile size/time/mode stability checks adapted around the held backup file hash and final commit. | Complete EOF read: all constants/errors/types/state branches/functions/methods | Exact function-by-function adaptations, safety defects and remaining contracts are recorded in the editor/Go slice of docs/PU850-PARITY.md.","Optional generic stable-build watcher/coalescing/manifest capability [pending]","Optional generic stable-build watcher/coalescing/manifest capability: Actual digestUnchangedFile size/time/mode stability is imported around backup verification/commit. Optional stable-window/newest-coalesce/once-only deployment and raw/compressed marker contracts remain useful pending explicit ownership; no watcher started or automatic device mutation enabled.","tests/download_firmware_test.mjs:36 [UTF8-LF sha256=3c09ca35f587c750dc89e2ca21b8eca541a96bc99fe44f6eb50aab22ed2f74ac; anchor=for(const scenario of []","","Actual digestUnchangedFile size/time/mode stability is imported around backup verification/commit. Optional stable-window/newest-coalesce/once-only deployment and raw/compressed marker contracts remain useful pending explicit ownership; no watcher started or automatic device mutation enabled.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/NODE-UPLOADER.md","431104072952f694a35b3a83c19f13fbb098ca5b","e90a5cc82b0f88bb9178739c02885dd4aaf49167b77cfbf8de17d8aed87c26e8","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware] | tools/deploy-artifact.mjs:15 [UTF8-LF sha256=0710b78d5359b0d6ece4dd48f9129acebe1809c370ed4bb6b6767fd4917bf55d; anchor=export function verifiedArtifact]","Retain stable help/exit, quiet output, explicit validation and safe transfer intent. Document the Pakar updater's current contract and guarded entrypoints; do not claim documented donor watch/resume/backup behavior is already implemented.","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass [replaced] | Content-stable auto-upload watch, resumable atomic CLI download and verified pre-update CLI backup [pending]","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass: Current Pakar S3 uses raw application validation and structured JSON/update endpoints with board/boot fences. Mandatory auth-off/new-boot/full-SHA checks must not be weakened to preserve an incompatible donor wire protocol. | Content-stable auto-upload watch, resumable atomic CLI download and verified pre-update CLI backup: One-shot updater and readback are not complete watch/resume/backup parity. Import these only with peer identity, stable snapshot and no ambiguous-write replay guards; keep useful donor cases open.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Implement and exercise watch/resume/export/pre-update-backup contracts and remaining donor negative cases. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/package-lock.json","431104072952f694a35b3a83c19f13fbb098ca5b","8d20a728050e85d69d3291c04beb0002056384782a795dc954b4fe8fe3355237","pu-tooling | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/script-console.mjs:14 [UTF8-LF sha256=2243be58e4dce21a7592865121e94ebdb64f21286f3333358c8259bb2bdedafb; anchor=export function createLogger] | tools/pakar.mjs:65 [UTF8-LF sha256=0875bb298a832a275d62e3595c2e2691c38eef442ac5246a85fb4445c3715bd3; anchor=Node.js20.19]","Read exact chalk/chokidar/readdirp locked graph. Shared console implements required logger/color/terminal sanitation with Node standard libraries; no new node_modules or lockfile is needed for currently implemented one-shot commands.","New chalk/chokidar/readdirp npm installation for one-shot tools [replaced]","New chalk/chokidar/readdirp npm installation for one-shot tools: Currently required console/argv behavior uses Node standard libraries and no file watcher is advertised. Preserve zero additional npm tree; advanced watcher parity remains explicit.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Complete guarded content-stable watch behavior before claiming uploader dependency/feature parity. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" -"PU850-ESP","Tool/package.json","431104072952f694a35b3a83c19f13fbb098ca5b","60754d1116254eeac6b10e626c2e2b4506e60ad3ecd0296ce59645d63858e540","pu-tooling | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/script-console.mjs:5 [UTF8-LF sha256=2243be58e4dce21a7592865121e94ebdb64f21286f3333358c8259bb2bdedafb; anchor=export const EXIT] | .github/workflows/build.yml:90 [UTF8-LF sha256=2011a5c6db4cce2042b223c1724d4fc6481d140f7aaf68527bc0f8ccf79c363e; anchor=node tests/script_tooling_test.mjs]","Retain explicit Node20.19 minimum and direct Node entrypoints, tests and help without an additional npm install. Shared logger/CLI use Node standard libraries; unavailable watch mode is recorded as a gap.","New chalk/chokidar/readdirp npm installation for one-shot tools [replaced]","New chalk/chokidar/readdirp npm installation for one-shot tools: Currently required console/argv behavior uses Node standard libraries and no file watcher is advertised. Preserve zero additional npm tree; advanced watcher parity remains explicit.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Complete guarded content-stable watch behavior before claiming uploader dependency/feature parity. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" +"PU850-ESP","Tool/package.json","431104072952f694a35b3a83c19f13fbb098ca5b","60754d1116254eeac6b10e626c2e2b4506e60ad3ecd0296ce59645d63858e540","pu-tooling | updates-telemetry","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/script-console.mjs:5 [UTF8-LF sha256=2243be58e4dce21a7592865121e94ebdb64f21286f3333358c8259bb2bdedafb; anchor=export const EXIT] | .github/workflows/build.yml:92 [UTF8-LF sha256=88ae50be55cc684e1e23658d13f0f443e945cac7a38ad87948709681260b4861; anchor=node tests/script_tooling_test.mjs]","Retain explicit Node20.19 minimum and direct Node entrypoints, tests and help without an additional npm install. Shared logger/CLI use Node standard libraries; unavailable watch mode is recorded as a gap.","New chalk/chokidar/readdirp npm installation for one-shot tools [replaced]","New chalk/chokidar/readdirp npm installation for one-shot tools: Currently required console/argv behavior uses Node standard libraries and no file watcher is advertised. Preserve zero additional npm tree; advanced watcher parity remains explicit.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Complete guarded content-stable watch behavior before claiming uploader dependency/feature parity. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/README.md","431104072952f694a35b3a83c19f13fbb098ca5b","02d192de780df4199c722c8b314aabdb68a67f1a4cf8790f83f687f5e3ae7985","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/pakar.mjs:10 [UTF8-LF sha256=0875bb298a832a275d62e3595c2e2691c38eef442ac5246a85fb4445c3715bd3; anchor=export const commands] | tools/script-runtime.ps1:8 [UTF8-LF sha256=6fbe86a1ba2d5347abd1b70c4ab3dfee91f4dd7a58415324d9d291232ca07fcc; anchor=function Assert-PakarExecutable]","Map actual uploader/build/CLI usage to the shared Pakar command reference and tools. Clearly separate raw S3/JSON verification from ASA gzip/ok!, plans from execution and current one-shot support from pending advanced transfer modes.","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass [replaced] | Content-stable auto-upload watch, resumable atomic CLI download and verified pre-update CLI backup [pending]","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass: Current Pakar S3 uses raw application validation and structured JSON/update endpoints with board/boot fences. Mandatory auth-off/new-boot/full-SHA checks must not be weakened to preserve an incompatible donor wire protocol. | Content-stable auto-upload watch, resumable atomic CLI download and verified pre-update CLI backup: One-shot updater and readback are not complete watch/resume/backup parity. Import these only with peer identity, stable snapshot and no ambiguous-write replay guards; keep useful donor cases open.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Implement and exercise watch/resume/export/pre-update-backup contracts and remaining donor negative cases. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/upload.js","431104072952f694a35b3a83c19f13fbb098ca5b","3d3d067426480bb0a2137ffb7f8fa74d7378362c237f573b923f6dd82298d9d0","pu-backup-update | pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/script-console.mjs:7 [UTF8-LF sha256=2243be58e4dce21a7592865121e94ebdb64f21286f3333358c8259bb2bdedafb; anchor=export function sanitizeText] | tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware] | tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware(] | tools/peer-identity.mjs:54 [UTF8-LF sha256=869e9ea5db1887dde58b170c66d4c2b379aa6fb7d3c123adc5c023e1b8db1ce7; anchor=export function boardPeer(] | docs/PU850-PARITY.md:3 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Actual backup-before-update orchestration, 2026-10-19] | tools/verify-running-firmware.mjs:35 [UTF8-LF sha256=44264fe63ba4c81079517521f8bc0cde96e4602d0d56ab23dfed0356bccdaa9a; anchor=export async function verifyRunningFirmware(] | tools/download-firmware.mjs:14 [UTF8-LF sha256=1fd7047bd6c35cc97eb30f6c9073f841db06b74bc5794c0278098e627bc466c8; anchor=export const verificationRangeBytes=16*1024;]","Import actual logger, terminal sanitizer, stable exit categories, quiet/color rules and argv/preflight concepts into script-console.mjs/pakar.mjs. Correct OSC-before-ESC regex ordering and redirected stderr coloring. Existing updater retains hostname/TCP identity pinning, no uncertain-write replay and full postboot verification. | Actual Node performUpload and C# BackupInstalledFirmwareAsync backup-before-write sequencing now serves existing updater with explicit --backup/--resume-backup, first-read expected-peer fencing, metadata match and fresh auth/job/boot/latch admission before local upload or remote stage/apply. | Reread all 34349 bytes of this pinned donor through Git; the SHA256 remains unchanged. The standalone verify-running-firmware tool adapts verifyAfterReboot and verifiedDownload through the existing update-firmware imageIdentity/boundedReadRequest/checkWebSocket, download-firmware range/hash validators and shared boardPeer transport owners. It verifies the exact running VALID slot, image size/MD5/SHA256 and same-board/boot WebSocket using bounded 16 KiB reads; it sends no upload, reset, formatting or AVR command and creates only an exclusive JSON receipt, not another binary copy. Protocol/integrity failures are never retried; at most one pinned transport-read retry remains within the overall budget. | After the same live post-upload readback timeout recurred beyond about 1 MiB, reread the donor verifyAfterReboot/verifiedDownload functions and existing updater/verifier owners. Both post-reboot verification paths now import one 16 KiB range constant from download-firmware, without circular imports or changing that module's successful 64 KiB backup transfers. Updater progress records only verified bytes. The actual updater fixture crosses 1 MiB, tests the final short range, one same-range pinned read retry, second timeout and invalid late range without replaying any upload. This is source/fixture evidence; no new board mutation was used to test this tool change.","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass [replaced] | Stable watcher/coalescing/graceful-stop/progress and remaining negative cases [pending]","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass: Current Pakar S3 uses raw application validation and structured JSON/update endpoints with board/boot fences. Mandatory auth-off/new-boot/full-SHA checks must not be weakened to preserve an incompatible donor wire protocol. | Stable watcher/coalescing/graceful-stop/progress and remaining negative cases: Actual verified pre-update backup and ranged/resumable export now implemented through existing owners with same-peer/release/auth/job/boot/latch and no-overwrite checks. Watch/coalescing/graceful stop/skip-identical/progress, remaining gzip consumer/platform/filesystem/transport and exact unported negative scenarios remain pending as applicable. No donor tests, SDK builds, live update/restore or physical proof claimed.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse] | tests/update_backup_test.mjs:53 [UTF8-LF sha256=9fad7b056864a821193c642fbc8739ca60f6b490fc358853906564fd242b75cc; anchor=Backup must precede even remote staging] | tests/verify_running_firmware_test.mjs:115 [UTF8-LF sha256=77f9d8389d7668b39cdfb57b71a9ec9acba3da9b439bf7feefdb284d98a04058; anchor=Read-only running firmware verifier:] | tests/update_tool_test.mjs:113 [UTF8-LF sha256=f77db2458acdf69bc16d9e187911d2856e8b4990027371bd7ed85d4efc192889; anchor=Exercise the actual post-reboot loop past the observed ~1 MiB failure point.]","","Explicit verified backup-before-update and resumable export now imported. Remaining stable watcher/coalescing/graceful stop/skip-identical/progress, gzip consumer/platform/filesystem/transport and unported negative scenarios need applicable implementation/acceptance; no source fixture closes live/physical/restore gates. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/upload.test.js","431104072952f694a35b3a83c19f13fbb098ca5b","02842871c7f5c1285b57c1cc2392d655df848ef993c138f6a6c11b9779bf0778","pu-backup-update | pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/7 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tests/script_tooling_test.mjs:74 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=const cliPlan=] | tests/update_tool_test.mjs:173 [UTF8-LF sha256=f77db2458acdf69bc16d9e187911d2856e8b4990027371bd7ed85d4efc192889; anchor=const server=createServer] | tools/update-firmware.mjs:216 [UTF8-LF sha256=f1661663563a2dcd4eaed9d1a054cc986cf03d8e3b0806bc93d6bf07560ad068; anchor=export async function updateFirmware(] | tools/peer-identity.mjs:54 [UTF8-LF sha256=869e9ea5db1887dde58b170c66d4c2b379aa6fb7d3c123adc5c023e1b8db1ce7; anchor=export function boardPeer(] | docs/PU850-PARITY.md:3 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Actual backup-before-update orchestration, 2026-10-19]","Adapt actual subprocess execution and no-device-contact assertions into script_tooling_test.mjs for offline raw-image planning and invalid mode rejection. Existing real loopback multipart/WS updater fixtures retain exact byte/length/hash/admission and postboot checks, not ASA response parsing. | Actual Node performUpload and C# BackupInstalledFirmwareAsync backup-before-write sequencing now serves existing updater with explicit --backup/--resume-backup, first-read expected-peer fencing, metadata match and fresh auth/job/boot/latch admission before local upload or remote stage/apply.","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass [replaced] | Stable watcher/coalescing/graceful-stop/progress and remaining negative cases [pending]","ASA gzip/two-record manifest, legacy plain-info fallback and exact ok! reply; verification bypass: Current Pakar S3 uses raw application validation and structured JSON/update endpoints with board/boot fences. Mandatory auth-off/new-boot/full-SHA checks must not be weakened to preserve an incompatible donor wire protocol. | Stable watcher/coalescing/graceful-stop/progress and remaining negative cases: Actual verified pre-update backup and ranged/resumable export now implemented through existing owners with same-peer/release/auth/job/boot/latch and no-overwrite checks. Watch/coalescing/graceful stop/skip-identical/progress, remaining gzip consumer/platform/filesystem/transport and exact unported negative scenarios remain pending as applicable. No donor tests, SDK builds, live update/restore or physical proof claimed.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse] | tests/update_tool_test.mjs:291 [UTF8-LF sha256=f77db2458acdf69bc16d9e187911d2856e8b4990027371bd7ed85d4efc192889; anchor=Automatic updater plan/preflight] | tests/update_backup_test.mjs:53 [UTF8-LF sha256=9fad7b056864a821193c642fbc8739ca60f6b490fc358853906564fd242b75cc; anchor=Backup must precede even remote staging]","","Explicit verified backup-before-update and resumable export now imported. Remaining stable watcher/coalescing/graceful stop/skip-identical/progress, gzip consumer/platform/filesystem/transport and unported negative scenarios need applicable implementation/acceptance; no source fixture closes live/physical/restore gates. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","Tool/Websocket Client.html","431104072952f694a35b3a83c19f13fbb098ca5b","cb1e505e9fd5df220e976b3a42e5baedeeef8d8c6e8e0f17fd4c6a6b58f26206","pu-editor | network-cloud","https://github.com/atomicdeploy/PakarController/issues/2 | https://github.com/atomicdeploy/PakarController/issues/3","parity-gap","complete","docs/PU850-PARITY.md:244 [UTF8-LF sha256=90fd0fcaa4c6bfab14639db6e6fa479a2f70729100ed5800edd73020f494d1a3; anchor=## Exhaustive continuation: editor and Go client slice, 2026-10-19]","Complete EOF read: complete HTML/CSS and initWebSocket/onOpen/onClose/onMessage/onLoad/initButton/toggle | Exact function-by-function adaptations, safety defects and remaining contracts are recorded in the editor/Go slice of docs/PU850-PARITY.md.","Standalone generic endpoint/message inspector [pending]","Standalone generic endpoint/message inspector: Current Web socket/reconnect/safe text ownership replaces hardcoded PU hostname, innerHTML injection, unbounded dots/fixed retry/unguarded sends. Standalone inspector remains useful pending real auth/identity design.","","","Current Web socket/reconnect/safe text ownership replaces hardcoded PU hostname, innerHTML injection, unbounded dots/fixed retry/unguarded sends. Standalone inspector remains useful pending real auth/identity design.","Not established by source/hash/test-code comparison; see issue #2" "PU850-ESP","upgrade.sh","431104072952f694a35b3a83c19f13fbb098ca5b","2e1870cb90db3459eb4abb2e991605409621021fb33b5e61cb38efc82e30d75b","pu-tooling","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/11","parity-gap","complete","tools/firmware-dependencies.mjs:62 [UTF8-LF sha256=903bd1fdd6e50218cab22db4fc21fb64aee44da2b025faf329fcee4703506ab1; anchor=export async function checkDependencies] | tools/firmware-dependencies.json:2 [UTF8-LF sha256=95a5da284e415b35c47d8f4e9048381ec41c3e181261c437ec91b9cdcf1090c1; anchor=""platforms""] | upgrade.sh:4 [UTF8-LF sha256=2d02c4404e822f167989e965061d705f87896ec3069efb39d8bce1ad644f96d7; anchor=dependencies ""$@""] | upgrade.cmd:3 [UTF8-LF sha256=8e8614d6dc26192f66ef8e842a3dd53a3a5b66272a53d7d3bff7c275ea454dcb; anchor=dependencies]","Adapt exact-name registry indexing, check/apply operation and one cached index into firmware-dependencies.mjs. Improve lexical version selection to numeric stable comparison, retain pinned-ahead versions, detect concurrent edits and install only explicitly locked versions.","PU-specific board/profile and separate dependency/config write paths [replaced]","PU-specific board/profile and separate dependency/config write paths: Reuse applicable exact versions/official registries in one reviewed pin owner. Preserve operator config and Pakar hardware flags; no silent downgrade, duplicate Arduino_JSON API, unsupported library additions or automatic SDK initialization.","tests/script_tooling_test.mjs:133 [UTF8-LF sha256=8cecc892a9f416c7fd4d7df6aae64cef7792b557e73213bc77d9e6a4a53c1380; anchor=Script tooling:] | tests/script_tooling_test.ps1:26 [UTF8-LF sha256=d3c679d8caa22177e7a5590564cd1141b84e1b194b3c3ee0bb825c26a4d46305; anchor=PowerShell utilities parse]","","Run live registry check and review any candidate version changes with full build/hardware acceptance; pins were not upgraded by this slice. | No physical deployment, full client distribution or donor-wide completion is inferred from source or fixtures.","Not established by source/hash/test-code comparison; see issue #2" -"PuzzleBoard",".vscode/arduino.json","filesystem-snapshot","fa26772dc3f07e02815543e65fe5d90de6415c5b0803aa0e4416aeb8a63b0b31","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete","tools/build-firmware.ps1:188 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor=MiniCore:avr:328:bootloader=uart0]","Read the complete donor profile. External 16 MHz operation, UART bootloader, EEPROM retention and 2.7 V brownout protection remain explicit in the canonical AVR build owner.","MightyCore ATmega32 board/pinout [replaced] | fixed COM1 and USBasp programmer [replaced] | editor-owned Build output directory [replaced]","MightyCore ATmega32 board/pinout: The fitted controller is ATmega328P. MiniCore modelP is the reviewed target; copying this editor profile would compile for the wrong MCU and memory/pin map. | fixed COM1 and USBasp programmer: COM1 is commonly the ASUS built-in port. Backup-first deployment inventories and pins the newly enumerated device/programmer instead of risking a stale fixed target. | editor-owned Build output directory: The guarded wrapper owns reusable low-write caches and artifact directories across AVR/S3 profiles; a second editor output wastes SSD space and can serve stale binaries.","tests/build_storage_test.ps1:62 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=Four-box profile must keep its unique hostname]","","The connected four-box AVR still requires identity, backup, flash/readback and physical UART/key verification; a build profile is not deployment proof.","Not established by source/hash/test-code comparison; see issue #2" -"PuzzleBoard",".vscode/c_cpp_properties.json","filesystem-snapshot","ca7d6699a966afa9e1132a4a83359978fa9ace81d2bee295662fa5ba0bd8ca53","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete",".vscode/settings.json:5 [UTF8-LF sha256=2373a0d9d9a7af54872b0ae854ccf1ff95116ef8f80aebfad513fe3031914d5f; anchor=""*.ino"": ""cpp""] | tools/build-firmware.ps1:235 [UTF8-LF sha256=5268a71688fc600de1faf4704358735006b4e9d78420aa02aefc79ede3d7ee4d; anchor='compile', '--jobs', ""$Jobs"", '--fqbn']","Read all 536 donor lines through EOF. Arduino/AVR C++ source association and target compile-profile intent are retained by portable workspace associations and the actual arduino-cli invocation.","absolute Arduino15 compiler/core/include paths and tool version [replaced] | ATmega32/USBCON and hundreds of copied compiler predefined macros [replaced] | gcc-x64 IntelliSense mode for AVR [replaced]","absolute Arduino15 compiler/core/include paths and tool version: Generated per-user paths become stale when packages move. The wrapper resolves the installed toolchain and selected FQBN at build time. | ATmega32/USBCON and hundreds of copied compiler predefined macros: The selected compiler must define its real ATmega328P ABI and capabilities; a committed ATmega32 snapshot would make IntelliSense contradict the production build. | gcc-x64 IntelliSense mode for AVR: It does not describe the donor AVR ABI or the S3. Portable language associations avoid asserting a false target architecture.","","","A generated compile database may improve editor navigation later, but it must derive from the canonical build without committed host paths or a duplicate cache.","Not established by source/hash/test-code comparison; see issue #2" +"PuzzleBoard",".vscode/arduino.json","filesystem-snapshot","fa26772dc3f07e02815543e65fe5d90de6415c5b0803aa0e4416aeb8a63b0b31","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete","tools/build-firmware.ps1:190 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor=MiniCore:avr:328:bootloader=uart0]","Read the complete donor profile. External 16 MHz operation, UART bootloader, EEPROM retention and 2.7 V brownout protection remain explicit in the canonical AVR build owner.","MightyCore ATmega32 board/pinout [replaced] | fixed COM1 and USBasp programmer [replaced] | editor-owned Build output directory [replaced]","MightyCore ATmega32 board/pinout: The fitted controller is ATmega328P. MiniCore modelP is the reviewed target; copying this editor profile would compile for the wrong MCU and memory/pin map. | fixed COM1 and USBasp programmer: COM1 is commonly the ASUS built-in port. Backup-first deployment inventories and pins the newly enumerated device/programmer instead of risking a stale fixed target. | editor-owned Build output directory: The guarded wrapper owns reusable low-write caches and artifact directories across AVR/S3 profiles; a second editor output wastes SSD space and can serve stale binaries.","tests/build_storage_test.ps1:62 [UTF8-LF sha256=6bfae8dbd4e71ee19a6d760fe69898d3f057354877c3182dff73ee9240f1dbbd; anchor=Four-box profile must keep its unique hostname]","","The connected four-box AVR still requires identity, backup, flash/readback and physical UART/key verification; a build profile is not deployment proof.","Not established by source/hash/test-code comparison; see issue #2" +"PuzzleBoard",".vscode/c_cpp_properties.json","filesystem-snapshot","ca7d6699a966afa9e1132a4a83359978fa9ace81d2bee295662fa5ba0bd8ca53","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete",".vscode/settings.json:5 [UTF8-LF sha256=2373a0d9d9a7af54872b0ae854ccf1ff95116ef8f80aebfad513fe3031914d5f; anchor=""*.ino"": ""cpp""] | tools/build-firmware.ps1:237 [UTF8-LF sha256=10cc9bd60e9ea7cbedf418e1d4c002a8eb484556bbd77df156b2d4e40283e067; anchor='compile', '--jobs', ""$Jobs"", '--fqbn']","Read all 536 donor lines through EOF. Arduino/AVR C++ source association and target compile-profile intent are retained by portable workspace associations and the actual arduino-cli invocation.","absolute Arduino15 compiler/core/include paths and tool version [replaced] | ATmega32/USBCON and hundreds of copied compiler predefined macros [replaced] | gcc-x64 IntelliSense mode for AVR [replaced]","absolute Arduino15 compiler/core/include paths and tool version: Generated per-user paths become stale when packages move. The wrapper resolves the installed toolchain and selected FQBN at build time. | ATmega32/USBCON and hundreds of copied compiler predefined macros: The selected compiler must define its real ATmega328P ABI and capabilities; a committed ATmega32 snapshot would make IntelliSense contradict the production build. | gcc-x64 IntelliSense mode for AVR: It does not describe the donor AVR ABI or the S3. Portable language associations avoid asserting a false target architecture.","","","A generated compile database may improve editor navigation later, but it must derive from the canonical build without committed host paths or a duplicate cache.","Not established by source/hash/test-code comparison; see issue #2" "PuzzleBoard",".vscode/settings.json","filesystem-snapshot","56e633c1f5b8fe59bde0491255cb81bb05c92c30a497fc46643d5c626b7d8caa","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","equivalent-behavior","complete",".vscode/settings.json:10 [UTF8-LF sha256=2373a0d9d9a7af54872b0ae854ccf1ff95116ef8f80aebfad513fe3031914d5f; anchor=""files.exclude""] | .vscode/tasks.json:5 [UTF8-LF sha256=2681847c279d80dc8b8f0683feb126746498f73e1cd2eed4b9e9071c0ebf846d; anchor=Pakar: firmware plan (ESP32-S3)]","Read the complete donor file. Generated-build hiding, AVR/Arduino language ownership and useful shift-register vocabulary are covered by the combined workspace settings and guarded tasks.","hard-coded per-user avr-g++ compilerPath [replaced] | single **/Build exclusion and donor-only spelling exemptions [replaced]","hard-coded per-user avr-g++ compilerPath: The build owner resolves the installed compiler; a workspace-wide absolute path breaks other machines and future package versions. | single **/Build exclusion and donor-only spelling exemptions: The combined repository explicitly excludes its canonical firmware/native/mobile/Node generated trees and maintains vocabulary for active Pakar protocols rather than one donor sketch.","","","Editor convenience is not build, deployment or board acceptance; live AVR/S3 compilation and device checks remain separate gates.","Not established by source/hash/test-code comparison; see issue #2" "PuzzleBoard","Loose Code.txt","filesystem-snapshot","ca3ccb584275bcdef23bf10d0044ac4312b6406b9e1b3529df718d37de61a05b","donor-audit: specialist routing pending","https://github.com/atomicdeploy/PakarController/issues/3","scoped-improvement","complete","libraries/BoardCore/src/pccontroller/Keys.h:8 [UTF8-LF sha256=6df4169d3ded9dab1a0948ea519a0fcf6353fb836a6eac8a2c92ea051a341c58; anchor=PAKAR_KEY_DEBOUNCE_MS] | libraries/BoardCore/src/pccontroller/Keys.cpp:19 [UTF8-LF sha256=d9b8c8d4ec6beef667c01c5b5e3af539ead2429393e2632c4c59461f30c14224; anchor=void Key::updateSample]","Read the complete debounce fragment. Its raw-edge timestamp, stable-state comparison and one press action after a bounded quiet interval are retained in the shared front-key classifier.","fixed 50 ms press-only snippet with unspecified initialization and callbacks [replaced]","fixed 50 ms press-only snippet with unspecified initialization and callbacks: The shared 20 ms classifier initializes deterministically, handles unsigned rollover and emits Down immediately after debounce while also classifying Up/click/double-click/hold without delaying the primary action.","tests/pc_contract_test.cpp:298 [UTF8-LF sha256=d8aef9e99392072845e5110ecc9be0421435b0988daff633e1d7ec0da66bdc1c; anchor=key.updateSample(true,625)]","Generalizes the useful debounce edge into a bounded rollover-safe lifecycle while reducing primary-action latency and avoiding delayed click classification on the winning path.","Physical contact-bounce and first-press latency still require measurement on the fitted four-box buttons; host timing fixtures do not prove switch hardware.","Not established by source/hash/test-code comparison; see issue #2" "PuzzleBoard","PuzzleBoard.ino","filesystem-snapshot","bc9cddd4acef723a803df02dd22fc09ee681a9f1e72fba1af6625eba87ee9026","firmware-hardware","https://github.com/atomicdeploy/PakarController/issues/3 | https://github.com/atomicdeploy/PakarController/issues/6","parity-gap","complete","firmware/avr/FrontPanel.cpp:271 [UTF8-LF sha256=d90acc624b6d9e9248238eb5015a573bb3081bde5546b9bdc3d1e14661f3dea4; anchor=Imported from ControllerBoardMini/Puzzles::animation()] | firmware/avr/SevenSegments.cpp:385 [UTF8-LF sha256=73b97393db8937820b153c4b776014e2dda672c579a179f133777b1fe5107997; anchor=void SevenSegments::service(uint32_t now)] | firmware/avr/ShiftRegisters.cpp:55 [UTF8-LF sha256=990c51a59be04c29618232bd86f2857f9fddc65eb70d7585ad2f537c8a46b902; anchor=void ShiftRegisters::service()] | firmware/avr/TonePlayer.cpp:62 [UTF8-LF sha256=6c578fb07b1c5059d1d03690beed73806a77b9d28cd05359d9f225b945275ed1; anchor=void TonePlayer::update(uint32_t now)] | libraries/BoardCore/src/GamePanelFeedback.h:10 [UTF8-LF sha256=10e31abc341049f2d118394b9279a55ea9ac6e4887b14f7e9cded471758c670d; anchor=inline void puzzlePanelSegments] | firmware/esp/src/KeyMiniGameSettings.h:12 [UTF8-LF sha256=9632b6d8a0f3956bb8ee109709ccb470374a5a3380fa58b0ca8962e27c45ccc4; anchor=bootLast=false] | firmware/esp/src/KeyMiniGameService.h:137 [UTF8-LF sha256=3c5d9668615d53d7e1641b3dca12f83d2361f5ebdddc5cb2f1975d19ea456300; anchor=if(miniBootPending)]","Read all 1223 donor lines through EOF. Preserved its 12-step four-digit perimeter animation, active-low input/relay service concepts, temporary status colors, valid/error audio distinction, serial input diagnostics and cooperative service intent. | The target uses board-confirmed A4/DIO and A5/CLK TM1637, one mode-aware shift-register owner, nonblocking tone queue and framed UART; the perimeter animation is a bounded semantic state rather than an always-running idle distraction. | 2026-10-29: Adapt MODE_RESET waitCounter exactly: bottom-left across, right C/B, top backwards, left F/E; 100 ms per step, active-high TM1637. Optional Ready animation uses existing semantic priorities. Active timed games have disposable idle-only second/minute audio; fresh boot selection is configurable, first available/Press to win by default. No new physical acceptance.","ATmega32 PC6/PC7/PC3-PC5, PD6/PB4 and LCD A1-A7 pin map [replaced] | hard-coded 2231 puzzle, two countdown modes and relay-one success sequence [not-applicable] | blocking valid/error beeps and five-second success delay [replaced] | digitIndex++ == 4 indexing displayData[4] before reset [replaced] | single-byte unframed virtual-key serial protocol at 9600 baud [replaced] | LCD and full sixteen-input/two-register multiplex capability [pending]","ATmega32 PC6/PC7/PC3-PC5, PD6/PB4 and LCD A1-A7 pin map: Those pins belong to a different controller. Pakar retains the confirmed ATmega328P shift-register map and A4/A5 TM1637 map; copying this donor map would break fitted UART, ISP and display hardware. | hard-coded 2231 puzzle, two countdown modes and relay-one success sequence: These are PuzzleBoard business rules. Each target bakes exactly one table-selection or first-wins role and must not leak another game's narrative. | blocking valid/error beeps and five-second success delay: The nonblocking hardware-timer queue and cooperative task owner keep UART, keys, reset and front-panel service responsive. | digitIndex++ == 4 indexing displayData[4] before reset: The donor accesses beyond its four-element display buffer. The TM1637 driver commits exactly four cached segment bytes and has no software digit multiplex index. | single-byte unframed virtual-key serial protocol at 9600 baud: Hardware UART remains at 38400 with framed identity/capability-aware bidirectional events, correlation and checksums. | LCD and full sixteen-input/two-register multiplex capability: LCD remains separately capability-gated and current ATmega328P hardware uses the reviewed eight-bit register plus dedicated ninth input. This comparison cannot certify absent hardware.","tests/front_panel_test.cpp:144 [UTF8-LF sha256=c1c9da7276ef26ae35c7ad6a927d751f177bf43774c1408a86b225f651550cd6; anchor=BoardCore::Protocol::kModeFirstWins] | tests/key_input_order_test.cpp:32 [UTF8-LF sha256=fc1b99ef668cae2692a3317df5c345b544f702207f85646b5e88871c0ce2292a; anchor=shifted==0x5a] | tests/key_minigame_test.cpp:355 [UTF8-LF sha256=cfc14503e4ad7d3d260659ff59e4bc1520072ced8aad008306eaf35e23c26199; anchor=static void panelFeedback()] | tests/semantic_panel_test.cpp:53 [UTF8-LF sha256=24f15644080821c8ee821f8d9851a07ed22557c637714a32b9f0a5b5bd4188bd; anchor=Presenter animated] | tests/tone_player_test.cpp:105 [UTF8-LF sha256=d1d890f6ead81d22702eb685ae710935bc7c007af5f97236454b851a3f5adc42; anchor=uint8_t tick[]] | tests/key_minigame_settings_test.cpp:84 [UTF8-LF sha256=7f8b183063948106127cac87e7cf44544173a3d99c1c7b62997a2a859b5136bc; anchor=Actual minigame settings:]","Keeps reusable status/display/input/audio behavior while removing incompatible pins, blocking delays, unframed commands and the donor's four-byte display-buffer overrun.","Physically verify TM1637 ACK/brightness/text/perimeter/status timing, all fitted keys/relays, exact audio cues and ESP-AVR UART. Host fixtures do not prove optical, electrical or audible behavior.","Not established by source/hash/test-code comparison; see issue #2" diff --git a/docs/legacy-source-ledger.csv b/docs/legacy-source-ledger.csv index d2e7a10..ad731ed 100644 --- a/docs/legacy-source-ledger.csv +++ b/docs/legacy-source-ledger.csv @@ -1595,645 +1595,651 @@ "PCController","b0111ae0c80dc34149ea1044de7dd5488920301b","Tools/VirtualBoard/tests/uart_protocol_test.cpp","56c0474a5f0a7475340ec22e718b262b61a449820eb958403cd47bc36b1497c7","10286","tests","present","status;serial;protocol;firmware;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." "PCController","b0111ae0c80dc34149ea1044de7dd5488920301b","update-dependencies.cmd","55d82c3bbf3442896b4925feefea0f99947c21197d778be8300c0ad6d291fcf6","492","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." "PCController","b0111ae0c80dc34149ea1044de7dd5488920301b","update-dependencies.sh","13c48f64f01258c4e29f68a555b4086350b67a6f8d120e2d6868dbd83a68fa12","376","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad",".editorconfig","37e91dcad62ebe914b670a69a6051bd84d96e444e639cad67b7b48e0b9f5f0ac","462","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad",".gitattributes","547f59603028195ff9f8a87d04c4651551e8bd0d68f075257dfd549cd846b25b","13","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad",".github/dependabot.yml","fa4791635251ad7d5be26ce70d71a8e59aa7b814a4f09f2b5b749d8a49908225","506","tooling-ci","present","action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad",".github/workflows/ci-cd.yml","bba9a295ee7b59e318f76e0b6f6a80f0aec631e249f7d8c798f6c92c0bb7fd8c","23386","tooling-ci","present","preference;action;event;status;shell;serial;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad",".github/workflows/codeql.yml","fc3c298cf966d77f50b575614b4c26f24f1606459f07749a46880cd482f1cb53","2479","tooling-ci","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad",".gitignore","65880959cad401160df570618e66f8cca68139ca38fbaf50e70475640b2d495c","147","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","AGENTS.md","8419c4724104029c8f5730a54b0471a4f41169b40af5be5e96652db2cd5f6070","14118","documentation","present","palette;theme;preference;action;event;tray;mdns;ssdp;protocol;firmware;updater;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/fonts/Hack-LICENSE.txt","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","3734","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/fonts/Hack-Regular.ttf","15f55cc0c85a2988d2b4b3a8cdb5d77fdfbaf319e1bb5309d725db9818fb7125","309408","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/fonts/README.md","2c0917241b96d23b0c11ca16f090b6679485e4943f010a1f0389d942f34f1404","624","documentation","present","preference","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/fonts/Ubuntu-LICENSE.txt","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","4673","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/fonts/Ubuntu-Light.ttf","80307b8da7649aa4ee4d484b232140e3ce1ec0ca093073d3c53c8f5a5ced7a70","361676","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/fonts/Vazirmatn-Regular.ttf","b69fd4c680b8f3f225feabcc655a2c585d97627b8f5f5c0f9985e894069f3a56","122752","design-assets","present","","legacy-unverified","assets/fonts/Vazirmatn-Regular.ttf","Unbound historical decision (adapted); requires source-hash evidence. Imported bundled font fallback" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/icon.ico","4b4a5f9f012dae7530d0bbdc128d1d004546a0082ba226556363c97b3e4bcd3b","370070","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/icons/classic.ico","a0c442accc9b0be3cf725f8ee339579e109cc27a440be4bbdd055c9a89a0e81a","370070","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/icons/classic.png","7d9d96fcee823a5c3fb16a46205772df81b96319d69d7f6ee0d2fe236f73ae42","131547","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/icons/classic.svg","4f28321e923274ce2b571b1f4e7921afe83d61b60f1cffb3679429c3f1b5454c","5375","design-assets","present","ota","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/icons/README.md","b82f98fe31bd8b77261ff33bff640618d58a15cc9e287681f176e0d888db3dea","1211","documentation","present","preference;tray","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/pealayer-icon.png","082cd912ba2a649f4f2c975b570efa6063e1c96a8051e0b81cdd1895826ab9ca","13738","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/pealayer-icon.svg","64610d3cf25cbb0814d784a5530ee7b002775b477128aded1feb941d951d1485","1685","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/themes/palettes.json","11990ef4b31ba6eb1275c6e76b9156e0f05bacb2f59a8fa0372b778c6caf1501","1437","design-assets","present","","legacy-unverified","assets/themes/palettes.json","Unbound historical decision (adapted); requires source-hash evidence. Imported byte for byte as the native and Web palette authority" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/themes/recording-colors.json","cbda19cded83672814b75a894919c6363dfc9e54d8ba15e37e6c35bbee767687","284","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","assets/themes/ui-colors.json","3a820ac2a7e0d406f34b815f46fddc5b09ec56fa2b5230b69a1b3abb6d185eb8","576","design-assets","present","","legacy-unverified","assets/themes/ui-colors.json","Unbound historical decision (adapted); requires source-hash evidence. Imported exact semantic color swatches" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","build.cmd","84dc54c81fa72e2fec6906add9503c58423ad40b5415aeab76ccf5e2b8f375bc","383","tooling-ci","present","shell","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","build.rs","68fb1bdd9e7c7523ab303e37001d3a5252dcb03abe85e489432fe913be7b2e0f","7233","application-core","present","action;status;shell;isp","reviewed-open","desktop/build.rs + docs/BRANDING-PARITY.md","Read complete actual file. Application master separated from semantic quick-action resources. Generic metadata/manifest/env precedence/provenance pending; macOS mpv probing excluded." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","Cargo.lock","54f291c09a7a0d7bc5e11d7b70b9d1e6921afcef057a788ce7e7226add920e24","171700","dependencies","present","phosphor;event;mdns;serial;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=dependencies. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","Cargo.toml","d17f8153af16ee32d8bef8abf37b15af46f84eeb718f10c4d2791def63d0e84c","3054","dependencies","present","phosphor;mdns;shell;serial","screened","","Content-hashed file-by-file screening complete; category=dependencies. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","CHANGELOG.md","f0a7b4957b86ee7fcdc5016f0670bafc601aadc3cd8b18cf62da49b18ee4b98d","8813","documentation","present","palette;theme;panel;preference;action;event;tray;status;discovery;shell;serial;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","crates/download-core/Cargo.toml","44af3889be856426171a52839fac7d99846b63950d4e615adb676c92846714e2","945","dependencies","present","phosphor","screened","","Content-hashed file-by-file screening complete; category=dependencies. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","crates/download-core/src/aria2.rs","4ee6f48ba24565856a730b22cf3888b53f85062d97f495d180e2cdca5939ef13","5952","application-core","present","action;status;serial;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","crates/download-core/src/cache.rs","150ef70caa9069c5872aea494f6cffe9b812fe5c5bf41e700cf06628d09f508f","7212","application-core","present","status;serial;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","crates/download-core/src/engines.rs","f1220e2d63ff72eb7cccdb95b1a5f1064f80f27f93cc72f35dd00738dfa1bdcf","14214","application-core","present","action;status;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","crates/download-core/src/lib.rs","d06c69f6b38ac2f764e7f2489c92fd6c865a232c8f0cbf3d3225a4f9efb41303","48875","application-core","present","action;status;shell;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","crates/download-core/src/tools.rs","7af574f90a182be99f2a5ee105bdfb8e7b3e8efa63151eef26cfdafe521da3c7","10192","application-core","present","action;status;shell;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","crates/download-core/src/ui.rs","9493a433755dd4a29cd7a7cb01503e4aa88de78e977de5dbc291e865ae38d0a8","21010","application-core","present","phosphor;action;event;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","crates/download-core/tests/tools_runtime.rs","0b9535449a88d8d3f81e7fbdc2cdf94617a599b9a5f5c48badbdf2fae3b81b1c","9559","tests","present","action;status","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","crates/download-core/tests/transfers.rs","70ceb833c62f6112d5561c43369bed676917e0247533bb812f34ee46107902ea","11375","tests","present","action;ota","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/ALWAYS-ON-TOP.md","603e50ccc555a7a7018baac1b359e4910266e93ae447c8caa211aca0b970ac72","3218","documentation","present","preference;serial;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/assets/feature_walkthrough.gif","4ff5cd266601a2797de7d53f092b99664db2ca8748f09683b84edb7fbcce40be","7979659","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/assets/layout_preview.gif","e7bee22a2cba8dd7fa5cea5ec86dfb81214ab163876fa017d7767bd774047763","1004950","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/assets/macro_recording.gif","a4965ce6b141465c55e6b5e12d11c8f73101f15975997a4484fecf5c5f5a19e0","5726498","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/DOWNLOAD-CENTER.md","9ab3c73adb0809abc7b121fd3c7ece3a73f3347917525ac2dfe4a3256fedfcc1","8219","documentation","present","action;event;shell;websocket;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/EFFECTS-RECORDING.md","ef27bda74347b537d74e90a43bb58cdb95fe24afa2cf5ae90857257f1e54c693","8932","documentation","present","panel;action;event;status;protocol;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/external-mpv.md","0624885e86488c09c6628767f4b0bd5497779e7af46626cf3289d1e18ed6376d","7185","documentation","present","preference;action;event;status;shell;websocket;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/HARDWARE-AUTHORITY.md","d09bf8303f7d92c69569cfe9a8fc125857a4e6c3827aba905de5fd38141acb4d","8497","documentation","present","preference;action;event;status;shell;serial;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/HARDWARE-CUE-MODES.md","70cf65e0f4d52c79c371f29c050f037b9c99d59a3b6a675261fde0abff3dea56","7550","documentation","present","panel;preference;action;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/always-on-top/web-preference.jpg","4d3649236ca1ecb1ba8db02d836631c029ab0ffafbb9234036003ccf30ad9627","53798","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/responsive/after-channel-manager-390.jpg","d8447a99ea2674d7640e777bae9212fdd5dc5e6092c77a4e4cb7dbb11d1a49b7","26404","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/responsive/after-effect-editor-390.jpg","0edde03b73b2877519934333dab427bcee71ec01598c3f3e0bfdc5cab69558ad","20502","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/responsive/after-effect-editor-landscape.jpg","15ba6a2a3dfaf360a55f2b6b179c0450dee76ce040c6722853da4f49a67b5074","13710","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/responsive/after-effects-dark-390.jpg","fea9991b0b6110653915f595abaeebc49cf4431654178d38c5f174228459bf80","31473","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/responsive/after-hardware-dark-390.jpg","05d7302ebfcf04f678d6d10d808083f95d89f1c232c6709c77212e0fa31f9b21","28655","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/responsive/after-hardware-light-390.jpg","1c6d17a24f146881614bd8ac7bbe25a32d0cb29c79e50ef29e37e7cb2e9c2969","29620","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/responsive/after-preferences-light-390.jpg","faa913cd9df56349b1f64c32ec31bedd6ac4a93c0963faeeab9314e248d6551c","32324","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/responsive/before-hardware-390.jpg","03a492e15bb6ca39398e3522f16748499e1ebc9e596e4007d2b735d56a1e2a8f","9078","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/responsive/responsive-installed-dark.json","ea49ac22888829f57269ca1a3267a154942966cfee1f82e06ddcc1ad79bd4a5b","20576","documentation","present","theme;panel;preference","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/responsive/responsive-installed-light.json","cc479ad2c57df741c0eea3f290bbbda2e0b2751fb5e74db911b13662c1465265","7990","documentation","present","theme;panel;preference","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/rf/rf-assignments-dark.jpg","f2dc3c69c6789ceb53a304cbf4e4fd726f4b072dfdc011ef660470883526b348","47838","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/rf/rf-assignments-light.jpg","be1b7aeb72d1c6f09dd1aba295e6fa19715577aebc0540d6d8aa220dfebf2662","53733","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/rf/rf-receive-after-restart.jpg","f93d1e6030d7559160a50f93a0721a01b0d1201e3c6bb8420767c43ab269e45f","54850","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/rf/rf-remotes-dark.jpg","dae0ae1dccb8481882b877d8091b450ff0043e301aefa3115b5cef06ac74665e","44780","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/web-loading/fuji-dark.jpg","bfb7dd258d201f83fec7b3e427b95207c626ead67a3ff78f131febb45b2838ea","8488","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/web-loading/fuji-light.jpg","12f34c21c21cfc66ac23857d1a268cfbae5ca6c05be87341a3f0030eda39e87c","8092","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/web-loading/fuji-view-loading.jpg","4b9867aef1f9d6aacb9c0b8c1269098960e4dcc9535c7b8e7b741c3ca502e614","20489","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/images/windows-taskbar/phosphor-toolbar.png","aa5867d076ffafaed7af87974af7cdb9d2f7588fcad8694ae37144e7811a0129","3967","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/messaging.md","01be9fd84f1e8482e82f1feea559822f486db8ce50d14156e1ce41134c43d16e","3449","documentation","present","status;shell;websocket;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/playback-board-sync.md","bf9f664158d9ec3554aad64ec8a5b1d39d710db584555ced8c685c66b169dbbb","3426","documentation","present","panel;action;event;websocket;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/PREFERENCES-ORGANIZATION.md","504310e17b742e3c66bcd1579272330b207e017d4e631aee2fadc69deee45188","4211","documentation","present","palette;theme;preference;action;event;status","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/prepared-hardware-timeline.md","036c2fa3908351812a43cb35a34e4675d68355893e59e6ef4dcf13b64bf3d5c0","4610","documentation","present","event;status;serial;firmware;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/releases/next.md","71f81fa503d0494a85dd700e16cabdb23e1a6dcd6abbb0abc1af47000584b3f7","941","documentation","present","palette","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/releases/SCREENSHOT-EVOLUTION.md","5ea2b42f16e1c7afdfd27065a99b91a3d7e8176c81abeaf10ad29fa50fd06316","2029","documentation","present","palette;panel;preference;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/releases/v0.1.0.md","5c7ea8ef78e2f5ed358d368664e3353d597efe3f45b72e2abde1f5a82652f01b","476","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/releases/v0.2.0.md","cf9097cad4651b0578a6b9ba55e8cd43ca35a4d40e4a54c19a87ad37c3627fff","1170","documentation","present","action;tray;discovery;shell","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/remote-folders.md","c34bc6aa84945bba7c7e143de739e5e5f1fcff84c84a6b0802931dfafbb02fec","7996","documentation","present","preference;action;event;status;discovery;shell;websocket;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/REMOTE-PEALAYER.md","349c18ebdd5d6451815e72587bb0994b6e9263bd2e05a98540d8221c0d2608ea","9377","documentation","present","preference;action;event;status;websocket;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/REVIEW-COMMENT-AUDIT.md","7a91d9fa8778383ee37e33d861ceebc5ab210e46bedab6af8be82d56c27523cc","12681","documentation","present","action;event;tray;status;websocket;ota;isp","reviewed-open","tools/audit-github-conversations.mjs + docs/GITHUB-COORDINATION.md","Read complete actual donor. Exhaustive paginated conversation collection and manual hash-bound scope decisions adapted. Download is not semantic review; remaining corpus and generic safety/runtime acceptance stay pending on issue 3." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/reviews/2026-10-06-review-thread-inventory.json","0a963fa2ee82a20db70be087fc9c045518b2ab7d02adaea9b607eb8ac44633cb","63905","documentation","present","panel;action;event;tray;status;websocket;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/RF-CONTROLS.md","ede5be912ff25a8569744b8ccf19ad607f34ee07d015d86a7b5953629b35e466","7076","documentation","present","theme;action;event;status;websocket;protocol;firmware;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/SCREENSHOTS.md","844423f82d46400a3e698283b2f99688502d96ebb3a62574eceefefa2acfff85","3704","documentation","present","theme;preference;action;discovery;shell;serial;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effect-cards/after-dark.jpg","d12716647243eec41277f6470217295df4cc5108f262fac9f3863898d50d3019","40945","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effect-cards/after-light.jpg","dc5b54b43de2a7751074fbb58137057ce9a535c6a3758fecf0a8adab48a2ee0e","42452","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effect-cards/before-dark.jpg","83945d1bb30541e58f9d61a306f972f26c18a523098ab3e12cff790d188a6281","36141","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effect-cards/README.md","bdce5fcc8a27be4299825e6bb5115c606bf2157d5dce06eb44b654f23c8bcf20","2512","documentation","present","palette;theme;action;event;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-library/groups-after.jpg","220173489961c5f3972d08e0b5cbffa45720b53fc546a0f13a451a2a391d3944","36135","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-library/modal-after-dark.jpg","46f51e3ff3354a0b0f846fa8ec4b77bbf2138bc88235162317ff56fcb83cffc1","28383","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-library/modal-after-light.jpg","63d40d6b2469c9030a3d63122136c4bf7833bd2f90c0c59cbc1e26ba79e6df93","30727","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-library/modal-before.jpg","d081ec4ad5d6f47afaaac0c44d3ca7e517456231b09071ab86054bb951531eff","26966","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-library/README.md","ec80101ba65d884536b7b20dbafe1aeaa6de65311e39ccdc37176066a78da11e","3315","documentation","present","palette;theme;preference;action;event;status;websocket","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-recording/native-recorder-active/manifest.json","f07f33f11096832d8dc9eb0148583d52d9b5ed77162ec530d0977c8a626e1a35","1142","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-recording/native-recorder-active/pealayer-en-dark.png","d4acd283261c23d20cc9257c194ff2e7ed2f49ac707f5f619acf17c35441502f","171058","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-recording/native-recorder-final/manifest.json","5d68869fc521091ae44419a3eefcf795bfede2f72d55b71cac85ad21a5b91eed","1142","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-recording/native-recorder-final/pealayer-en-dark.png","5099bbc0aa350f46226998237f80c0d75f7eb79b0716759d15272f28b92586ac","169736","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-recording/web/effects-library.png","956dd05a529808699b0cb006019cd4d15a92e4bfbb82b02d2f6417629a09bd24","104167","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/effects-recording/web/timeline-cue.png","7fa3a269959d0f707125dff5078be756b97b95e3e2a6fd61b9132bdd52458a33","155350","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/channel-manager/after-light.png","ac5a42674651edb8013fc67351a3cf8d8b5e545285ed51827649555197caba8d","212878","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/channel-manager/before.png","2919756476fe82a8d659c0fcb2aaafb9f3bd72820dca07d1b699166cc3fc0205","323785","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/front-panel/pealayer-front-panel-after-k2.png","f9b28a424bf09b267932481accf5fcfbd36ace2bba26a5eefebbbf4592db8609","124642","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/front-panel/pealayer-front-panel-before-k2.png","7eb34eeeed2f103b770c609610f6e5acc18044c2e3f0630c8fc16dcdf60b4ee2","123664","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/front-panel/README.md","9f7140c7e6c3dafa2f042d427eed48c5a242d27b16a9bbf7888ca241f1406af7","784","documentation","present","panel","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/monitor/manifest-dark.json","48d8217c7c76af616b401e754984000cfad8b557dcff31ccfc7bb1d5105c9a6d","931","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/monitor/manifest-light.json","70d05649b2cc6dac0041aba9ad09a9860d03cf21764b37680fb47e8579a4b676","933","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/monitor/pealayer-en-dark.png","0e07ceec76ce251c737d8e30cde86b212b741fd5ee57d8ab148da26b0addc39d","188492","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/monitor/pealayer-en-light.png","5b6096219318c297eb6a65da67838ec29ca3d27649cafa904d200e8bf302da2c","206948","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/motion-context/manifest.json","4ca7661d118767098a2901bdf5f06326988f2cf7060f4caf9a3a46291fee4dde","1394","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/motion-context/pealayer-en-dark.png","375955ff74707f986d3b63d1de90c38ab6088630ad80a01c7e53fb0918e1a75a","193587","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/motion-context/pealayer-en-light.png","67e2cfba5256b4352c1f0968a5bdc4ec09dc4459d5d6cb4e04f58fb0ee9e8238","216958","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/pwm/manifest-dark.json","8680ba7cd945a4fd10e5e27ac6e29351cb2ece3b223c0820e84bfd22a805f38a","1018","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/pwm/manifest-light.json","83869680240d3fe29ff901ada8128d47d9a33bbcc89323017701baf0b484b733","1020","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/pwm/pealayer-en-dark.png","13b6639e2d3b24abc3a3c5849ee664875c6874c08f96a3be33d036a25784c444","190022","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-controls/pwm/pealayer-en-light.png","996883ea00efaddd9df41e48f1d081f942607eb11810cf6c43fabecf13ffb072","208322","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/hardware-monitor-before-light.png","69e44968da8e38a12c3890b82d61668ec3bb788c4434dce8de3f533b5b7898ea","71595","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/manifest.json","ce15e7a77eb8dfed6edbbcc9220b44ba76ac09ce0c37ae8fb1d14eacd7799926","1715","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/pealayer-en-dark.png","453c4d74bbf59aba3f6dfb9a30552e6790d46eccde7f42a4bbd9c458f9094c6f","41120","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/screenshots/pealayer-fa-dark.png","b122c62f986ed61b69c2e232fa163e073d9d30ef2d70e97ae9a368a76958d60e","38094","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/SEEKBAR-MARKERS-AND-SEEKING.md","5b0fe5db19b31a82ef7b6cff3c8116d0dba5595dd9b39ae602e556a469e102fe","4052","documentation","present","palette;theme;preference;action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/SOUND-EFFECTS.md","43d1134471172395a7cc903c9d7f4cb1ebaabb80b124936899f7bf6f13d285c4","3727","documentation","present","preference;status;websocket;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-16-4d-cinema-simulation-protocol.md","4da74afd0c7b1be41c66d8d9a4c23c4fdec5bbceb9dffd69e733840cf4d76103","9330","documentation","present","serial;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-17-4d-cinema-live-motion-capture-recording.md","1f6c123ac85f68a3c4e7599cc6287d530cf19228e7354c7d5be6d70e8b1f349a","23845","documentation","present","action;serial;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-17-timeline-ux-ergonomics-interaction-design.md","1428e9a5e555acb75c4beb0d2a733312192c56edc78c474822be5b3a46a85acb","23161","documentation","present","action;event;serial;protocol;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-18-hardware-affordance-and-track-validation.md","4addb1c0faec805fa47b9ab07cce55913b27f4973895bb058d2fddd9f7610913","17927","documentation","present","panel;action;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-19-timeline-effect-controls-and-handle-ergonomics.md","fd5b32723615ccf4e9713ef11ef18948ac222de789815706a850bd38803efba5","11026","documentation","present","action;event;serial;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-25-interface-bug-fixes.md","e73e5168dcd0e58f3d2f2090ce83ddc5a8595cda550ef343266f89683ee36ca6","5413","documentation","present","theme;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-27-milestone-2-unified-ipc.md","705879e1c0dfe0fceb4f6692c72841531d3aa566a9524cda837fa64410171486","1425","documentation","present","websocket","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-27-milestone-3-cli-mode.md","cc57143383c4412cbc54c8396cc56aefcfaa02cec3520917b1013e985d0f2d72","1377","documentation","present","preference;websocket","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-27-milestone-4-windows-aesthetics-and-associations.md","f0f013ced5fad089bbe76581ad212cd3f9e04d7bb843a94f68d415415cd1b4f2","14978","documentation","present","palette;action;shell;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-27-milestone-5-web-ui-media-explorer.md","56d954dee5bb5687fc629f311e1209a1c09763ea7df07231980ff14985c41f8d","7771","documentation","present","status;shell;websocket;serial;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-28-phase-a-controls-ux.md","163c37f2bcc47c8f49dd6537e5bf31a88016b032218a0961c2735a1bcf59d89d","8711","documentation","present","action;event;status;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-28-portable-system-config-storage.md","244ed6999182c28924a39aeafb5b968b9c075e6997e4a47932048cba84e7e432","20307","documentation","present","shell;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-28-windows-taskbar-and-tray-suite.md","033a82778e4ed8258bbbf99600d16039f523043386e302032d6df8849624ea9f","14588","documentation","present","action;event;tray;shell;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-30-light-theme-timeline.md","53f7508a028d8650fd113957ef9676f676b365febba213ddf2626889e292aec3","17808","documentation","present","palette;theme;panel;preference;action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-09-30-workspace-panel-restoration.md","13c657478cb2df5ca94cfa9455d64ff7707c6988ddc7374b8225b324d644d96b","18598","documentation","present","phosphor;panel;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-10-08-frame-accurate-scrubbing.md","8efea5b390b3682ee195b653dab9a250c1b3d6b5d14cef2010970750cc89c29f","19106","documentation","present","ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-10-08-icon-picker-centering.md","da186a9043758dcdfccc361bfe64dc5dfe8b766ac5e4a233bf5ef675f86e5288","3226","documentation","present","phosphor","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/plans/2026-10-12-libmpv-teardown-and-windows-test-isolation.md","fe33ef59f48e94b2451db0c4a054d8e85226322c23c17d1b466715fba71b6d60","4349","documentation","present","action;event;status","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/specs/2026-09-16-4d-cinema-simulation-protocol-design.md","d521eddb907a65b8b3a5cc6f0b402ae600e2b6ceeb08818ba8f541304ecb1c8c","1216","documentation","present","status;serial;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/specs/2026-09-17-4d-cinema-live-motion-capture-recording.md","ea83fa1967e797a8a40d110a8ff1776fd2df3ce24f7f82f33c14d552ceb8b406","3528","documentation","present","serial;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/specs/2026-09-17-timeline-ux-ergonomics-interaction-design.md","980f6d93e0029ee40f7f87812bf3838500801bcab3b802bfc995996c6ec227d5","10204","documentation","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/specs/2026-09-18-hardware-affordance-and-track-validation-design.md","acc0c007809321f624e3bfbedc10dec0d6e9909b7037329d1cc54275549ce72b","8586","documentation","present","action;event;status;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/specs/2026-09-19-timeline-effect-controls-and-handle-ergonomics-design.md","6ba8a05d01c3e3f7233b1817322767db37a902d30a38e59ed34fab41a1e6f6ae","5655","documentation","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/specs/2026-09-30-workspace-panel-restoration-design.md","f986ae7c1c76026967b341d0dc8121c29e0c50c60b7a8fac89ec361006390ffa","10277","documentation","present","phosphor;panel;action;status;serial;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/superpowers/specs/2026-10-08-frame-accurate-scrubbing-design.md","054537fb008eb2762d622db23e45d0726033e3b97edefaaef297f77923715d07","11470","documentation","present","event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/addressable-strip-pipeline.md","ed3b794bb8770a289fdbfa0271665ec86a78d3dbdb40082c3c3a428f984ba2a0","5848","documentation","present","event;status;serial;protocol;firmware","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/agent-handoff.md","b0de9fb2e643bc5b86bca5b97435e73df0abaa64e2de5792196190624cc589d9","18409","documentation","present","palette;theme;panel;preference;action;event;status;discovery;shell;protocol;firmware;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/appearance-palettes.md","82d98a97c70a1d8ce929f396d4e45b43125cb49cf5de4c233d4f3cfeed902fea","4161","documentation","present","palette;theme;panel;preference;status;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/appearance-palettes/neutral-default.jpg","fc122c9a64416213a3d6e30a99f84e217acd04f33b1716a469899ae059b5ca84","45479","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/appearance-palettes/studio-green-dark.jpg","d946fecb352c80995c75974d4a07d7f8bc8f000520a9603477563fbaf9511def","44081","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/appearance-palettes/studio-green-light.jpg","7339913a4de0acc0f0fed4bcc7f23550845e3b8728c5d27f8ea68d914c76d871","48794","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/application-shortcuts.md","534c76ad08d793872f64931417444a20b5355db27f11a261b8327f7bffe502a4","2263","documentation","present","panel;preference;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/audio-slider-wheel.md","c166c4871dd3724da61f2158c434f19c86fba54c8b6057310ce020bd3a6c8fab","2220","documentation","present","event;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/authoring-readiness.md","680688cd2ef747cbc0dd84ae4591931c64a4ed8ab8a7cbbfc26922a28d1d4ba6","2313","documentation","present","preference;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/authority-modal-dismissal.md","93cb3202ea13f7e1a7fdad10ec0c55cd4c5fe1825bef742a7a5f99c70f87d5b1","1593","documentation","present","action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/background-media-controls.md","6ad6707f13141a349dc089319c2fb03f55a3a13d3a19cddd974636ed28ac4e24","3533","documentation","present","preference;action;tray;shell;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/binary-udp.md","5e59417e560f54b4096886bff37835e9f48c5ea988433a87561d47f3a8911a94","5336","documentation","present","preference;action;event;status;discovery;mdns;ssdp;protocol;firmware;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/BUZZER-LIVE-CATALOG.md","3757ca2a56a0ee88bc8634c1d81b99b5f0c8dacb037767150e207c8aeb0ac46a","4610","documentation","present","palette;action;event;firmware;updater;buzzer;melod","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/CHANNEL-FEEDBACK-AND-CUE-PROPERTIES.md","c833a34599e420724a2ca2ca3d296d78755ed37c7294c9895b8f98e86ecafbdf","5751","documentation","present","panel;preference;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/channel-folders.md","613334050c88db40c19913c1ff19e38799b0b7ced746213b2b7467eabd7a7259","7404","documentation","present","action;event;firmware;updater;eeprom","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/control-bar-customization.md","4d84f41ccacdaf764c28e73a3caa0e76cd0c9e17076ece0e03781d39d2eb719c","4995","documentation","present","panel;preference;action;status;serial;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/control-density-and-buzzer.md","15be57122e9b8bdae5afcb356d9fa6046cd993c29ee4fda3e9b5758b6a1ff5d6","3554","documentation","present","theme;preference;action;event;tray;serial;firmware;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/controller-response-deadlines.md","f2fe5db5547a70c15f2b66355b0ab5437d7a1970668a78c451e110567853c63d","3853","documentation","present","status;serial;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/controller-update-progress.md","3dbdeaf3769a5d9d4d3c9fa0d19a41ea55521a18ffe959f79bd32dee4ac6e535","2379","documentation","present","preference;event;status;discovery;firmware;updater;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/copied-link-verification.md","510dbdd05003b12b0e0053485568178e35060fbcc5678486ad9575e5da355dba","3030","documentation","present","preference;action;event;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/ctrl-arrow-frame-stepping.md","473a20f94e2e6e870025b73df0118dd1b0710ea41852ef4641313346cfffc0f3","2483","documentation","present","preference;action;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/cue-dialog-responsive-dismissal.md","fd8555db75f669741b75d6f74c035c7bf5b13cf7387fef3c0c95bd4021698d54","3789","documentation","present","theme;panel;preference;action;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/CUE-STARTUP-ACCEPTANCE.md","f46fb368e767def05135111d165af8595abf043f0a158413a367969c98787d1b","2941","documentation","present","shell;firmware;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/CURRENT-ACCEPTANCE.md","e95cab3671c7a9d359c2d19cedc16fea9c03e3b7feb2a63f3a6e433b57864cbd","20279","documentation","present","palette;panel;preference;action;event;tray;status;discovery;firmware;updater;seven-segment;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/DEPLOYMENT-AND-MERGE-CHECKPOINT.md","7c659699d42f8c99729b4079d0c4df69c685bd1c1c92c47176a2cea7fdd2c6b8","31827","documentation","present","preference;action;event;status;shell;websocket;serial;firmware;updater;ota;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/designer-effect-groups.md","3aa6b1ccd66d69baacbaeaaeb79583522d16260e22e76dfffeece0ea50b47bd3","2498","documentation","present","theme;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/designer-interaction-consistency.md","44408263a403fc246d24e1a6a17b522f7b52b855efd18688abbe8b7069ab80f5","3092","documentation","present","preference;action;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/dropdown-navigation-colors.md","f95cc2e3d9b70f45c4343eb03988655eb7dd89db93d8f2eaa44a7ecc62506c9c","5473","documentation","present","palette;theme;preference;action;event;status;firmware;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/effect-card-rename-geometry.md","00f09e28a27cf52b881ff646f92414a144eebc39337ad6e677791e7a006cb8d4","2236","documentation","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/effect-card-rename-inline-web.png","a1c83cb9f751457be6b51c0212713d853674a293d1907d0c66d594bd564cd0dd","51393","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/effect-card-rename-menu-web.png","0321b42b32bb722786fcf658849f945c8071d3398620bc6cc64942ae216dbe5b","51929","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/effect-card-rename.md","bd705f1d99f35479b9bc30cac42adfd2f3d7a75b266f0004da09674d8e4d2b46","3356","documentation","present","phosphor;panel;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/EFFECT-CONTROLS-INSPECTOR.md","b93e098086071b6f5f43d15bbc332f4da612029d3e7dcca5fce09d5ee4ca6122","7403","documentation","present","panel;preference;action;firmware;updater;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/effect-sequence-context-menu.md","a07813a087895ce99386c939768e09b2e223013e45bb27a3eac4055c9488cad6","2837","documentation","present","theme;action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/effects-designer-gestures.md","869554511b024092229f36575d98a5db94a3d016fb5aeaffa72ff0f096ea3ca5","8955","documentation","present","action;status;shell;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/effects-library-card-header.md","bf9758e77987d39362326a4288bf88efd8683d2411b5e900e83d4a3c47b5d176","2676","documentation","present","phosphor;theme;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/effects-library-hover-spacing.md","0afc1db6b313057c2d81c07386233b14401df9203f6713867f8f09ddf347d4b4","5308","documentation","present","theme;panel;action;event;firmware;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/ELAPSED-TIME-SEGMENT-EDITOR.md","ce52a4be3acdcec2da930f19de30ee067174509de9f70f7cc308919045e4be6f","4642","documentation","present","preference;action;event;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/ERFAN-AUTHORING-READINESS.md","f6cfdbc15dc68443cc18d2620ba956683dfb5d49b9ba746b27f3a0377e794b7f","12342","documentation","present","action;protocol;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/EXTERNAL-MPV-DELIVERY.md","e7d614c00066883438ec77f8132f74e551979f9890125ab674659000d592be53","4956","documentation","present","preference;action;firmware;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/group-selectors.md","0ee1012dd37bf935fe11ec2474ff34501a7d90bc32b0a76f82f05f4908624313","4107","documentation","present","theme;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/handoff-audit-20261008.md","994e39ceae91e80e97126647e492fc66e18dbd11f1cccda11a981cbdf7440498","5629","documentation","present","status;shell","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/hardware-caption-alignment.md","74a694c0c97c81cd11f99142fe1af064948c320b3ddb56d473ec5f740d80bfcd","2336","documentation","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/hardware-clock-starvation.md","9a037e4bb4743af254248648902cb3ea6b89b9d15da01f3cc76f730a32af0293","5266","documentation","present","event;status;serial;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/hardware-hidden-disclosure.md","65e8054395e764f1a5693377d93fdae228bf761e8fadd565e935ffc1093c282b","3855","documentation","present","theme;panel;action;status;shell;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/hardware-monitor-navigation.md","2750e9df83f7b22f892b928062387192c3356fcbde75367fe484e15c8a5b1666","4145","documentation","present","panel;action;event;status;shell;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/hardware-preparation-recovery.md","a7738a56e294b0480ed9e72de890fe24e98685992ee4b2050d1fc3e9400d4b6e","5729","documentation","present","action;status;firmware;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/hardware-secondary-click.md","a529792a1d1b0a59469aad2a0718fbb3a149e9c92bd37803f1e998199a1ce2aa","2312","documentation","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/hardware-status-interaction.md","91d5ae19ce057b7b1944908c7e94925425328cdb8c45dab3eb649d2b64be8343","7694","documentation","present","phosphor;theme;action;status;firmware;updater;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/header-selector-bounds.md","75d01a2c13b33f9883294ab2b32550f1147f34fc6038536c74d5dd0869819c92","1623","documentation","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/ICON-PRESETS-CHECKPOINT.md","d880682cc609af79908a9370c93f5c59ad3e3b2ba964712de0cbe2417aec6273","3228","documentation","present","preference;action;tray;status;updater;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/idle-video-repaint.md","3558e2c9d11ccf1b7fd47aae1af1cc3ca18cdc7cfa95cc4f790ad65316188377","3186","documentation","present","panel;action;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/integrated-effect-capture.md","cf3cbb55ccba347d3d92cd843b1c2edabb782913e3f4e6b23b510e45cc61515d","5304","documentation","present","action;event;discovery;firmware;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/issue80-current-audit.md","51a13aefa8736ddfebc2a072ac0ad22c75b67f359966dcd3abdffce1ce62f6b2","4710","documentation","present","panel;action;event;status;serial;firmware;updater;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/issue80-native-delivery.md","6dc7dfbbcf8d7ae7eff7f19591e4f6099d434ea6a44bfa7e8806080e2d65d357","5692","documentation","present","action;status;shell;firmware;updater;seven-segment;buzzer","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/keyframe-context-focus.md","7052182df0310de6863c42b1d4c9c50ade0eeba9cc3272c08fa2d55e3c145381","4092","documentation","present","panel;action;status","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/LIVE-BRANDING-SURFACES.md","be70dc5302099e5b236571cc561fc63a08a03930358488e182596d65455e56ce","4668","documentation","present","preference;action;tray;status;shell;websocket;protocol;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/LOCAL-WORKSPACE-HYGIENE.md","c024125307f6e466c924e1b8874f869a575b085b2a05bb4493bfd1d1e9f38975","12617","documentation","present","preference;discovery;shell;firmware;updater;ota;eeprom;isp","stale-review","","Source changed since manual review of acfcfccde3647841e3c55430fcc36677501659e8ff8fb1761c25391a0c6bad1d. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/MOBILE-BUTTON-CENTERING.md","f3e298ec68e9d80adba1754ef77213b19435459e18eef30ac36a9422eb2ad0d2","5106","documentation","present","action;status;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/model-native-service-policy.md","19d2f2f20666dfa706e1d4ef7838929b4c35dd7a785cae6ab9f972961b34ce3c","1874","documentation","present","event;discovery","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/native-icons-and-timeline-navigation.md","e32251bdb2027a2bf0f4018bf0a46acf1d96fe1ddcbd4232106115e2dfc05998","3860","documentation","present","panel;preference;action;event;tray;status;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/native-media-keys.md","54490ea60a6a67e668e1c8a9ecd8ca9468d5394bc5b0131c6d3030d50202b673","5269","documentation","present","preference;action;event;shell;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/nle-transport.md","5f4ad53a6b0ee8cfd6a651fd8d3a9f28d560d475b82cd027bbc32ef400cd8849","2760","documentation","present","palette;theme;action;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/NLE-VOLUME-AND-RESPONSIVE-TRANSPORT.md","ce97e66190305ac38855f95645ee51b01e5afcd200d385960b573fe6c0088809","3776","documentation","present","panel;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/numeric-adjustment-steps-web.png","dbd5f103cab76b821c8375e8285bab036abf269bc4f65bdad30829a31a009f6e","44082","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/numeric-input-context-actions.md","102046cfa0e5ce1be0b6e4104af1c02d5cb649eb9124e6b23bbbc1c59064bbe8","5383","documentation","present","preference;action;event;status;serial;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/os-media-session.md","3136a49b504dcbf9332e80b2f6a78a7aafbbd6423c6aa1a3d1049c1da30469de","4957","documentation","present","preference;action;event;status;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/paired-peer-deployment.md","0836e55fdeeb55f839300799a66ebdefc04141b98fff43d160d49574c2e66d27","5841","documentation","present","action;status;shell;serial;firmware;updater;buzzer","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/PALETTE-SAFE-ELEGANCE.md","ed0a441127e20a90ba0d9f4b6aac34ed701a745b2cc907a1515726c2140d81f2","6024","documentation","present","phosphor;palette;theme;panel;preference;action;status;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/panel-mirror-fidelity.md","b1ba4f2fa86e8653452b945367ff4430e127598005ff51d8a8c6310d6797d75f","2991","documentation","present","panel;event;status;websocket;serial;updater;seven-segment;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/playback-board-clock.png","d2ca3d096e1701ea9488f1768c4c6f305bb4e6fc93446962c5778f25c73a1b74","14920","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/playback-board-results.md","fc2aa0a7fa6465d1ec4e3f67c7876bd0a8129f5d93c85139fd8210ca8f2af30e","4831","documentation","present","panel;action;event;shell;serial;firmware;updater;eeprom","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/pr77-checkpoint.md","8d8aa8008cdea5946aa87e86500be357367a4f1eaf85db37a600d98d2d98ab8d","2260","documentation","present","palette;theme;preference;shell","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/preferences-save-closes.md","cec55a7e17828efba767e3338430cb8733488960c7d42ee8977c4fdbfef20602","1415","documentation","present","preference;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/prepared-timeline-results.md","2070b3c198079376a5b3609d37b7e15d147e3f534c34e5c82580bf4fc8c4f93c","3976","documentation","present","panel;action;event;shell;firmware;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/program-monitor-viewport.md","5f7d89e9420a1c796f4b25f48e279a64ed28f163d8c0b60753c381b36a120c42","1314","documentation","present","panel;action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/programming-latch-state.md","dd20c0b8857119650fa55a75bd1fa89e984bd1f554539927294de0803f0be0cb","3210","documentation","present","action;event;tray;status;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/pwm-card-controls.md","5c4318ecb1ad4c895d82ebf4507a3c2a30a163a735c0db40bfcabbac91b55842","2607","documentation","present","preference;action;firmware;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/pwm-editor-intent.md","aeede3c7f9d75bc2b9921999d7608993a4b8c43246f3f89e0a96b2356074617e","3235","documentation","present","action;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/pwm-observed-power.md","d89c1f04284e351f9d258fb6101bf9dffc090b1a7451b1ddbeaa24d2373e67c9","2167","documentation","present","preference;action;status;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/recording-colors.md","781df25faf4dd02ce785be0bd5c20e8d1b4b4c1f9cad257fdc1ad62745f9a1c2","2746","documentation","present","palette;theme;action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/relay-card-semantics-and-centering.md","9a08668c4fecc6934bfb243e7c90527835aa8108eaed68c87a757d7f2cb20b22","2409","documentation","present","theme;preference;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/remote-folder-web-dark.jpg","add09863a88c566a86afbdc92f498b6a7553afcdbac347d1d1c974a1023f3d62","59895","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/remote-folder-web-light.jpg","36992fa8bb64a5555e5a386720cce3e38542c64654b5c5d950df42c182b387f7","63330","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/remote-folders.md","05074e5aafed1d40b1881d6410a75e2a9a5aa63723fa8b324f1ca238aaeb0bcf","4574","documentation","present","palette;theme;preference;action;event;discovery;websocket;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/renamed-seat-titles.md","f080266e9177ab44a415434b97f103c6b4a34e3e4d38947e424c5128f06c33fe","3226","documentation","present","preference;action;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/rf-assignment-usability.md","20224b68314dc6b4b4549f7ac7832f621ab2c610ff54efad1dfedf45cb64afb5","2612","documentation","present","action;protocol;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/rf-editor-first.md","8252f2e4474ea540234f1084b20233a661a5f96e8f1ccef643ff31aeef7f47f8","2525","documentation","present","action;event;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/rf-reception-and-learning.md","0ffe890591936b90088f3fa33b60447e0ac0ec6a9cbbf9776367d21a4edfdc24","4319","documentation","present","preference;action;protocol;firmware;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/rf-saved-rules-responsive-wip.md","3320fd6a82e4ab1341795b8bce997e45f0e8b6f1c0406ea0505e4b8623e78db8","5847","documentation","present","preference;action;event;websocket;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/screenshots/effect-group-empty-space-menu.jpg","d92afb4f885c766a700f0ec7846d2e726ac7421da17fb5f2342d9f2131b03020","39098","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/screenshots/effect-group-selector.jpg","b3e29f855277ddff1dd9d391a6e0f2da7d7815fa82ed990501baeb87797a1524","37039","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/screenshots/integrated-capture-active.jpg","f1ecac0efc3394085cb6b949b113072fe2674e7880c43ddfb94e69f6f7c39508","42373","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/screenshots/integrated-capture-after.jpg","a2d11e77b5990b65620d426465cd1904532297c76aa61c585ac560e4c368b2dc","33390","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/screenshots/integrated-capture-before.jpg","022b3d1064679c20c570be6f3fe2dd3bfc01c83f738155aece784af8fbf4d2e9","40069","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/screenshots/integrated-capture-existing.jpg","a7844ac0d8b60a7e9f98e1f0784f2766c2149aacc28f7b05fddb220d60a581ea","40994","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/screenshots/recording-color-after-blue.png","c6cdad6105f530a899548f17ebabbc85e001eb13c3eebcb61857abecf60f0aa9","36333","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/screenshots/recording-color-after-dropdown.png","68bc40d8e2d046a7550cd19401f79477d6353f13ac6164457c150f8a63916ad0","36624","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/screenshots/recording-color-before.png","e3488d7dc4e9807d1da168da576e81bbc8845b9ddc5cdf3aa820674bc65a1a8c","35554","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/seat-cue-timing.md","a24a21c05b742492258cde16c0b9df233a50c24831eeba83faa7eabd5344e27d","5119","documentation","present","status;protocol;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/seek-hover-card.md","5691d942671b6b3996c1af1f608256ec5b11655e36ee091a9ca84c2b8f038e4f","3701","documentation","present","preference;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/SEEKBAR-CHECKPOINT.md","aced6337872288b49dfdc43e9f7193c77bc367ba75dd424c3e7d80d09b8d6d6a","2621","documentation","present","preference;action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/SEMANTIC-TRANSPORT-AND-DEPLOYMENT.md","bb1d2a3a76848b91194f34cad9727ab69a53f0318d103ea489731476404e7a74","2485","documentation","present","palette;theme;action;shell","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/SFX-AUDIO-DELIVERY.md","bd5ef5c3c62cdf6d0a0f065e970ca77cac34c14f1cd9ff00a92c610c7c454a8d","4546","documentation","present","action;discovery;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/shared-messaging.md","e45aeebc707c294a599b90123049f8fb8e19b62700c586de990e557866e36435","2965","documentation","present","theme;status;discovery;websocket","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/shared-picker-refinement.md","ea4052a8345ed6d7c0b4910b5539551a56e94d8d6e3cdc1c6852a04d8af27ba1","1579","documentation","present","phosphor;palette;theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/shared-pwm-policy.md","a32119d5f3aecc5282fbea4a9328113f03455d1a3720d24ba745bfc20e4ca117","3393","documentation","present","preference;action;event;firmware;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/shared-toast-web-dark.jpg","f8bc6a215f23c0a1fec67eed29feb8832036b93b2c2cbaf01c61d7ca21f8c869","52012","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/shared-toast-web-light.jpg","f6b5564b2e468abb45d9746677087911640138d68b46ce8cac71e6f07fb8cc70","54761","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/square-modal-close.md","d20c06dfa2aa19e77c390f1a8fdc6a8b024c64229b8c1b615b6ab8d4a253178c","2216","documentation","present","palette;preference;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/station-timeline-crash.md","fd9ef071eb25ac070f6cb89970a90bfacbdf6c3a7186901c4be905eaa84c7b0c","7911","documentation","present","action;event;status;serial;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/status-bar-widgets.md","bc973a91a1a48a95d58b3247632e568896b4d1dab0060d4e455c7a62f2e5623d","10782","documentation","present","phosphor;theme;preference;action;event;status;firmware;updater;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/step-repeat-ghosts.md","a95c66916f70b393f8c24e4703d101904c6a450d9fc89625bed37bc39e20c764","2674","documentation","present","action;event;firmware","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/subtitle-alignment-web.png","fc224f216393b975fdd893a1ca2510889e4ae5ca474e9a9a4cb7ae12dfe6b9c3","49833","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/subtitle-alignment.md","ac44c69f83384608fbf54c66983cd903c44da7011691568d86919123d4d6d79d","4606","documentation","present","preference;event;status;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/subtitle-hardware-layer-isolation.md","fc6de31ca34f71259154252510896be0bfddeb85318e70b67239ff5a0c142867","2705","documentation","present","theme;panel;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/system-theme.md","37197456a27824e3f2f9536f55c7165425393eaa54b51aed45f2d5adf7a07693","3827","documentation","present","palette;theme;preference;action;event;status;websocket","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/timeline-compact-clock.jpg","0c32cf6e5b0f909fd688021ae4eb265df9b13a27ea341991ffc6a991ae250896","1769","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/timeline-compact-clock.md","ee6da1556cf0b7b04f919beb39ad277807daba931fc38ed9a1ad527b755649d9","1047","documentation","present","updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/timeline-frozen-ruler.md","a5cd6410a51c80e8c134539c5a1ddf050af6883d3bfb53ffd04bd38aa048699e","3533","documentation","present","preference;event;status;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/timeline-toolbar-drag-feedback.md","8c642ff333e6cc081480b8c240f5a15adefc2d21730e14da8cfa8a40c553e881","3371","documentation","present","palette;theme;action;event;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/TIMELINE-TOOLBAR-INTERACTIONS.md","7d346c6515df59fe8f99ece6647f3179d0a26a674a8bd1cf4fa7fb6fca6c0246","5344","documentation","present","panel;preference;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/timeline-wheel-actions.md","ff11e2d874776e22f10d289c14c0facd68a7f0b6e9701714e96fe561aaca1f12","5290","documentation","present","preference;action;event;status;websocket;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/timeline-wheel-actions/live-sync.png","e8dcbb24cd5505d97da14dd3bc8d7b1201d0835cf84e3dfe2ffe0442d3726ad0","57359","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/timeline-wheel-actions/preferences.png","c95c0b59e1da59468141c1a1710bbb007bcd59139d82723e0f49a50539cb7809","53536","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/typed-controller-errors.md","e7221c74cc056f219f95af8e978ae3dc35c41f33269c723e1510a020e4d1b6a7","2886","documentation","present","event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/verify-appended-recording.mjs","408c7ec5a6079cbd3d5cb010171d5c3228bc147be680732aefdc52544c9cb8d9","7149","documentation","present","status;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/verify-live-cue.mjs","90c9544ffc07e710fc2a41020fcdebdc9e0bea8b7e7522e1e9cd88e0d8cdaa50","8208","documentation","present","action;status;serial;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/verify-live-cue.test.mjs","f58342624aa46dc24862b2d77ec02a3c71885addf301f1cd0807e1761953f3a5","5649","tests","present","status;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/verify-pealayer-prepared-cue.mjs","f6d1f6f4c8c5a44a4776a85e82c6b1486d9038e87fbb83bab4323889085b9c87","5483","documentation","present","status;discovery;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/verify-playback-board.mjs","68629c44a41bb2a4c44ee5810a80fdbc4a75a2fc11b59c6d811a38d476c64c88","6851","documentation","present","panel;action;event;status;websocket;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/verify-prepared-timeline.mjs","8a5b5463692a510db3f8393b0ddae08459c557ef0914880991c80113da44ef8d","4927","documentation","present","action;status;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/video-ghosting.md","1453ccb7298bc7569f40bf5888587218bfb4b9abc53e30f5e5d24d1687478efb","4126","documentation","present","event;protocol;firmware;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/virtual-development.md","7c93c72ef93c50f6ebba2bd309404aff6589cca04d4dd927826a5712464f6498","3594","documentation","present","panel;status;discovery;shell;serial;firmware;updater;tm1637;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/web-file-locations.md","649dd0e90f60a6764acdd622fe57c994170b3d70b0e8397ad5f62cb0e6d4c8a8","4654","documentation","present","preference;discovery;shell;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/verification/windows-tray-board-actions.md","08c386551365512012f60bd2ec10bba4d1ceb0d050d8a8ce6204c777dab5d866","4586","documentation","present","theme;preference;action;event;tray;status;shell;firmware;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/WEB-APPLICATION-PARITY.md","09c994223c6ca02b0c8c71be554af966ac55997c0218f33cce99b6cc88f99353","22797","documentation","present","palette;theme;panel;preference;action;event;tray;status;discovery;shell;websocket;protocol;updater;seven-segment;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/WEB-ASSETS-AND-LOADING.md","5f2b5979e853df7ed102a44de163037883daeabc89a43c1c127102a0dce570f1","4274","documentation","present","theme;preference;status;shell;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/WEB-RESPONSIVE-LAYOUT.md","e589ec4ef7204c409371c577cd2eda576bf2247757786b6a5308df00c940ff6a","5608","documentation","present","palette;theme;panel;preference;action;websocket;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/WINDOWS-SHELL-RECOVERY.md","57fbd904e18d8f0036dd67e2c866d357ab282075689a1cbf6b38a64270875492","5212","documentation","present","phosphor;panel;preference;action;event;status;shell;protocol;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","docs/WINDOWS-TASKBAR-PREVIEW.md","e4426f937576281ac63c0ce0c3583af3c5f69951af78fc9c3887fa20e6ceb8a9","8876","documentation","present","phosphor;theme;preference;action;status;shell;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","examples/square-close-preview.rs","198b9cd2f36ff48003afdbf1d3f8bd647ba4df8761aef9f8c30b5fdfcf1de7a3","2414","ui-design","present","palette;theme;panel;preference;action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","LICENSE","f52fdc03b3a61af55f5b7a8480a1d92fe46f0a59f2f2193d0155a6b65bce0c2e","1066","application-core","present","action;event","legacy-unverified","desktop/licenses/Pealayer-MIT.txt","Unbound historical decision (adapted); requires source-hash evidence. Preserved upstream license attribution" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","output/pdf/pealayer-pccontroller-effects-guide.pdf","8e5cfe6a9b476580fd7946d5fb06d0a07df2e9768d5547b23981159db2019366","491978","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","README.md","4e78a6c486bfc7d78adc6d34552bddfd67c89997edb8d2bae0b46e70c705dcb6","46116","documentation","present","palette;theme;panel;preference;action;event;status;discovery;shell;websocket;serial;protocol;firmware;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/backup-peer-acceptance.ps1","8293c12a759031662ba8fe9b66994a163daeb268f865bd8ce32bab665877e425","2232","tooling-ci","present","preference;action;status;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/build-metadata.rs","fe18f35543ea96f30c713bc170286aeb73883ff7af62c866d2fa3cc56e9aec14","3799","tooling-ci","present","action;status","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/capture-visible-window-windows.ps1","94bc5aed91407818905412d50dde72ea669f3c799ef56a043dd0a81befdce47f","4028","tooling-ci","present","preference;action;ssdp;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/check-build-policy.mjs","7f24cfe914b4b501834cccbd70c6e0c61eb38b9a4a6f6fe880480813abeebf2c","953","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/check-crate-boundary.mjs","da9b469ac596e6eb1999e4d499742a51ebf289335285549569116c1124963e38","1257","tooling-ci","present","","reviewed-open","docs/REUSE-PREFLIGHT.md","Read entire source. Guard prevents duplicate library/binary contracts and resource linkage. Pakar currently has one binary without a library so the exact pealayer::startup assertion is not applicable today; generic module duplication guard remains pending for a library/mobile split." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/configure-windows-host.ps1","8c62e976f9fbcf5a7e874f8190ac9bcfaf654e4f88e6c4c08a7cd468fa3401a1","2202","tooling-ci","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/download-fixture-server.mjs","8350a1c7354ed092411d4cc3057f8d01ee408449adae1366f83250503bf8d091","1833","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/libmpv-windows.ps1","ab6e48f3e0a55a2d86ad1dbb19c01a23c751891cb5a7ed61875a21b1e52645e5","14274","tooling-ci","present","action;ota;isp","reviewed-open","tools/windows-build-host.ps1","Read all 331 lines at d3f11b1. Actual cache/file-identity plus new content-equality helper imported and used by staging. New cache-inside-checkout prohibition needs owned migration of the sole warm cache; unsafe delete-first copy replaced by verified pending-copy/rename. mpv-only dependency excluded; generic profile/config ownership remains pending." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/new-icon-pack.ps1","6a2dbf067e1236b91174f380cf7663b407cd321419600fb25efa77509b0ec6fa","5773","tooling-ci","present","preference;action;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/package-probe-windows.ps1","f4516884990ad76c020fbc6534d902c4949abae0b48da8ea40c008afa44dfd4f","927","tooling-ci","present","shell;isp","imported","tools/package-probe-windows.ps1","Read complete source. Actual process-handle helper imported unchanged apart from newline encoding; bounded exit-code and stdout probes reused by optional staging probe. Timeout child termination is not present in the donor and remains a separate decision." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/package-windows.ps1","5651709cfb58c2f1e0d7052b3ca604df154563ce552498a066c6e67b8f9baedf","15729","tooling-ci","present","preference;action;status;ota","stale-review","","Source changed since manual review of 3e6f8a82456329558c7ec24e596f353c75d39680d8807d6eb0261bd419e5025a. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/patch-windows-icon.ps1","2113741c449d8448d52e478b03993ccd3f96a2ebbd0a8c08d15c1333a273d89b","4712","tooling-ci","present","preference;action;status;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/piper-narrate.py","4d486543a60bed28e9427ba349e9b1c4db4dcfb79bd81488a7c4abc221d03881","1984","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/prepare-host-candidate.ps1","b40ccb3aa61810220f4cd904ab0a6236d819cdfc262925a2a01e33f2c9c4e102","4095","tooling-ci","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/run-ci-rust-tests.sh","aaf963ab73a4498a6feaab164f2304de95b953edd3988bc55094a9f147ae8ac7","793","tooling-ci","present","shell","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/run-windows.ps1","013e5c67e227ed851f8a3d26b27654e38c8816edca2965381bbb1b48d10a750d","2998","tooling-ci","present","preference;action;ota","reviewed-open","tools/build-desktop.ps1","Read entire source. Actual shared resolver dependency is adapted into native wrapper; canonical cache and locked builds retained. mpv runtime copy excluded. Automatic toolchain executable fallback selection and host-triple provenance still pending." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/sim_bridge.sh","a8f3171da6de3b84a6e8d5e6b7ea160351c15b4bc77a9e000b23c29a2b9bc3f1","3784","tooling-ci","present","status;serial","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/storage-hygiene.ps1","0d8fdeb3e15fb52b917784d4cb3875c68bc12c6c6ed78cd16f2ff8ee3561d89c","5652","tooling-ci","present","preference;action;ota","stale-review","","Source changed since manual review of 52f93bf96867b286d7d1c22f36c08603558e10dc6e9c14433e0a9ea9bb5f4f42. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/test-storage-hygiene.ps1","cbf747472685bc0ddb921444ec3399f1734aa6f105ae15fe68fff760c1e023fe","5736","tooling-ci","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/update-screenshots-linux.sh","7bd3372fc15e0486425ba4f80b1d299b4c5946116ed0e5fbdddf9533c6386d0e","3126","tooling-ci","present","theme;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/update-screenshots-windows.ps1","48507f6e9395c8c312c5557db729d05ed8d6a83e980d57a9b01e77ea525db287","21177","tooling-ci","present","theme;preference;action;event;ssdp;shell;updater;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/verify-copied-link-api.mjs","6ede1926e5353d3fd0e304706c5eaa1efe968efd9da586255b6495c7c1d53816","4673","tooling-ci","present","preference;status","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/verify-download-api.mjs","a4b4edd670d1a37818c180850f653dad14b297d12acce7bfc13622ea1b001368","3548","tooling-ci","present","action;status","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/verify-messaging.mjs","708fdeedda97d1a314dcadcad6a8c60fe65773bb25bc47d8af9d710ce8b52b42","3699","tooling-ci","present","event;status;websocket","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/verify-remote-folders.mjs","320cec5927ee203f58f3efa617778bdadc372ec524a736c79a3f30ef01ebec1d","10445","tooling-ci","present","status","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","scripts/verify-windows-quick-action-icons.ps1","f068ca5b27effc256085c7a095a7538fab532884b6a908e0f585b868f32eefd2","5414","tooling-ci","present","preference;action;shell;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/app.rs","41e50c2188ef281b5afcce8a6c5ff46b5bb478ab4ecb65d0d62a4aee0bcadbfe","553651","application-core","present","phosphor;palette;theme;panel;preference;action;event;tray;status;discovery;shell;websocket;serial;ota;buzzer;melod;isp","stale-review","","Source changed since manual review of d32e15fa4dc42581f8b44b5690950b086fe3ed08cb030e2aaf93b2587edf116e. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/application_shortcuts.rs","1f173bef8acc2904eac5b0a91407aa4f7629ce65c88ea3a8ac78f8c13321d203","15110","application-core","present","preference;action;event;serial","legacy-unverified","desktop/src/main.rs","Unbound historical decision (reviewed); requires source-hash evidence. Typed non-repeating action dispatch and text-edit focus policy selected for controller shortcuts" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/audio_effects.rs","71e90666ead85dbdefcbbd048d647ba36a943e643f8f17856f343fbe7a26ede0","7200","application-core","present","action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/authoring.rs","3bb56003f6d515c9e067ec71af15aace93945aea6c3669307be5a30ab1c6bb59","5986","application-core","present","status;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/branding.rs","ee6ef94e685a86e72258e4609692a9fefa516d5935d75d15a5abe0ee42ada3c1","17712","application-core","present","preference;tray;shell;serial","stale-review","","Source changed since manual review of be44ca91dfb08ce78fb377ccfcc4676676c05e6b36ed319c497365788ab264fe. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/cli.rs","412b553fcdcd4436075af6bc93c956a4b7d9ac93a552a3458f2afabb8aa1448f","28396","application-core","present","preference;action;status;shell;isp","reviewed-open","desktop/src/cli_output.rs + desktop/src/main.rs","Read all685 lines through EOF. Actual help/version branches and assertions adapted with early exit before config or GUI; shared TUI help and saved hostname defaults. Generic parser IPC embedded identity updater/headless and shortcut parity remains pending; media business excluded explicitly." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/config.rs","a318f05844f617ba908aa08c79c35ff91b5d73fdd833c6f5d06c47ea30b17f8e","121841","application-core","present","phosphor;palette;theme;panel;preference;action;event;status;discovery;websocket;serial;isp","legacy-unverified","desktop/src/config.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported numeric step types and adapted themes isolated persistence and workspace profile state" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/diagnostics.rs","92b065a4d8ff01ae3b4a81fa11fb6e5b671f85bb1f667be6af389e692fef9f71","6485","application-core","present","preference;action;event;shell","reviewed-open","desktop/src/cli_console.rs + desktop/src/main.rs","Read complete152-line6485-byte donor through EOF at5a6961ce. Import actual fallible stdout/stderr macro writer and broken-pipe test; extend for partial TUI writes. Bounded panic reports and shell-action diagnostics remain useful pending imports, not exclusions." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/downloads.rs","7db32d2df4f9e5a15a56d523ca131272768c8ce3874a37313f65b1807f0a3fb7","5770","application-core","present","phosphor;panel;action;status;serial;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/duration.rs","7b7f4e604f6160cdd0ba9cc0a34ed2d55d683dd918587f637af570ed0e57fc7c","14545","application-core","present","preference;action;protocol;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/authority.rs","8e27bbe4f9d82365d0d4d8946ae51b6c762f821d90bfc4803d8a1246787ba3cc","16350","application-core","present","panel;action;event;status;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/controller.rs","1a82472d637469f1659e4487992cfa0ac72cb528d9a9a1e85791fadfa4409410","207829","application-core","present","panel;action;event;status;discovery;websocket;serial;protocol;firmware;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/curve_record.rs","239343d81352b0c88563cf4fab343d91de5f3f9abe8595a594c13ef7f03c7bda","3949","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/curve.rs","22950794da3f9bddf981f51852224de68bdeafb367eead1fc8dd615e6d517657","6120","application-core","present","serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/embedded_host.rs","94d8639230309ea9434867e3a1721dcfad086a50b0e39af0e00edbb8c34e6e7e","11163","application-core","present","isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/engine.rs","7a4534f8fc0a031391db6c15a3d20cddc74b29ae2b6a392597d290b56fbce935","159080","application-core","present","preference;action;event;status;discovery;websocket;serial;protocol;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/history.rs","177e218325efe1ef3e915886d16383872e7283333cbffb63395a5216d1512395","2233","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/input_capture.rs","7c618423882eea52a60cf9af4afb93c2cf9092d73b0359a216c5c7f61a0a79ca","1468","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/media_sync.rs","79db1284423bb3475d37527d21cba5da6c27e3c38fcc8d43868a5623b53cc581","65340","application-core","present","action;event;status;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/media_timeline.rs","54c4ea4642451174b5e07be4e6d0c2fa2214965f625d8c8769680a95e44ff5f1","37336","application-core","present","action;event;status;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/mod.rs","a1bbbeb6b6a46a61fb4bc9c7f0290c6ab5756865b6b64ef943827c82be15b83d","272","application-core","present","protocol","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/models.rs","8299b098fad6f060c7db232f67eb05b4c55ee6a50bcc0ea94c73ed10205395cc","30054","application-core","present","preference;action;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/patterns.rs","ad9447e8561e408055d42ef8c4a503331f4348bd358e166eba98c0c544b0198c","1374","application-core","present","action","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/programming.rs","5a59e00a6d8c4a6fc92974a6c01ff70e84e2d199b0cd6c44d68cc86ca5825da4","6665","application-core","present","serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/four_d/protocol.rs","9601e64c6279b6edc6329e0f8fad8860e53e7bf656b2a4d303c67130fb7eb702","9274","communications","present","serial;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=communications. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/hardware_shortcuts.rs","7c2acca638caa744389c345e6b3630b12b72844df3c77dfbc4108d2118f94bf1","10156","application-core","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/lib.rs","a14107fa5bded37ee42038f90781e6934986a436f539f64c767e781b1b325868","531","application-core","present","preference","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/main.rs","452eb004c52bdcff6936de5602cfdddf5c925d58db9e1e48220fc9a21075b696","96","application-core","present","","adapted","desktop/src/main.rs + desktop/src/cli_console.rs","Read completely through EOF at5a6961ce. Import actual Windows GUI subsystem entrypoint; retain native single-binary ownership and explicitly attached existing CLI/TUI terminal. Actual PE/resource gate and focused native tests; destination delivery is separate." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/media_info.rs","ff3b9c467654d7d89282da2cbdd6d1014d104e4fe67c42861f98666c6a6b76d0","10353","application-core","present","serial;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/media.rs","9f4068170e77f2ded48eb3f51df16d6aba70a4615f0378277768b8120f4e5feb","9851","application-core","present","status;protocol","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/messaging.rs","44ba995614f2acc3230f6adc13c00500e6844db81aa36d5e60e7eeb9e90d6f9f","7517","application-core","present","serial","legacy-unverified","desktop/src/messaging.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported bounded MessageHub stable IDs expiry dismissal and validation" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/mpv/audio_output.rs","3527620f6e46b6140b8de67f413177bd315731bb461e725f015d06e536030f41","3018","application-core","present","discovery;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/mpv/external.rs","16c349b8ec9de8515299ea8eb4d5de3a56268347a8b0f05a03cb88e18d3d2648","48165","application-core","present","preference;event;status;shell;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/mpv/frame_cache.rs","9fc70da51c1b281cef5b61f23d512dc2c83fb470d87798df59acad807b61b7f1","3336","application-core","present","ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/mpv/mod.rs","12dbb0f6bed28f79935b37a2af26f8e76c25b2c9b3271561c22fa6088f8d96c7","135","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/mpv/player.rs","900fed4bf8fb951b80f847163be23b304d846bd512f4f087b21bf16797bc1170","3750","application-core","present","serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/mpv/proxy.rs","50db256e7675f1620ea8589efd20c42152f7be1f6b9e3a72fbe9e8bd5195342b","3763","application-core","present","protocol","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/mpv/render.rs","d1f7033bad974a7fb8271bf3aceb71e1e0c9ca71d0d045d22427ed10f510c287","6763","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/mpv/seek.rs","5a6dac8f50dc84bbaf21aba62e588342fc614aebfa27e80be17df21088d73c29","7101","application-core","present","event;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/mpv/sfx.rs","99daa5181354be84facd627702ba734bf7d1e8d2691e338e46f05f410a65502b","22064","application-core","present","preference;event;status;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/network.rs","22abaf1ca05c64d7e694b7b1d8216904df23cb84f47a0d23c6e91e78d40b86f2","6694","application-core","present","preference;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/peer.rs","e6cc286bd1325de1ba9b5acc87e8010b12a70a653383d380338e409a0866c365","52065","application-core","present","preference;status;discovery;websocket;serial;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/performance.rs","584265743e6546633bf2ed5e65cb2a46def053d8c5b31b5aa59bbf4a90d3fc9a","2867","application-core","present","status;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/association.rs","21ebfeb0903fd3e97068f632d0f9d740c2053dc631729ffcfcc17ace2bee3cc3","4240","application-core","present","status;shell","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/associations.rs","87db1fb6944e7ab10e32332f135758e4f9a198dc0735a5fb16343287f07cfd2f","6479","application-core","present","shell;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/clipboard_urls.rs","20da33c913648064529541be4f42e7e86b0fd6be1b076a78a6c5516328c9100b","4547","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/interop.rs","174e750a6f629bbf3d3eabf499ab9ee6625433710048b66e7bd21ba0abd3ab41","188290","application-core","present","palette;theme;panel;preference;action;event;status;discovery;shell;websocket;serial;protocol;ota;buzzer;melod;isp","legacy-unverified","desktop/src/platform/instance.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported native pipe request response loop and typed local dispatcher" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/media_controls.rs","6d9b11283cc470faafd045d91a10c36a1d4913ac7f6feb55a6805773575bdff7","29944","application-core","present","action;event;serial;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/mod.rs","6f1f79cf52e665c7fd51f9f780ceac9792dae1d3204ee3b0483699aa5dade483","380","application-core","present","action;tray;shell","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/registry.rs","3b6f3f7e51baf18976c28f202e09ed20b2db1c7c5fe3b5da70e9a9b101f8dc0f","5355","application-core","present","serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/taskbar_preview.rs","8a30562c13bf5d3c66f13c1d3210f30f342b94aeb7f21f3f4d69e8b748a0490a","20008","ui-design","present","panel;action;status;shell;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/tray_board.rs","a3287cc126e6b61e508a6db101dee9ef020b13cbdeeb3266766ddf837798338a","16835","ui-design","present","action;tray;status;firmware;buzzer;melod","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/window_icons.rs","63bbaa244728a2fb4bd53ad5c35f7ff4b95790e70358d47c34ae704ea79d4a4e","9429","ui-design","present","palette;tray","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/windows_media_session.rs","69366849a21c8a2520839da95aa7ad6a6fdd5e740ee082b6bbad5b153c3402e0","14033","application-core","present","action;event;status;updater;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/windows_quick_actions.rs","35f6de708a0e402f6958a4d8feeead5037b42174286050ddc98c494d4173e4cb","2019","application-core","present","phosphor;preference;action;shell","legacy-unverified","desktop/src/platform/windows_quick_actions.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported stable resource ID contract with controller-specific launch commands" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/windows_shell_icons.rs","e1d8793f8f1697f2030bc407f51e48cab4063964c051f2e21d1f60ae3349732a","3821","ui-design","present","phosphor;theme;action;shell","legacy-unverified","desktop/src/platform/windows_shell_icons.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported exact Phosphor rasterizer and seven resolution ICO generator" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/platform/windows.rs","b7e27d61d8031367e34c4cd05c2fdc8720f7dfd9ec19acc49fc64414109cf178","128471","application-core","present","phosphor;palette;theme;panel;preference;action;event;tray;shell;websocket;buzzer;isp","legacy-unverified","desktop/src/platform/instance.rs + windows_jump_list.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported mutex ownership named pipe lifecycle and Jump List task publisher" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/preferences_contract.rs","1a688a178041f8966ac2b4533b303b7caf0db098f952cb1b7ca5eb2354428c00","82690","ui-design","present","phosphor;palette;theme;panel;preference;action;event;status;discovery;shell;websocket;serial;isp","legacy-unverified","desktop/src/preferences.rs","Unbound historical decision (reviewed); requires source-hash evidence. Single ordered preference contract planned for native and Web" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/process_control.rs","46fe50bc7942e3c1540284ad2d4dd31ae96f0390f3acc84174090aa23fc5241f","13883","application-core","present","status;serial;updater;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/remote_location.rs","d4269d2f5c975dc1b6a49c796b1a28eebde6c1fc5eff5fe1a69d387c3666c459","49323","application-core","present","status;discovery;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/binary_udp.rs","e28bf66583055cbab547955584617d3a85d5597ede6288ef830bbc680100e9b6","30566","application-core","present","action;event;status;discovery;websocket;serial;protocol;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/discovery.rs","a707a76b8424353a304ec28e344e467e89823b81c1f4dca321ec3b7060069c6c","20160","communications","present","event;status;discovery;mdns;ssdp;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=communications. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/download_media.rs","68ea8ace5793a45084d88be37e6168b9eb70d4a483d79b73b52b7af6a261be8e","3412","application-core","present","ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/fs_api.rs","85d1e8f3c21f2d09b5ea5380cd6c680fbe3d639b0cf13f3c36d2b573b75348e7","4205","communications","present","serial;isp","screened","","Content-hashed file-by-file screening complete; category=communications. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/fs_locations.rs","e87720c0c3ea7af933a0234b0458b804af13bc49c912714eb488dadd3afc3cb7","10475","application-core","present","shell;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/media_stream.rs","11ee485001d35b573c41d9535c80e03201160c159217f65be1d68f4add6a8386","7923","application-core","present","event;serial;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/mod.rs","056b428dc44237011e4f299b9dc1f5c53161627368dab78b38e596bfb39f41e6","93847","application-core","present","phosphor;theme;preference;action;event;status;discovery;websocket;serial;protocol;updater;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/thumbnails.rs","07e3cd2307f1dc9eb0ca58d2d6358f9485d1ebd9d8acbb33cab50d4ef2be7c20","21943","application-core","present","action;status","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/udp_client.rs","3dcf43190a9448abdb78a0d1de243ccd4eab1dcea5db81ba1a8c2c99c569929b","7759","application-core","present","event","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/udp_codec.rs","f5a2fbe61a20083008012112aad2e2f1ed6bc191f8b27d4ade4df4d0c9984f20","5967","application-core","present","event;discovery;protocol;firmware","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/server/web_assets.rs","61c1dc863eefcd78d07ea0320b372bb6b5c4a4bb0437fb1e1f267a67ad7d0505","29239","application-core","present","panel;event;status;websocket;protocol;updater;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/startup.rs","9baf7b0fdb1a6c7953c951dd3fa915228e27d6e7323774d176d77e36fe472649","51207","application-core","present","palette;theme;panel;preference;action;event;status;shell;serial;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/subtitle.rs","f88a9b9586b78fadecbb23d45f25717f4a1e43d132430fe8af9a8b14b9355a35","10214","application-core","present","event;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/about.rs","c1108051b5cdb102a07f2e1c7763f27da1538965f4ffddc220db3cf2f8757f2d","17197","application-core","present","phosphor;discovery;websocket;serial;protocol;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/action_customization.rs","d987e725d54a9bc695edacea9fc737ceab26f5ce42763328204f97fa17c67624","5067","application-core","present","action","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/audio.rs","c4adc41d29cb236e2f599c384b24f69f0c01244b8c6fb0548d819bd7433333ef","18433","application-core","present","preference;action;status","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/board_info.rs","ab1c99e674e902e37626963e2dd5cf7d993965334411d5e33dafd1ea2bf79e51","44202","application-core","present","panel;action;status;serial;seven-segment;eeprom;isp","stale-review","","Source changed since manual review of 135e259e7c4b36fede394943b754e9c438a19e9d8f41ea76fd065c57cfa596f1. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/color_picker.rs","fe2bf96c968d83874903f5d06085775f5787cf24467fb0c7be3fcf53077c1aa4","22386","application-core","present","palette;theme;event;serial","stale-review","desktop/src/ui/color_picker.rs","Source changed since manual review of a455b2adfdc80889a2f402c404a0b2364a4a8f968a5cd6b706aa274f015087de. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/control_bar.rs","56d1f904a4ef361d72819616bdf5384b79f6e2aee610bea4b6ef757d57d79608","31337","application-core","present","palette;preference;action;event;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/control_density.rs","690a964825638da4272550f389a948ad62b5947bad03df8aaee60de49c1325ed","5563","application-core","present","theme;event","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/controls.rs","f5211d73c38438f9cff2543ac234965a8dabd26f4a532fb8b8ecf51248fc0a56","64792","application-core","present","palette;action;event;ota;isp","stale-review","","Source changed since manual review of eb7e897040f0fcdd4149d0add2c45911b96a0e20ae8f5dbd62dde961f8713776. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/dialog.rs","8a396d67862578f8727e43a952e82120b20c9c582ebcc5366ab0968ba8f704d8","57688","ui-design","present","phosphor;palette;theme;panel;preference;action;event;isp","stale-review","desktop/src/ui/dialog.rs","Source changed since manual review of 4ffdd81afbaa2f918cb572f11d1ec978b279ca0e263f9bfad83e99a59bc27781. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/dropdown.rs","134f1613df05c9db44f8ccd178981a8eca4fb6c254ced6466229afca66b40ee9","23980","application-core","present","action;event","stale-review","","Source changed since manual review of f77426310758c2a96f9b3e571b3ab716f950ff3bfd5e0c3dc9c2f18ebd3100a9. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/effects_library.rs","a485362a0ad275426ef20768233b5b80b1633f896750bb62ed374d7b964f2b73","244743","application-core","present","palette;theme;panel;preference;action;event;status;serial;protocol;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/elegance_theme.rs","8d11f915ccf56e5ab67232ceac7432051437484d1faecacabab62ec5403d63bd","13265","ui-design","present","palette;theme;panel;preference;action;status","legacy-unverified","desktop/src/ui/elegance_theme.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported host style preserving Elegance theme adapter" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/error.rs","1f62031276eaf7720a344f41cd0a920a92418bcf816f4012efc3fd6a6626b0c9","4782","application-core","present","action","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/four_d.rs","0fc72e60c8ca9d876be5cfd1a7523878381c4aa0d6aa2297e2c9e948ced19e18","21944","application-core","present","action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/group_picker.rs","d7652450b26d97c79d4fa871da4203d210b4e76a1602af3c66537e03d6dc090b","15500","application-core","present","theme;action;event","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/hardware_control.rs","1e20dcdd968c61fd97722f71db1c902bba92529823e85a0db4bdaa4361a756d9","158418","application-core","present","palette;action;event;discovery;isp","stale-review","desktop/src/main.rs","Source changed since manual review of 3152087684039e1edaf6696d25742378b7b5c5eac09e918bf569d5c3fa3b4e1c. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/i18n.rs","811a48221c47c903c1d70ca904ead90a7a6b7f5ee0ba9a5f26a7e60dd30a75c3","104410","application-core","present","phosphor;palette;panel;preference;action;event;tray;status;serial;protocol;firmware;ota;seven-segment;buzzer;melod;eeprom;isp","legacy-unverified","desktop/src/ui/i18n.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported native font setup bundled Persian fallback and translation utilities" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/icon_catalog.rs","0f62f471bc1a6fd3a1f0af3b03df11cd2a6f5a47f3acc0735dea7fd356c45c96","113605","ui-design","present","phosphor;palette;panel;tray;ota;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/icons.rs","cd56a5849a0be621d8472b440c9cbac8b91bcaf603d228cb6148bba1eb554fc9","47713","ui-design","present","phosphor;palette;theme;action;event","stale-review","desktop/src/ui/icons.rs","Source changed since manual review of fba85edd503798868acc5527600b2ee52326339816c5b73e9926d1d7b0929384. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/layout.rs","d60b1913e9f5beb1417ef0951ccaadcdf89cd555a32279c3e6c70f14a94a3e17","1055384","application-core","present","palette;theme;panel;preference;action;event;status;serial;protocol;ota;buzzer;melod;isp","stale-review","desktop/src/ui/layout.rs","Source changed since manual review of db84ecbf382108e0acc67c18e9fc11459092171392831607a6510a6f8c0028be. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/layout/channel_folders.rs","eb19245ab455a5eaee074f6e242ae9894f3d1dcabdf5d4be9396f9a70af63863","33743","application-core","present","event","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/media_inspector.rs","4a7045dfb8499d83ccaa3c21d7a9684b3fccebfcb616efbd3ecbccacff9f53a0","18069","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/media_track_properties.rs","df7757898953048d45cd51ad3c7da3d6eb76abb008c08f20f374b7b01bb0aa39","17986","application-core","present","panel;event;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/media_tracks.rs","bf883e6c5a330304782a7e0fc1052b07f8df83091add1957fae4c018bf092a82","3534","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/menu.rs","a0196878c7b76b898d0a5791b122181d9045d3fbbe9f56de52bc43242edf2d9d","41765","application-core","present","phosphor;panel;preference;action;event;status;discovery;serial;isp","stale-review","","Source changed since manual review of 83aa188b01de2e8eea1206c25b793e47ccaffa2eb3a40ab1617168c912d082af. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/mod.rs","a12993c8ee9d578b72197d2bef9a3e173472d3bd2e22d46511d98339099c96f7","17483","application-core","present","palette;theme;panel;preference;action;event;status","stale-review","","Source changed since manual review of c307ab48118ca5c283648db15c01b2bb9b454fd3c03ce0979d60fea0a78c2897. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/monitor_controls.rs","058ed468407494461a2153a042c9fee80d89b24851c1469e7a45efc30ff79f0b","19922","application-core","present","phosphor;palette;action;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/motion.rs","e9ac14b42fcdc0d1411373bbcdd330560a2a58ac1c4a3b6cccb6ad40662c249b","2592","application-core","present","theme;preference;action","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/open_url.rs","e5b7ede0460080e1f08fba0aa7ea8455e81f0e41c15de8ace675d9dd7a9904ad","73576","application-core","present","preference;action;event;status;protocol;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/palette.rs","c169db6a61b79ebb2ce00f0ca442305eefeea7b34740720a2cdf6424d6fef85d","6370","ui-design","present","palette;theme;panel;preference","legacy-unverified","desktop/src/ui/palette.rs","Unbound historical decision (adapted); requires source-hash evidence. Adapted role lookup and egui Visuals application" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/peer_browser.rs","bb917e1b1f8f191f327732916611feb3d118cb36832db167a4277b48d71a81b8","17186","application-core","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/preferences.rs","1fa2482a389fee84c79eef3d69ad8cc0ecb922c319fd222219af3e90d7e6f965","98064","ui-design","present","phosphor;palette;theme;panel;preference;action;event;status;shell;serial;ota;isp","legacy-unverified","desktop/src/ui/preferences.rs","Unbound historical decision (adapted); requires source-hash evidence. Adapted PreferencesDraft saved preview and discard lifecycle plus rail body footer editor" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/pwm_policy.rs","6d71c9813920b32dc833c90648f005d4a0687478627afe4c2edf302af7c971ed","5136","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/remote_location.rs","55cacd2e22833a71c5b4717c51854823d15f0ea01eed44c96c8a1edad82460ea","14156","application-core","present","action;status","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/rf.rs","c5fb24f320b3a230bdf183d5a362e5ad83d86e422643c944bdc32d22ff2d96f3","94024","application-core","present","preference;action;event;status;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/seek_preview.rs","0500fdc35824e3a1acdca90e5953ecf4eb9c2db7065c63d2324cc963a4ec6957","24069","ui-design","present","action;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/status_bar.rs","e407025a1ee959230634f8350de20d58432313d6dd0f734ada735b8fc9fec4db","83157","ui-design","present","panel;preference;action;event;status;serial;firmware;ota;eeprom;isp","stale-review","desktop/src/main.rs","Source changed since manual review of 99003b3a1c672b8e849ee587ed2144838e3eba99cf02af43e1056d5d24f5767d. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/subtitles.rs","3617ac13b09591572d635550d0dac359e505e6768d1e010ec29ddf26a35e9c70","15637","application-core","present","action;status","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/timeline_toolbar.rs","99f5d7b079024850b5f7e38543c3e8c70f56d309d72ae4308f7e8c95f67235d4","29962","application-core","present","palette;panel;preference;action;event","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/toasts.rs","30d4ff8c9a30b783f9513a3508787e9ca233881bb3a9bda2e1b9f9cd1bc9c989","3733","application-core","present","palette","legacy-unverified","desktop/src/ui/toasts.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported root viewport overlay connected to the imported MessageHub" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/video.rs","ec5937789cd5c0cc0daf1f717898a0bffce330756760a1c84b7e8202e7166860","55080","application-core","present","theme;panel;action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/ui/workspace_profiles.rs","410d274f51e5e7db7ce81582d36166a97240b097e993cec5fee8707a95183e2f","9936","application-core","present","action;status","legacy-unverified","desktop/src/ui/shell.rs","Unbound historical decision (adapted); requires source-hash evidence. Adapted profile manager row actions saved layouts rename restore and overwrite" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","src/update.rs","909e8aa4f903d1a8a63589fd2e371d77ff7b8c6c6bcb3fc9949609ab55440652","74041","application-core","present","action;status;serial;updater;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","test-data/jellyfish.mp4","ac5a1796476da2e218fae4cccfd4a4bc2747593a41b50aedc60e5e19a1bf2b7a","1047968","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","test-data/synthetic_23fps.mp4","de62a75ac5852cb4e981325862a7ad4222b40acb1864cde2efa0383a7fb134f3","32999","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/cli_forwarding_test.rs","777039867acb8f0bc8aaa12da0efbd846abfc62f0612054e1b9b1a6fdeb940a7","4812","tests","present","status;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/config_persistence_test.rs","e06205e3e023e47e8a8c646e881044ce967e793628f7d52159fbbdf589a6f0d7","1380","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/curve_record_test.rs","2ee2dede9ad3ee2d685312f6ac0a5f9f7263670b3a95f77649b332cf2b45ceeb","3820","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/curve_test.rs","cbd24f0c9e347cfd7b34a7f0f12613618aefd6257c65c703c1eee458e8fb455a","4254","tests","present","serial","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/frame_accurate_scrubbing_tests.rs","d3ecb033a7e8b11a068754e00a8b90863f30885c5c5e760934f2d4986f6479b7","10907","tests","present","ota;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/frame_cache_test.rs","3877b3522622201def1443861202c4f02749b9a4c1c173f235b66b8146cfef29","5732","tests","present","ota","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/hardware_affordance_integration_test.rs","4205e42676753cf2c2d20401cf85c1c1b88bf59e075056ef8fbabbb41d8db2d8","2641","tests","present","action","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/hardware_target_test.rs","79b66a0f1703f550a7cedcc6f9be9321c63e38013b4593f1bb6505958f054f3f","1191","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/i18n_surface_audit_test.rs","504768bc9cf2fda32a8dab8b0f50d573c74e45001734f45c7ff3120f36333f63","2173","tests","present","event;status;ota","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/input_capture_test.rs","d7e003ecafc9cd965b0963bb3866b86764628b692642f9e9a8cd9b1fb7f6cf2e","1937","tests","present","serial","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/interop_tcp_test.rs","e4ed01fc9532fad073323a5d3b20ebcd838b0ef274378fe4a046f0f2c5acf687","2465","tests","present","status","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/live_recording_engine_test.rs","e4f40539cd883a11b7d6d7aff89c1209b2042e6ab70740661a895cc0d5288e99","293","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/live_recording_sim_test.rs","6699d1778fbde46416561e36b5604da8ee4ebafb2c306393a548c55ac8300bd8","4843","tests","present","protocol","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/pccontroller_host_integration_test.rs","8c0639a897b8a2c42a64c27350129fa30d961c9068fde1f0cb0e11e462c2b4dd","7186","tests","present","action;event;status;websocket;serial","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/pccontroller_virtual_board_test.rs","823d4aaca1eaa819baefe428a574465a475f2468c83c92d6d2003a90dbb1fcfc","10273","tests","present","panel;action;status;discovery;protocol;firmware;tm1637;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/playback_end_test.rs","0c7b8fdedd18bc22e469561e5575ea9685118571ca0d6fc1cf4fe2564b5aaf0d","9070","tests","present","event;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/protocol_test.rs","bf0f30732dbe7121b0b7fe05e41a40c906676952248772f9f2470e835573127e","5381","tests","present","protocol","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/sim_integration_test.rs","782b8f3b1d07adbd11433a58c4300ea6ba9ec97b0a684bc0fd02afc91352c56a","9743","tests","present","serial;protocol","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/timeline_clip_controls_test.rs","724313f6084f5ec1fb7792510c8697656b1f84c45a797722d0c2c56402eb47fd","52651","tests","present","action","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/timeline_history_test.rs","b6be37afc414db4dd351d2fe17e2baae9e2d03900428986d9883db6df857cca6","4779","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/timeline_pointer_regression_test.rs","f39ceaeb531b75a705bc4304af2382f8819ae702ba9efd9cec13b402379c5178","7211","tests","present","action;event;status","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/timeline_selection_test.rs","4c00459b42d63b00da11f2b883da000a5edd0ee96313a4cecdf6b54b9b1e44e5","8162","tests","present","ota","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/timeline_smooth_seek_test.rs","fb3feab626048b10ff419da691c3ea4acb60c8ceee46497f1c4ec1d883072a8c","5837","tests","present","isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/timeline_ux_integration_test.rs","6e61b457c44fe83a82543d32b1634eee41958e123b0786dbc70319992d76ba1f","1309","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/web_media_explorer_test.rs","60562dd0e2d9ac77cddabeb9989a5df0c19bc4fd84d6da80f86dedfee50d1044","9005","tests","present","theme;status;websocket;protocol","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/web_workspace_parity_test.rs","e139ed7b0a4cc63360d3dcaeb139a62212ec7c105f297bf104727d4de3bca207","4200","tests","present","panel;preference;action;shell;websocket;ota","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/windows_shell_suite_test.rs","3f1f8f7709dd7b0e9dad2c58d1b345e9a7b054bb1bcfbcff9c6aede6598791c6","3318","tests","present","preference;action;tray;shell","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tests/workspace_dock_test.rs","a16b32bd03351aceeb30ac49a36e3eca449f5821f220a4b0f012da839c02ac61","8948","tests","present","panel;serial","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tools/udp-probe/Cargo.lock","c289c509b2b921d35ba8c0462f6dbeaaa56dbac7a7251ba55e144a9c808ae7b7","6759","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tools/udp-probe/Cargo.toml","f858cc7851e7420766fc92cfbf16b227e7e310a420b6613ac0297bb790c9e770","365","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","tools/udp-probe/src/main.rs","9b84d8376fbbb0e6664902e11649628076893c125a14b13894321af1e3a1efb5","1985","tooling-ci","present","event;discovery;protocol","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","utilities/downloader/build.rs","81416102abc1c98057fcef07dd48c042c124af776834b7bbaa244129017daf87","1879","application-core","present","isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","utilities/downloader/Cargo.toml","f0e259a02e751f0c59a8efcc2ae0fbcecc794028976658656663bbcd90caf122","572","dependencies","present","phosphor","screened","","Content-hashed file-by-file screening complete; category=dependencies. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","utilities/downloader/src/icon.rs","228fcf16796c2cc5522b1936f61adc0e63c78e6b55440c293d35759aa7ab6d2b","1274","ui-design","present","tray","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","utilities/downloader/src/main.rs","f7e12741e59ef13e16977088f84290902c74b346fda3397d682e08a0c5daa11f","5253","application-core","present","phosphor;theme;panel;preference","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/.gitignore","6c7d15d2ab1a0b51ebcae7e88b9ad01f0713d0833bc2dbe8f3bcc7a81b66b344","24","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/alert.js","b07538fbd4900d6f758e5f6b2d16fbd183ffe84acb1d8519a6764139de680703","6454","design-assets","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/app.css","f8f0d47e6e8942d1fb760c23689d501116e5908c53e97732c32b5a1c0cf5377a","89924","design-assets","present","theme;panel;preference;action;event;status;shell;ota;seven-segment;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/app.js","6d6caabfdc23a82d54f52fc568a00fecac729659762b83cb4ef82ec35ef3c426","210283","design-assets","present","palette;theme;panel;preference;action;event;status;shell;websocket;protocol;updater;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/ArrowDownOutlined.js","01717b1b9451af22c924b8a7dc1633bb91eeeabc1c4393c2f9a8be5d0722e576","814","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/ArrowUpOutlined.js","e75a8d7c4982c88df005615536c8311f8b93794f8b73efd3abbf8fa8a06939ac","8117","design-assets","present","theme;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/card.js","12aad43fe00cef0b0e92cb9b54c320e86d87527a49b019ff4a7f4f17e6067427","43914","design-assets","present","panel;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/ColorPicker.js","fa6c6866a01e13ea489d4baae0a76ec5b8cd1f6f7885c904f6681d669e8551d5","39458","design-assets","present","palette;theme;panel;event;status;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/DeleteOutlined.js","d4cd4fb8ddf9cc971fab52435a4b41a5f1ba5a90a1fd1af6e48e1f7d3461bed4","929","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/DownloadsTab.js","9ee793db7741fc5b36a8efa75d9524782ef7653fc3e7507fc72467fd0cf46512","7712","design-assets","present","action;status;ota","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/dropdown.js","54fb75ef1b5b835ee89880c959d004a95509842be75c5af4343b8ad725c2f387","41873","design-assets","present","theme;panel;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/EffectsTab.js","4c352fa9a96c2a27aa21b61cc83f93e48b41ff6d756bbc9a9c94a5a18ed43657","26715","design-assets","present","theme;preference;action;event;ota;melod;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/ElapsedTimeInput.js","7d4ea5049b467942ab0c43d814873da069f67a68643e4c07bc3d1ed25aaf186d","35875","design-assets","present","theme;preference;action;event;status","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/ExpandOutlined.js","f64d920a1ce1c8b8770d666eb2cfcd66d378e8fea869d11707c9b219d49c71e1","1109","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/GroupSelect.js","9d5cb0e66eda56b2d0fd2f2f696ce74039d3f49d89993b40892930eb3d87c5a5","9571","design-assets","present","theme;event","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/Hack-Regular.ttf","15f55cc0c85a2988d2b4b3a8cdb5d77fdfbaf319e1bb5309d725db9818fb7125","309408","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/HardwareTab.js","76768b6f076bcb4f67079b4fdf61a6f87cddadff4e0994e9c9df16ee93526aec","73218","design-assets","present","theme;panel;action;event;status;serial;protocol;firmware;seven-segment;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/jsx-runtime.js","d410783b3a5ba8380dc1b40f9cf0f9b052e2134b675b293468b85e7920ffe4a6","488725","design-assets","present","palette;theme;panel;action;event;status;shell;updater;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/MediaLibraryTab.js","d3712a312bd94b090d15dc5b8ff71fa48b1cc8094efc58ee18b95595ae2b19d7","15386","design-assets","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/MelodySelect.js","7dfcfbc0fe8a251b0250e5f3fb4b19f8e7f1a4278fcfef1efae10754d214dd9b","1991","design-assets","present","theme;action;melod","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/modal.js","f67cb934b902a3e1d44f58714b65f5addf39c02cc3049f8dc7adb266abc9541d","26588","design-assets","present","theme;panel;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/PauseOutlined.js","b7b4127ef8cbe96c9eac0bbdb60d8b65b3c6e520026c5ecea32fa57fa44f0202","696","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/PlayCircleOutlined.js","6d83ec599a168fb8b58b00152f1f45d392e042460ec7bc22196373778a571eab","82104","design-assets","present","theme;panel;action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/PlayerInfoTab.js","91242af7e19ca254beb5ab24e7c4071a8eeee672312cedc1f980eab4e00cac6f","15910","design-assets","present","theme;status;shell;websocket;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/popconfirm.js","774c74060e8697e3b34d1594ee8d8a3969b4ba0c67ae93290d7df952af2a3656","3635","design-assets","present","panel;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/popover.js","a0b147935952f2184aea8176230edf5d5e62e988e19b39fd2b5959b0e503d4d5","4559","design-assets","present","panel;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/PreferencesTab.js","5f7f920c79751ab401ff0368e3b2190bdb5594d5f801e59f6a14be3faa960408","22086","design-assets","present","palette;theme;preference;action;event;status;discovery","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/progress.js","606fac2567e285d6cd7629e60721ee65eff902d5b577d838a88b4e8b0b74c0e1","14853","design-assets","present","status;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/PushpinOutlined.js","02b3d34998b678e692c60f382071ba978740c0305390b72b9ecf958b6a03b20d","2891","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/RemoteControlTab.js","ea828c74b997b6327781a3b93d0775389dc8604212866500a155f5722c4d0d97","3966","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/rolldown-runtime.js","bbf7c5086ae414dc3f33777e3eebf16ea8631325b8bb4690d25091c03567f31a","589","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/row.js","d1b7b30bb0b59eb6077fefcb0ebba86f1fca01c69ec5951c05ada564611d37b0","2485","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/SafetyCertificateOutlined.js","0b68ee4a6d33279d75fec6bf6d098fbe2b8d61db7d566f6658fd89a1986c7523","1100","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/ServerFilePicker.js","eab91b5ec3359a502b92ee36bebfae06504c5b49f018b79412ca01c730207334","7580","design-assets","present","theme;panel;event;status","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/slider.js","0712cad991b7ac82e0505b189cd12128f5e5fef757ad8fbce1523cec3047a7fe","24501","design-assets","present","action;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/StepRepeatFields.js","756ba53a5cc2d83236b558cc1dbe4fa18790c28ea6a3e50b1406937dafa3b19f","29920","design-assets","present","theme;panel;preference;action;event;status;protocol;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/StopOutlined.js","9c95cf72ea5426451d58e69c16e6f7893580dd491eb46bb017a0e88dbd7be6bb","880","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/StudioTab.js","c3106d00368ab6e4fe7162c5818b729a6714c1bd77424221759141fdb385f97e","43569","design-assets","present","theme;panel;preference;action;event;status;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/style.js","9f8e35dcf49cbc1eebe7baaa52efbcea0e8e0e42f42f032547b6d1ba01b0143c","1985","design-assets","present","isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/table.js","92eae8acd50a7ed34371b5f1faa1971e0d72d38f525ad365104d9382fbaa790a","189710","design-assets","present","theme;action;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/typography.js","b2e1b277e0abeaf5f951cb37438976fb4c811dbfd6a935b9a30e96915aa0f270","77993","design-assets","present","theme;action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/Ubuntu-Light.ttf","80307b8da7649aa4ee4d484b232140e3ce1ec0ca093073d3c53c8f5a5ced7a70","361676","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/useBreakpoint.js","dd431cf4d5a90e59cdb77f7e3ffda0980cd180cdd8173874086389b59459cf2d","1883","design-assets","present","event;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/assets/Vazirmatn-Regular.ttf","b69fd4c680b8f3f225feabcc655a2c585d97627b8f5f5c0f9985e894069f3a56","122752","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/font-licenses/Hack-LICENSE.txt","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","3734","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/font-licenses/Ubuntu-LICENSE.txt","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","4673","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/fuji-loader.css","fcf8940e88af0c833b6ea4a46b2ad49f5b0aa189a4d5cd9ca6e5df68df412075","849","ui-design","present","theme;shell;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/fuji-loader.svg","9bb6239258823f43190e54a61e1e68cd8a812b13c6c84548923391d902f5a770","2302","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/index.html","e51ccb29a0275314b9dfd4fbe623a5c7f5d0b042bb731fcddc76f3fe8b506e11","2460","ui-design","present","theme;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/manifest.webmanifest","4d4ca66ac2ae23d9e5354770f653b27de599a5a7a654194cc6fe883a9d3cebd3","1124","ui-design","present","theme;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/pwa-build.json","afd4a7ed45f6045ece111e522a95edaca90665ca503df2560fbb44870db13bfb","2367","design-assets","present","preference;ota;melod","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/dist/sw.js","d4d21189e509a280ece2be65ca553fc23ba0ef81b2d4db7ca89caaf154c2d4e9","5535","ui-design","present","preference;event;ota;melod","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/index.html","dd206cd22260a94270df444c3bd85b87defa2ac0ac580298eaf38282c527d7bc","1410","ui-design","present","theme;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/package-lock.json","d26dd09dbd787e87f520cca00437e2a64623ace6704e42669d03227269827008","77042","design-assets","present","event","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/package.json","49eb339b9d40c5b97e943098e62e8c99b913b2d81093db123f6901d6e54ca032","1898","design-assets","present","preference;status","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/public/font-licenses/Hack-LICENSE.txt","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","3734","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/public/font-licenses/Ubuntu-LICENSE.txt","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","4673","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/public/fuji-loader.css","fcf8940e88af0c833b6ea4a46b2ad49f5b0aa189a4d5cd9ca6e5df68df412075","849","ui-design","present","theme;shell;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/public/fuji-loader.svg","9bb6239258823f43190e54a61e1e68cd8a812b13c6c84548923391d902f5a770","2302","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/public/manifest.webmanifest","4d4ca66ac2ae23d9e5354770f653b27de599a5a7a654194cc6fe883a9d3cebd3","1124","ui-design","present","theme;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/public/sw.js","dd8e3de59caed2ca4c833ff91d9a703659df6c22f6cffec668f065445ef705e5","3346","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/appearance.test.mjs","35f269e9463e49dbc41572683ca374be8674a93e0e97c84240838d34dc950ddc","2494","tests","present","palette;theme;preference;event","adapted","tests/web_appearance_test.mjs","Read complete source and ported all four actual contract tests. Additional tests execute shipped code for all palettes and browser persistence/cancel/System/cross-tab/failure behavior. Not hardware or connected-host broadcast proof." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/finalize-pwa.mjs","03b8218465ac00bc76476c092c0e9ca377c1a17b0685cbced621ba30f845a1c3","3038","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-application-parity.mjs","e95fece5a25f594af94067f6ad7099acdaa3446541c4b22528ec7f4afab068e7","14463","tooling-ci","present","theme;panel;preference;action;event;status;ota;seven-segment;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-channel-folders.mjs","606b1984d74bbbfe7959fa06ceb7a0bb73ca4b51cb2d1912f29ebae5003dc106","1851","tooling-ci","present","isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-clipboard-urls.mjs","7dec1674871c4314fd96c6ffea00ace39c5cf64205b1fcc9306a08a822e27915","1450","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-control-bars.mjs","f6ab881e6e42472a6fdca5cfd4f29b75512d5eceaa9fd7a06e98d488908a3782","3186","tooling-ci","present","action;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-controller-errors.mjs","132f8b76d5ff244220215cffc89247c2c30d0e3d7e1aadc62251f3e44fba1e9e","1095","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-cue-authoring.mjs","f74996c2f5d6c993422fa6daabab9beddee9f58ef028e8d28afa6dccc56945a5","10445","tooling-ci","present","action;event;status;ota;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-file-locations.mjs","c03b418256de95d4f1f4409be9d3827c6e5ddaba55f40dc4b9d19e2c221b3e65","1076","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-hardware-availability.mjs","c451251acb4aa2119b623d4d5e2236d0562ac1efd28b61661b89771d0ec7ce91","2456","tooling-ci","present","status;ota","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-media-controls.mjs","c501cdc527ff4acfbec10dc1dc288f2c3024adb3b1f321d750510a201286df35","1537","tooling-ci","present","preference;action;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-messaging.mjs","12923b9cf8fda68b787f498fe404a50c994767bd2d8ddbdce0ea6cd49da0a841","980","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-os-media-session.mjs","0ae2a410eefd275bfacbcda9e818dffac4fd5d05b15eeda5e4778985d7d4cccc","3441","tooling-ci","present","action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-preference-files.mjs","b0ae70aa9a7b438d7638d502b7c2fb88d5cd36a96866c7b62810638efd40c480","1098","tooling-ci","present","preference","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-pwm-card.mjs","4a017549641975eb6950e9dc65b8283e48a3519c7559cd2d25edf0256cd3af05","4249","tooling-ci","present","action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-pwm-policy.mjs","306128ce16cd3c513011f1b00d97ca91a895aac4dd3a02dc1bb5f06e767a627c","1188","tooling-ci","present","event","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-pwm-push.mjs","25977a0374aebf1cd4902821f147c8beff1507bcb42e674a261f5d3fd29edd40","771","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-responsive-layout.mjs","377d208dec92440cb6926a37f9ab972d4aa5802e722e57159155fe75d228ff86","3807","tooling-ci","present","panel;preference;action;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-rf-binding-names.mjs","73f8d706dbe1a2887c604aee943f40e9019f442a0cd66e1fd40d316ace9597a1","1016","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-rf-presentation.mjs","ac608cf7ea0a9c4584f8b30524dfb918dcf7d6725694c5c9aa5425b6623277ff","4171","tooling-ci","present","action;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-rf-reception.mjs","335cc560ac9bef2a3b15c45bb7dc5a3cd0c8e826095a723a0122fc6cfe525968","766","tooling-ci","present","protocol","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-rf-saved-layout.mjs","15ddfb5b28df49746d7eb047f9a74a8e035d03331b8eae644fbac124017388f9","5062","tooling-ci","present","action;websocket","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-seek-preview.mjs","2514659886740dff8be645f1bb023bd3b0f8267af8c20a24f1c88a96ce034bcd","2724","tooling-ci","present","preference;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-status-widgets.mjs","5f47f526959f03b797b97f139e12f945da9fa90a35ca85ea868e8f108a018469","4105","tooling-ci","present","preference;status;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-timecode-editor.mjs","174d70e5179a2c9ab16b5222b362d1cdd0e06ccf74fe6b5583bdd4acdcec977e","1253","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-timeline-time.mjs","116d104838a6b92ad681c74ead549145939b3092188a589b5ecec04d7953ce54","728","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-timeline-wheel.mjs","0ccd79835b40396046793606fc261ecae1965682e71be1f52f6a5ab27a7aa239","2444","tooling-ci","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/test-web-assets.mjs","460d22166373d030da9fa3070db467300fb9091d1f1c5b324b5530217b4c5a33","4005","tooling-ci","present","event;status;shell","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/scripts/verify-pwa.mjs","abb3897421e75dd842f5cbeddf4bf57577dce7abed6453f76a8100990f0c8394","2830","tooling-ci","present","isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/App.tsx","ba2d7a35e2f887ec556b681cca24aaa6f263295208cbc80678bc248b61949845","36262","ui-design","present","palette;theme;preference;action;event;status;shell;websocket;protocol;ota;isp","stale-review","","Source changed since manual review of 0596ca005fc50e76c79b6d178bd5ad6718ae8f640ed4bc9f521fcb932ce6b776. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/appearance.ts","b521c20a1f10e6f818978bcb09948c689b74caaf72df18bdec56f2f566f8db58","3175","ui-design","present","palette;theme;preference","stale-review","firmware/esp/src/WebUi.h","Source changed since manual review of b6a56ff95deaa1779e5021bdc8db9e45bdbf3cb54f4158c20f1e922e16959d54. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/channelFolders.ts","066d9f8abd055555673bc44d2f7d8716e104bca9747e949abfcd9d9f4855196f","1772","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/clipboardUrls.ts","f851b796fbe24ae4d94cb583e4fa0c2851e983db67804d80acfe80e69da11dc4","3165","ui-design","present","event;status;protocol","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/ApplicationStatusBar.tsx","94b9cdc6d28346bb7ae591d6d0a0ec3dd910b47471c6bb3df868582784ea99d4","21495","ui-design","present","preference;action;event;status;isp","legacy-unverified","firmware/esp/src/WebUi.h","Unbound historical decision (reviewed); requires source-hash evidence. Live state status composition selected for Web redesign" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/ColorDropdown.tsx","49d37654faab5033df04954456d0fe980571ccbc66478caaab7007dae1b8c151","4456","ui-design","present","panel;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/ColorPicker.tsx","024fdabb482a714c38a91d0dde5d0be11486b20859a019f4fbc2d3dd34295022","1243","ui-design","present","theme","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/ControlBar.tsx","cbd6ebc09cbf23e4958c4d1979974d3e856f2096bcc2dcfd1556c5ef4c45cafd","11040","ui-design","present","preference;action;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/DesignerFieldLabel.tsx","ed527ea04c4dc8e9f51e755c0dc92b8cd9a71a414b2fbcfbaba96e97cd7916a7","1119","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/downloads.css","5301e1a83619229834082effbc6078f4fb4cd2bae0940695a9df68ae198e0b78","2249","ui-design","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/DownloadsTab.tsx","6586e81dfa2de5e7e5dc71bd21e153e027e137c6f03dfb8aa6335efe5b0e5c60","9825","ui-design","present","action;status;ota","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/EffectGroupDialog.tsx","8c90f7a85286efada6d5a1e24212a03dd1ae14e51bea1767f8d195a538ec8f80","2154","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/EffectRecorder.tsx","60f0592a17464e82aef7d96ad391648fb72add8dea3b07bdb74727934863176c","6188","ui-design","present","action;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/EffectsTab.tsx","1e05d85e102ccf8fe8a1b928d9d948a0818d7c2a69e29e1ceaec9e94d0e1fa84","39349","ui-design","present","theme;panel;preference;action;event;protocol;ota;melod;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/ElapsedTimeInput.tsx","3486788299c7d562735fc9e9dbabe5c803349a360279197fbcecf85dd92a7519","3993","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/FileLocationSelect.tsx","4d8f2b5cecca02476322d171ad04a8e9bc28055947fd2035620ae1d6c8be3530","3093","ui-design","present","status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/FujiLoader.tsx","e1ffd53b29e78aa7153c7a22f0282a5a9d7a2c559832f45e21ffa323d265e7a4","409","ui-design","present","status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/GroupSelect.tsx","14bdd722273e5b80603ecf1f3ae3ac92176c5be49f97edeb8ad82d7595335931","1652","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/HardwareFolders.tsx","a3114bf641485cedaf16bf79b07cff271708bb1e6dd187ce41df5cae4da42b8a","9895","ui-design","present","event;serial","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/HardwareTab.tsx","66b453097073e72ead2fc89f36056371509557d43bcd0053299cc1e99f304712","49200","ui-design","present","panel;preference;action;event;status;serial;firmware;seven-segment;buzzer;melod;isp","stale-review","firmware/esp/src/WebUi.h","Source changed since manual review of 1bd4bc131dd12dfbc9ec340e47b1dc8aa2e0b110011fb40876093a1b85abcb25. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/HeaderBar.tsx","ad53ee284d969054f69b65e8447a313498b5928eae0aed2564e95f8c71e70d04","8654","ui-design","present","event;websocket;updater","stale-review","firmware/esp/src/WebUi.h","Source changed since manual review of df84386e53d729eabddf9476026a9f96afe130dd3429612f4c73509d1757d16b. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/MediaLibraryTab.tsx","853eacc37f9d53ba900b17682062c320711eef4f560b1474150a7912abc7d43a","10545","ui-design","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/MediaSurface.tsx","251fe24c5946d813beacf8760e063e32fcb9978a6fe350890d5967576c4ce35d","13552","ui-design","present","preference;action;event;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/MediaTrackSelectors.tsx","0eb6fd5d33db144dab7204131e6f0472bf1a0a3d446af4161c81189e68b64587","3280","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/MelodySelect.tsx","c82b79b849c6bc72ce8079dbf089630e2c44bb7305300c11c01477b1cac50782","1516","ui-design","present","action;buzzer;melod","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/NumericValueControl.tsx","6f1e99cd5ae8ef0bae30d43a86f22a22371c6543498c5d8938e486cff151d218","5386","ui-design","present","action;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/PlaybackButton.tsx","10b2c97e2b85d1f5390790992b53a8250dc49847ce0c4b1679f5928e30b9fe5a","964","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/PlayerInfoTab.tsx","3d771590a1e6b5392ed8f294068a26ee5403284808eab786eca6caeaf3eff2a7","11559","ui-design","present","event;status;shell;websocket;ota","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/PreferencesTab.tsx","30a63cc1db61a46346c2d4c30ce011dc74081a8a6da2e29853e56d39811a0de1","23262","ui-design","present","palette;theme;preference;action;event;status;discovery;isp","legacy-unverified","firmware/esp/src/WebUi.h","Unbound historical decision (reviewed); requires source-hash evidence. Preferences grouping selected for Web redesign" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/PublishingAuthority.tsx","62cffd9ba3d502aaaf30c4dc52dba5f09e151c9cd4309b105b16c0ce36d5ef6d","4278","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/PwmPolicyEditor.tsx","10f7fa2276a093924c41c1dac3045c5d70e7291905ab5e42f97c4f2d566b042e","2389","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/RemoteControlTab.tsx","4a3cd14c6ba51e4aa489230b5820a77b247a482c52eb8318dc43c16af055b13e","16414","ui-design","present","panel;preference;action;status;serial;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/RemoteLocationDialog.tsx","1b6571793fd747f13ebee92e078b9b2989f3b52178ea7756fe52be49d8f7e415","12024","ui-design","present","action;event;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/RfManager.tsx","e283b2479cf0f1f8e66dde43ddc61b6dd4e2a97a6ed3c3d8b89535011f541cd3","35390","ui-design","present","preference;action;event;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/RfSavedRuleCards.tsx","f8724fdb919712182b10f752914c9ce322fe4984fcec9ce5ddd53d6745bf2045","1703","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/seekbar.tsx","50cfe8d64c183500ecb9a766a340b24437a214f6977abd400d3314db6d48913c","5912","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/SeekThumbnailPreview.tsx","957406b4b0a465dee14657300b4c86aca81f2a693b1e7312cb7cbf8b4ff6bce7","7978","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/SequenceTimeline.tsx","773b16ce81c478c3b1719de69efd1259e8ae9df48bffd2af637d94c3ee6f86d7","21328","ui-design","present","preference;action;event;melod","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/ServerFilePicker.tsx","df5b59007e0b726c815bed0eafcce87e4f5a6e4a59e8c79a1414f2cc7be89316","4595","ui-design","present","preference;event;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/SevenSegmentDisplay.tsx","07cb90f243998086623f6957a7dc14ee2eb9a8ad4c9a644ae74da68a37a78fce","1315","ui-design","present","seven-segment;isp","legacy-unverified","desktop/src/ui/seven_segment.rs","Unbound historical decision (adapted); requires source-hash evidence. Exact seven segment geometry and intensity behavior adapted to egui" -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/SharedToasts.tsx","1cff480ef57bf5bdd84c316e8b990611db7c21619c7763529c03abc0bc3726ba","1888","ui-design","present","status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/SoundEffectFields.tsx","9b024984dc77ca37a4199afdcedb8f32b9fdc7149e9e618e8964c3c32b8159be","2855","ui-design","present","preference","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/StepRepeatFields.tsx","12aed954f80392f1e111fa8b5cd2842f2dc883469c561cdc2288796175504187","1274","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/StudioTab.tsx","c2e36cec1fab36df6224c665c4fb4d374320a62c9820c16e046e30690b4a1642","78390","ui-design","present","theme;panel;preference;action;event;status;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/TimeValueField.tsx","492b290193674b99e055606d2006c8b11c8e57381fec61abb7c68e8b7534870d","1490","ui-design","present","event;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/VolumeControl.tsx","5bb7d7d51744d3ff627b3406295eb650e5221055fa04deffa63c3e76090133c6","2059","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/components/WebViewBoundary.tsx","eabda2c06bc1bc3f88d6f6f0790e0061e5857f2102c1fdf89a2ad01e7e0d60bb","877","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/controlBars.ts","eae3066c6d65c4057248bcc9cb4191246a84320bd60df49bbd830c3f6f1decb0","2840","ui-design","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/controllerErrors.ts","b7c5bec5e656b587637f77a72729fb4eb7bfeea3138d538fdbb9e642d3eb618c","521","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/cueAuthoring.ts","e9b6489f7b321c71d269eb072e38e20f3622d6bf5943312433522a4f55634925","12480","ui-design","present","panel;action;status;protocol;ota;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/effectIcons.tsx","0836bbb837af44ef85cc03a7fad3eec437dd321d20aaa759aab8d440ea36f90e","6798","ui-design","present","phosphor;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/fileLocations.ts","2aca81029dce9db9b1989c63d6663d70943245bc13a4ae77b11156dd35b20fad","1774","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/hardwareAvailability.ts","cd0f51eb347cfbf3f90505ed318497829ca84a763a16e52fd5e0c834591747ad","1560","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/hardwareIdentity.ts","f6b7b03b69478de271f531eb061ea216b60e1cdbfcbc6abadd1b3352c3b914a0","577","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/i18n.ts","331d2545379e36ea717fcf2876508315437bc5abe49923170f50a4f1bb1b47fc","37317","ui-design","present","palette;panel;preference;action;status;shell;websocket;protocol;firmware;ota;buzzer;melod;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/main.tsx","b7578041f5caa4aecf591daad49dcc16b418432952f4e8b3595f08b8abd78873","455","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/mediaControlsPolicy.ts","d2195135c00dd0b36b1743a4837977ae7bfe5fc3457d05bcfad96270e13290ed","341","ui-design","present","isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/mediaLabel.ts","d9f5a045fbe398f8e3a4f97753b1d974d4edcc38295a57036d0b8432f3465f02","979","ui-design","present","event;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/mediaSession.ts","cf032eef087338f65c6ca486f4287b495745b29afd7f971ea75d6f8f555df496","2725","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/melodyCatalog.ts","e0b3bbe4b902b9c0f653dcfcefaba8f148bca88101d26b33b78e5774eca55386","1415","ui-design","present","buzzer;melod","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/messaging.ts","e2f8b33b5ba9e4983ed4ea78838aa0d41f5476a641a80803fbd2f532763cbb38","612","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/preferenceFiles.ts","4580d1396b36f5a907cad6cf2f33a38486c3a7e6948a3bb222974e1b8a2a4af4","392","ui-design","present","preference","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/pwmCard.ts","1ef17e576921f1422f06fc0486572aa7642284cc98c70d0c39e0cac0b31d9935","2125","ui-design","present","preference;action;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/pwmDrafts.ts","593948d5662ccbb86b18fc4778907a3f899830e93a2ac9056181222adb817165","611","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/pwmPolicy.ts","e3faf4aa22877a0b6503bb8b4e07847084be2eea158824857d0ca29b9676b3f0","454","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/remote-location.css","bd063aee5d61b8ae380d894747ac8ad0d7d3971078ec2f6b6a7ca8597d13e84d","1711","ui-design","present","isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/rf-manager.css","6b84c381f383386bc646d6e3a10f1fd595a54e16d2937616ade40c464057cf2c","1232","ui-design","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/rf-presentation.ts","80fcb835a2d1b9d108d20916f75d4959c9d5d0e5c2b9aaf6e5a600472b9fc172","6997","ui-design","present","action;event;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/rf-reception.ts","e11b67861d7ae0a42f576ce2b1544b81855b0feb85dae13446174be329585cba","912","ui-design","present","preference;protocol","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/rf-saved-rules.css","0ed5053e0b3b836004b804e6cd9db82558f52c27b78f023f334c0947de5d33ba","897","ui-design","present","isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/rfBindingNames.ts","2282a81d3c39630b2b173bd6d9ec09e7801f7483fdcb56e4196cbd6a198c6624","1082","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/seekPreview.ts","66423333b22e2d455b5a1057598bde9abfcb580d68d496c57ccdd0a20cea8c56","1336","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/shared-toasts.css","d5b9b58bf54587e5726c2e236d0a60b6e2911c70ab7ea945c22933d92415b794","1117","ui-design","present","event;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/statusWidgets.ts","3b748364e740dba009eb781ee496b7890ba83f8f6e051ffba7560af5e02365e1","5023","ui-design","present","preference;status;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/styles.css","2d08f0129a28e29b55a137c708b9296d5282bd0aaffb6c2fdba6b9d5cf16462d","102544","ui-design","present","phosphor;theme;panel;preference;action;event;status;shell;ota;seven-segment;buzzer;melod;isp","stale-review","firmware/esp/src/WebUi.h","Source changed since manual review of 82cab6cb3eae2bfc04441f9a249c12a2390449ae4a2bf6fc257fa77d3abfb26b. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/timecodeEditor.ts","909317930eb43d8a41be86734d997ae2c6b4efa50e42dcf8057db903e223d649","3285","ui-design","present","ota","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/timelineTime.ts","6820ca9d8f9ca62f0cf08651eb4f6f1ccd8e8a68e68cb68e7a759173e658e3ee","789","ui-design","present","ota","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/timelineWheel.ts","1910311a3acba2f1d22d9d4fb57d43e08bcf6ee91f3ea567e381ae90e8a487cd","2351","ui-design","present","preference;action;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/vite-env.d.ts","65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5","38","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/webPlatform.ts","d6ee8217c05e96be2e20f9a40ab4c46249d57f58871c661a31c33e2310a92f0e","16892","ui-design","present","preference;action;event;updater;isp","stale-review","","Source changed since manual review of 23e8fd2a8f17d296f14b81d6618cbd166129e116e36515444239edac15f89554. Re-read required." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/workspacePresentation.tsx","b4e696358d80f3a3e6720b29f5921d5e478d9ec92a5c0aaac6562920259128b2","726","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/src/workspaces.ts","43fba86291b61e60a132a30e6080fec91c25d700e0b6410760e2dc07e0dea24e","352","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/tsconfig.json","00adaef3cb5f1cc832be92b2867c32ec31a6fabd05b58a6a827eebfd782532ff","551","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." -"Pealayer","5a6961ce6a477a4726b7baf8a84d12fde1cdf6ad","web_ui/vite.config.ts","5d1a2dbcbe761be8e775577274ced51d6a068e6b19af072f5d3fd698c75a9918","1790","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8",".editorconfig","37e91dcad62ebe914b670a69a6051bd84d96e444e639cad67b7b48e0b9f5f0ac","462","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8",".gitattributes","547f59603028195ff9f8a87d04c4651551e8bd0d68f075257dfd549cd846b25b","13","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8",".github/dependabot.yml","fa4791635251ad7d5be26ce70d71a8e59aa7b814a4f09f2b5b749d8a49908225","506","tooling-ci","present","action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8",".github/workflows/ci-cd.yml","2e5c933b7c1646d5cb26ddd8a10f88529de15bd205b525295858755d5044988b","23539","tooling-ci","present","preference;action;event;status;shell;serial;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8",".github/workflows/codeql.yml","fc3c298cf966d77f50b575614b4c26f24f1606459f07749a46880cd482f1cb53","2479","tooling-ci","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8",".gitignore","65880959cad401160df570618e66f8cca68139ca38fbaf50e70475640b2d495c","147","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","AGENTS.md","eb3655d25b4aaa3d8ccaa8217c7357affc7b3afd49a84924d07abce4b0429f86","14444","documentation","present","palette;theme;preference;action;event;tray;mdns;ssdp;protocol;firmware;updater;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/fonts/Hack-LICENSE.txt","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","3734","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/fonts/Hack-Regular.ttf","15f55cc0c85a2988d2b4b3a8cdb5d77fdfbaf319e1bb5309d725db9818fb7125","309408","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/fonts/README.md","2c0917241b96d23b0c11ca16f090b6679485e4943f010a1f0389d942f34f1404","624","documentation","present","preference","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/fonts/Ubuntu-LICENSE.txt","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","4673","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/fonts/Ubuntu-Light.ttf","80307b8da7649aa4ee4d484b232140e3ce1ec0ca093073d3c53c8f5a5ced7a70","361676","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/fonts/Vazirmatn-Regular.ttf","b69fd4c680b8f3f225feabcc655a2c585d97627b8f5f5c0f9985e894069f3a56","122752","design-assets","present","","legacy-unverified","assets/fonts/Vazirmatn-Regular.ttf","Unbound historical decision (adapted); requires source-hash evidence. Imported bundled font fallback" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/icon.ico","4b4a5f9f012dae7530d0bbdc128d1d004546a0082ba226556363c97b3e4bcd3b","370070","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/icons/classic.ico","a0c442accc9b0be3cf725f8ee339579e109cc27a440be4bbdd055c9a89a0e81a","370070","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/icons/classic.png","7d9d96fcee823a5c3fb16a46205772df81b96319d69d7f6ee0d2fe236f73ae42","131547","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/icons/classic.svg","4f28321e923274ce2b571b1f4e7921afe83d61b60f1cffb3679429c3f1b5454c","5375","design-assets","present","ota","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/icons/README.md","b82f98fe31bd8b77261ff33bff640618d58a15cc9e287681f176e0d888db3dea","1211","documentation","present","preference;tray","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/pealayer-icon.png","082cd912ba2a649f4f2c975b570efa6063e1c96a8051e0b81cdd1895826ab9ca","13738","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/pealayer-icon.svg","64610d3cf25cbb0814d784a5530ee7b002775b477128aded1feb941d951d1485","1685","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/themes/palettes.json","11990ef4b31ba6eb1275c6e76b9156e0f05bacb2f59a8fa0372b778c6caf1501","1437","design-assets","present","","legacy-unverified","assets/themes/palettes.json","Unbound historical decision (adapted); requires source-hash evidence. Imported byte for byte as the native and Web palette authority" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/themes/recording-colors.json","cbda19cded83672814b75a894919c6363dfc9e54d8ba15e37e6c35bbee767687","284","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","assets/themes/ui-colors.json","3a820ac2a7e0d406f34b815f46fddc5b09ec56fa2b5230b69a1b3abb6d185eb8","576","design-assets","present","","legacy-unverified","assets/themes/ui-colors.json","Unbound historical decision (adapted); requires source-hash evidence. Imported exact semantic color swatches" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","build.cmd","84dc54c81fa72e2fec6906add9503c58423ad40b5415aeab76ccf5e2b8f375bc","383","tooling-ci","present","shell","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","build.rs","68fb1bdd9e7c7523ab303e37001d3a5252dcb03abe85e489432fe913be7b2e0f","7233","application-core","present","action;status;shell;isp","reviewed-open","desktop/build.rs + docs/BRANDING-PARITY.md","Read complete actual file. Application master separated from semantic quick-action resources. Generic metadata/manifest/env precedence/provenance pending; macOS mpv probing excluded." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","Cargo.lock","54f291c09a7a0d7bc5e11d7b70b9d1e6921afcef057a788ce7e7226add920e24","171700","dependencies","present","phosphor;event;mdns;serial;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=dependencies. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","Cargo.toml","d17f8153af16ee32d8bef8abf37b15af46f84eeb718f10c4d2791def63d0e84c","3054","dependencies","present","phosphor;mdns;shell;serial","screened","","Content-hashed file-by-file screening complete; category=dependencies. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","CHANGELOG.md","f0a7b4957b86ee7fcdc5016f0670bafc601aadc3cd8b18cf62da49b18ee4b98d","8813","documentation","present","palette;theme;panel;preference;action;event;tray;status;discovery;shell;serial;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","crates/download-core/Cargo.toml","44af3889be856426171a52839fac7d99846b63950d4e615adb676c92846714e2","945","dependencies","present","phosphor","screened","","Content-hashed file-by-file screening complete; category=dependencies. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","crates/download-core/src/aria2.rs","4ee6f48ba24565856a730b22cf3888b53f85062d97f495d180e2cdca5939ef13","5952","application-core","present","action;status;serial;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","crates/download-core/src/cache.rs","150ef70caa9069c5872aea494f6cffe9b812fe5c5bf41e700cf06628d09f508f","7212","application-core","present","status;serial;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","crates/download-core/src/engines.rs","f1220e2d63ff72eb7cccdb95b1a5f1064f80f27f93cc72f35dd00738dfa1bdcf","14214","application-core","present","action;status;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","crates/download-core/src/lib.rs","d06c69f6b38ac2f764e7f2489c92fd6c865a232c8f0cbf3d3225a4f9efb41303","48875","application-core","present","action;status;shell;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","crates/download-core/src/tools.rs","7af574f90a182be99f2a5ee105bdfb8e7b3e8efa63151eef26cfdafe521da3c7","10192","application-core","present","action;status;shell;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","crates/download-core/src/ui.rs","9493a433755dd4a29cd7a7cb01503e4aa88de78e977de5dbc291e865ae38d0a8","21010","application-core","present","phosphor;action;event;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","crates/download-core/tests/tools_runtime.rs","0b9535449a88d8d3f81e7fbdc2cdf94617a599b9a5f5c48badbdf2fae3b81b1c","9559","tests","present","action;status","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","crates/download-core/tests/transfers.rs","70ceb833c62f6112d5561c43369bed676917e0247533bb812f34ee46107902ea","11375","tests","present","action;ota","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/ALWAYS-ON-TOP.md","603e50ccc555a7a7018baac1b359e4910266e93ae447c8caa211aca0b970ac72","3218","documentation","present","preference;serial;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/assets/feature_walkthrough.gif","4ff5cd266601a2797de7d53f092b99664db2ca8748f09683b84edb7fbcce40be","7979659","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/assets/layout_preview.gif","e7bee22a2cba8dd7fa5cea5ec86dfb81214ab163876fa017d7767bd774047763","1004950","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/assets/macro_recording.gif","a4965ce6b141465c55e6b5e12d11c8f73101f15975997a4484fecf5c5f5a19e0","5726498","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/DOWNLOAD-CENTER.md","9ab3c73adb0809abc7b121fd3c7ece3a73f3347917525ac2dfe4a3256fedfcc1","8219","documentation","present","action;event;shell;websocket;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/EFFECTS-RECORDING.md","ef27bda74347b537d74e90a43bb58cdb95fe24afa2cf5ae90857257f1e54c693","8932","documentation","present","panel;action;event;status;protocol;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/external-mpv.md","0624885e86488c09c6628767f4b0bd5497779e7af46626cf3289d1e18ed6376d","7185","documentation","present","preference;action;event;status;shell;websocket;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/HARDWARE-AUTHORITY.md","d09bf8303f7d92c69569cfe9a8fc125857a4e6c3827aba905de5fd38141acb4d","8497","documentation","present","preference;action;event;status;shell;serial;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/HARDWARE-CUE-MODES.md","70cf65e0f4d52c79c371f29c050f037b9c99d59a3b6a675261fde0abff3dea56","7550","documentation","present","panel;preference;action;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/always-on-top/web-preference.jpg","4d3649236ca1ecb1ba8db02d836631c029ab0ffafbb9234036003ccf30ad9627","53798","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/responsive/after-channel-manager-390.jpg","d8447a99ea2674d7640e777bae9212fdd5dc5e6092c77a4e4cb7dbb11d1a49b7","26404","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/responsive/after-effect-editor-390.jpg","0edde03b73b2877519934333dab427bcee71ec01598c3f3e0bfdc5cab69558ad","20502","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/responsive/after-effect-editor-landscape.jpg","15ba6a2a3dfaf360a55f2b6b179c0450dee76ce040c6722853da4f49a67b5074","13710","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/responsive/after-effects-dark-390.jpg","fea9991b0b6110653915f595abaeebc49cf4431654178d38c5f174228459bf80","31473","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/responsive/after-hardware-dark-390.jpg","05d7302ebfcf04f678d6d10d808083f95d89f1c232c6709c77212e0fa31f9b21","28655","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/responsive/after-hardware-light-390.jpg","1c6d17a24f146881614bd8ac7bbe25a32d0cb29c79e50ef29e37e7cb2e9c2969","29620","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/responsive/after-preferences-light-390.jpg","faa913cd9df56349b1f64c32ec31bedd6ac4a93c0963faeeab9314e248d6551c","32324","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/responsive/before-hardware-390.jpg","03a492e15bb6ca39398e3522f16748499e1ebc9e596e4007d2b735d56a1e2a8f","9078","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/responsive/responsive-installed-dark.json","ea49ac22888829f57269ca1a3267a154942966cfee1f82e06ddcc1ad79bd4a5b","20576","documentation","present","theme;panel;preference","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/responsive/responsive-installed-light.json","cc479ad2c57df741c0eea3f290bbbda2e0b2751fb5e74db911b13662c1465265","7990","documentation","present","theme;panel;preference","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/rf/rf-assignments-dark.jpg","f2dc3c69c6789ceb53a304cbf4e4fd726f4b072dfdc011ef660470883526b348","47838","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/rf/rf-assignments-light.jpg","be1b7aeb72d1c6f09dd1aba295e6fa19715577aebc0540d6d8aa220dfebf2662","53733","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/rf/rf-receive-after-restart.jpg","f93d1e6030d7559160a50f93a0721a01b0d1201e3c6bb8420767c43ab269e45f","54850","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/rf/rf-remotes-dark.jpg","dae0ae1dccb8481882b877d8091b450ff0043e301aefa3115b5cef06ac74665e","44780","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/web-loading/fuji-dark.jpg","bfb7dd258d201f83fec7b3e427b95207c626ead67a3ff78f131febb45b2838ea","8488","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/web-loading/fuji-light.jpg","12f34c21c21cfc66ac23857d1a268cfbae5ca6c05be87341a3f0030eda39e87c","8092","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/web-loading/fuji-view-loading.jpg","4b9867aef1f9d6aacb9c0b8c1269098960e4dcc9535c7b8e7b741c3ca502e614","20489","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/images/windows-taskbar/phosphor-toolbar.png","aa5867d076ffafaed7af87974af7cdb9d2f7588fcad8694ae37144e7811a0129","3967","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/messaging.md","01be9fd84f1e8482e82f1feea559822f486db8ce50d14156e1ce41134c43d16e","3449","documentation","present","status;shell;websocket;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/playback-board-sync.md","bf9f664158d9ec3554aad64ec8a5b1d39d710db584555ced8c685c66b169dbbb","3426","documentation","present","panel;action;event;websocket;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/PREFERENCES-ORGANIZATION.md","504310e17b742e3c66bcd1579272330b207e017d4e631aee2fadc69deee45188","4211","documentation","present","palette;theme;preference;action;event;status","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/prepared-hardware-timeline.md","036c2fa3908351812a43cb35a34e4675d68355893e59e6ef4dcf13b64bf3d5c0","4610","documentation","present","event;status;serial;firmware;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/releases/next.md","71f81fa503d0494a85dd700e16cabdb23e1a6dcd6abbb0abc1af47000584b3f7","941","documentation","present","palette","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/releases/SCREENSHOT-EVOLUTION.md","5ea2b42f16e1c7afdfd27065a99b91a3d7e8176c81abeaf10ad29fa50fd06316","2029","documentation","present","palette;panel;preference;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/releases/v0.1.0.md","5c7ea8ef78e2f5ed358d368664e3353d597efe3f45b72e2abde1f5a82652f01b","476","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/releases/v0.2.0.md","cf9097cad4651b0578a6b9ba55e8cd43ca35a4d40e4a54c19a87ad37c3627fff","1170","documentation","present","action;tray;discovery;shell","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/remote-folders.md","c34bc6aa84945bba7c7e143de739e5e5f1fcff84c84a6b0802931dfafbb02fec","7996","documentation","present","preference;action;event;status;discovery;shell;websocket;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/REMOTE-PEALAYER.md","349c18ebdd5d6451815e72587bb0994b6e9263bd2e05a98540d8221c0d2608ea","9377","documentation","present","preference;action;event;status;websocket;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/REVIEW-COMMENT-AUDIT.md","7a91d9fa8778383ee37e33d861ceebc5ab210e46bedab6af8be82d56c27523cc","12681","documentation","present","action;event;tray;status;websocket;ota;isp","reviewed-open","tools/audit-github-conversations.mjs + docs/GITHUB-COORDINATION.md","Read complete actual donor. Exhaustive paginated conversation collection and manual hash-bound scope decisions adapted. Download is not semantic review; remaining corpus and generic safety/runtime acceptance stay pending on issue 3." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/reviews/2026-10-06-review-thread-inventory.json","0a963fa2ee82a20db70be087fc9c045518b2ab7d02adaea9b607eb8ac44633cb","63905","documentation","present","panel;action;event;tray;status;websocket;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/RF-CONTROLS.md","ede5be912ff25a8569744b8ccf19ad607f34ee07d015d86a7b5953629b35e466","7076","documentation","present","theme;action;event;status;websocket;protocol;firmware;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/SCREENSHOTS.md","844423f82d46400a3e698283b2f99688502d96ebb3a62574eceefefa2acfff85","3704","documentation","present","theme;preference;action;discovery;shell;serial;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effect-cards/after-dark.jpg","d12716647243eec41277f6470217295df4cc5108f262fac9f3863898d50d3019","40945","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effect-cards/after-light.jpg","dc5b54b43de2a7751074fbb58137057ce9a535c6a3758fecf0a8adab48a2ee0e","42452","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effect-cards/before-dark.jpg","83945d1bb30541e58f9d61a306f972f26c18a523098ab3e12cff790d188a6281","36141","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effect-cards/README.md","bdce5fcc8a27be4299825e6bb5115c606bf2157d5dce06eb44b654f23c8bcf20","2512","documentation","present","palette;theme;action;event;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-library/groups-after.jpg","220173489961c5f3972d08e0b5cbffa45720b53fc546a0f13a451a2a391d3944","36135","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-library/modal-after-dark.jpg","46f51e3ff3354a0b0f846fa8ec4b77bbf2138bc88235162317ff56fcb83cffc1","28383","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-library/modal-after-light.jpg","63d40d6b2469c9030a3d63122136c4bf7833bd2f90c0c59cbc1e26ba79e6df93","30727","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-library/modal-before.jpg","d081ec4ad5d6f47afaaac0c44d3ca7e517456231b09071ab86054bb951531eff","26966","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-library/README.md","ec80101ba65d884536b7b20dbafe1aeaa6de65311e39ccdc37176066a78da11e","3315","documentation","present","palette;theme;preference;action;event;status;websocket","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-recording/native-recorder-active/manifest.json","f07f33f11096832d8dc9eb0148583d52d9b5ed77162ec530d0977c8a626e1a35","1142","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-recording/native-recorder-active/pealayer-en-dark.png","d4acd283261c23d20cc9257c194ff2e7ed2f49ac707f5f619acf17c35441502f","171058","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-recording/native-recorder-final/manifest.json","5d68869fc521091ae44419a3eefcf795bfede2f72d55b71cac85ad21a5b91eed","1142","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-recording/native-recorder-final/pealayer-en-dark.png","5099bbc0aa350f46226998237f80c0d75f7eb79b0716759d15272f28b92586ac","169736","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-recording/web/effects-library.png","956dd05a529808699b0cb006019cd4d15a92e4bfbb82b02d2f6417629a09bd24","104167","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/effects-recording/web/timeline-cue.png","7fa3a269959d0f707125dff5078be756b97b95e3e2a6fd61b9132bdd52458a33","155350","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/channel-manager/after-light.png","ac5a42674651edb8013fc67351a3cf8d8b5e545285ed51827649555197caba8d","212878","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/channel-manager/before.png","2919756476fe82a8d659c0fcb2aaafb9f3bd72820dca07d1b699166cc3fc0205","323785","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/front-panel/pealayer-front-panel-after-k2.png","f9b28a424bf09b267932481accf5fcfbd36ace2bba26a5eefebbbf4592db8609","124642","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/front-panel/pealayer-front-panel-before-k2.png","7eb34eeeed2f103b770c609610f6e5acc18044c2e3f0630c8fc16dcdf60b4ee2","123664","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/front-panel/README.md","9f7140c7e6c3dafa2f042d427eed48c5a242d27b16a9bbf7888ca241f1406af7","784","documentation","present","panel","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/monitor/manifest-dark.json","48d8217c7c76af616b401e754984000cfad8b557dcff31ccfc7bb1d5105c9a6d","931","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/monitor/manifest-light.json","70d05649b2cc6dac0041aba9ad09a9860d03cf21764b37680fb47e8579a4b676","933","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/monitor/pealayer-en-dark.png","0e07ceec76ce251c737d8e30cde86b212b741fd5ee57d8ab148da26b0addc39d","188492","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/monitor/pealayer-en-light.png","5b6096219318c297eb6a65da67838ec29ca3d27649cafa904d200e8bf302da2c","206948","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/motion-context/manifest.json","4ca7661d118767098a2901bdf5f06326988f2cf7060f4caf9a3a46291fee4dde","1394","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/motion-context/pealayer-en-dark.png","375955ff74707f986d3b63d1de90c38ab6088630ad80a01c7e53fb0918e1a75a","193587","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/motion-context/pealayer-en-light.png","67e2cfba5256b4352c1f0968a5bdc4ec09dc4459d5d6cb4e04f58fb0ee9e8238","216958","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/pwm/manifest-dark.json","8680ba7cd945a4fd10e5e27ac6e29351cb2ece3b223c0820e84bfd22a805f38a","1018","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/pwm/manifest-light.json","83869680240d3fe29ff901ada8128d47d9a33bbcc89323017701baf0b484b733","1020","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/pwm/pealayer-en-dark.png","13b6639e2d3b24abc3a3c5849ee664875c6874c08f96a3be33d036a25784c444","190022","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-controls/pwm/pealayer-en-light.png","996883ea00efaddd9df41e48f1d081f942607eb11810cf6c43fabecf13ffb072","208322","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/hardware-monitor-before-light.png","69e44968da8e38a12c3890b82d61668ec3bb788c4434dce8de3f533b5b7898ea","71595","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/manifest.json","ce15e7a77eb8dfed6edbbcc9220b44ba76ac09ce0c37ae8fb1d14eacd7799926","1715","documentation","present","theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/pealayer-en-dark.png","453c4d74bbf59aba3f6dfb9a30552e6790d46eccde7f42a4bbd9c458f9094c6f","41120","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/screenshots/pealayer-fa-dark.png","b122c62f986ed61b69c2e232fa163e073d9d30ef2d70e97ae9a368a76958d60e","38094","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/SEEKBAR-MARKERS-AND-SEEKING.md","5b0fe5db19b31a82ef7b6cff3c8116d0dba5595dd9b39ae602e556a469e102fe","4052","documentation","present","palette;theme;preference;action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/SOUND-EFFECTS.md","43d1134471172395a7cc903c9d7f4cb1ebaabb80b124936899f7bf6f13d285c4","3727","documentation","present","preference;status;websocket;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-16-4d-cinema-simulation-protocol.md","4da74afd0c7b1be41c66d8d9a4c23c4fdec5bbceb9dffd69e733840cf4d76103","9330","documentation","present","serial;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-17-4d-cinema-live-motion-capture-recording.md","1f6c123ac85f68a3c4e7599cc6287d530cf19228e7354c7d5be6d70e8b1f349a","23845","documentation","present","action;serial;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-17-timeline-ux-ergonomics-interaction-design.md","1428e9a5e555acb75c4beb0d2a733312192c56edc78c474822be5b3a46a85acb","23161","documentation","present","action;event;serial;protocol;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-18-hardware-affordance-and-track-validation.md","4addb1c0faec805fa47b9ab07cce55913b27f4973895bb058d2fddd9f7610913","17927","documentation","present","panel;action;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-19-timeline-effect-controls-and-handle-ergonomics.md","fd5b32723615ccf4e9713ef11ef18948ac222de789815706a850bd38803efba5","11026","documentation","present","action;event;serial;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-25-interface-bug-fixes.md","e73e5168dcd0e58f3d2f2090ce83ddc5a8595cda550ef343266f89683ee36ca6","5413","documentation","present","theme;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-27-milestone-2-unified-ipc.md","705879e1c0dfe0fceb4f6692c72841531d3aa566a9524cda837fa64410171486","1425","documentation","present","websocket","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-27-milestone-3-cli-mode.md","cc57143383c4412cbc54c8396cc56aefcfaa02cec3520917b1013e985d0f2d72","1377","documentation","present","preference;websocket","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-27-milestone-4-windows-aesthetics-and-associations.md","f0f013ced5fad089bbe76581ad212cd3f9e04d7bb843a94f68d415415cd1b4f2","14978","documentation","present","palette;action;shell;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-27-milestone-5-web-ui-media-explorer.md","56d954dee5bb5687fc629f311e1209a1c09763ea7df07231980ff14985c41f8d","7771","documentation","present","status;shell;websocket;serial;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-28-phase-a-controls-ux.md","163c37f2bcc47c8f49dd6537e5bf31a88016b032218a0961c2735a1bcf59d89d","8711","documentation","present","action;event;status;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-28-portable-system-config-storage.md","244ed6999182c28924a39aeafb5b968b9c075e6997e4a47932048cba84e7e432","20307","documentation","present","shell;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-28-windows-taskbar-and-tray-suite.md","033a82778e4ed8258bbbf99600d16039f523043386e302032d6df8849624ea9f","14588","documentation","present","action;event;tray;shell;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-30-light-theme-timeline.md","53f7508a028d8650fd113957ef9676f676b365febba213ddf2626889e292aec3","17808","documentation","present","palette;theme;panel;preference;action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-09-30-workspace-panel-restoration.md","13c657478cb2df5ca94cfa9455d64ff7707c6988ddc7374b8225b324d644d96b","18598","documentation","present","phosphor;panel;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-10-08-frame-accurate-scrubbing.md","8efea5b390b3682ee195b653dab9a250c1b3d6b5d14cef2010970750cc89c29f","19106","documentation","present","ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-10-08-icon-picker-centering.md","da186a9043758dcdfccc361bfe64dc5dfe8b766ac5e4a233bf5ef675f86e5288","3226","documentation","present","phosphor","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/plans/2026-10-12-libmpv-teardown-and-windows-test-isolation.md","fe33ef59f48e94b2451db0c4a054d8e85226322c23c17d1b466715fba71b6d60","4349","documentation","present","action;event;status","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/specs/2026-09-16-4d-cinema-simulation-protocol-design.md","d521eddb907a65b8b3a5cc6f0b402ae600e2b6ceeb08818ba8f541304ecb1c8c","1216","documentation","present","status;serial;protocol","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/specs/2026-09-17-4d-cinema-live-motion-capture-recording.md","ea83fa1967e797a8a40d110a8ff1776fd2df3ce24f7f82f33c14d552ceb8b406","3528","documentation","present","serial;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/specs/2026-09-17-timeline-ux-ergonomics-interaction-design.md","980f6d93e0029ee40f7f87812bf3838500801bcab3b802bfc995996c6ec227d5","10204","documentation","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/specs/2026-09-18-hardware-affordance-and-track-validation-design.md","acc0c007809321f624e3bfbedc10dec0d6e9909b7037329d1cc54275549ce72b","8586","documentation","present","action;event;status;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/specs/2026-09-19-timeline-effect-controls-and-handle-ergonomics-design.md","6ba8a05d01c3e3f7233b1817322767db37a902d30a38e59ed34fab41a1e6f6ae","5655","documentation","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/specs/2026-09-30-workspace-panel-restoration-design.md","f986ae7c1c76026967b341d0dc8121c29e0c50c60b7a8fac89ec361006390ffa","10277","documentation","present","phosphor;panel;action;status;serial;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/superpowers/specs/2026-10-08-frame-accurate-scrubbing-design.md","054537fb008eb2762d622db23e45d0726033e3b97edefaaef297f77923715d07","11470","documentation","present","event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/addressable-strip-pipeline.md","ed3b794bb8770a289fdbfa0271665ec86a78d3dbdb40082c3c3a428f984ba2a0","5848","documentation","present","event;status;serial;protocol;firmware","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/agent-handoff.md","b0de9fb2e643bc5b86bca5b97435e73df0abaa64e2de5792196190624cc589d9","18409","documentation","present","palette;theme;panel;preference;action;event;status;discovery;shell;protocol;firmware;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/appearance-palettes.md","82d98a97c70a1d8ce929f396d4e45b43125cb49cf5de4c233d4f3cfeed902fea","4161","documentation","present","palette;theme;panel;preference;status;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/appearance-palettes/neutral-default.jpg","fc122c9a64416213a3d6e30a99f84e217acd04f33b1716a469899ae059b5ca84","45479","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/appearance-palettes/studio-green-dark.jpg","d946fecb352c80995c75974d4a07d7f8bc8f000520a9603477563fbaf9511def","44081","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/appearance-palettes/studio-green-light.jpg","7339913a4de0acc0f0fed4bcc7f23550845e3b8728c5d27f8ea68d914c76d871","48794","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/application-shortcuts.md","534c76ad08d793872f64931417444a20b5355db27f11a261b8327f7bffe502a4","2263","documentation","present","panel;preference;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/audio-slider-wheel.md","c166c4871dd3724da61f2158c434f19c86fba54c8b6057310ce020bd3a6c8fab","2220","documentation","present","event;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/authoring-readiness.md","680688cd2ef747cbc0dd84ae4591931c64a4ed8ab8a7cbbfc26922a28d1d4ba6","2313","documentation","present","preference;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/authority-modal-dismissal.md","93cb3202ea13f7e1a7fdad10ec0c55cd4c5fe1825bef742a7a5f99c70f87d5b1","1593","documentation","present","action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/background-media-controls.md","6ad6707f13141a349dc089319c2fb03f55a3a13d3a19cddd974636ed28ac4e24","3533","documentation","present","preference;action;tray;shell;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/binary-udp.md","5e59417e560f54b4096886bff37835e9f48c5ea988433a87561d47f3a8911a94","5336","documentation","present","preference;action;event;status;discovery;mdns;ssdp;protocol;firmware;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/BUZZER-LIVE-CATALOG.md","3757ca2a56a0ee88bc8634c1d81b99b5f0c8dacb037767150e207c8aeb0ac46a","4610","documentation","present","palette;action;event;firmware;updater;buzzer;melod","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/CHANNEL-FEEDBACK-AND-CUE-PROPERTIES.md","c833a34599e420724a2ca2ca3d296d78755ed37c7294c9895b8f98e86ecafbdf","5751","documentation","present","panel;preference;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/channel-folders.md","613334050c88db40c19913c1ff19e38799b0b7ced746213b2b7467eabd7a7259","7404","documentation","present","action;event;firmware;updater;eeprom","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/control-bar-customization.md","4d84f41ccacdaf764c28e73a3caa0e76cd0c9e17076ece0e03781d39d2eb719c","4995","documentation","present","panel;preference;action;status;serial;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/control-density-and-buzzer.md","15be57122e9b8bdae5afcb356d9fa6046cd993c29ee4fda3e9b5758b6a1ff5d6","3554","documentation","present","theme;preference;action;event;tray;serial;firmware;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/controller-response-deadlines.md","f2fe5db5547a70c15f2b66355b0ab5437d7a1970668a78c451e110567853c63d","3853","documentation","present","status;serial;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/controller-update-progress.md","3dbdeaf3769a5d9d4d3c9fa0d19a41ea55521a18ffe959f79bd32dee4ac6e535","2379","documentation","present","preference;event;status;discovery;firmware;updater;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/copied-link-verification.md","510dbdd05003b12b0e0053485568178e35060fbcc5678486ad9575e5da355dba","3030","documentation","present","preference;action;event;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/ctrl-arrow-frame-stepping.md","473a20f94e2e6e870025b73df0118dd1b0710ea41852ef4641313346cfffc0f3","2483","documentation","present","preference;action;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/cue-dialog-responsive-dismissal.md","fd8555db75f669741b75d6f74c035c7bf5b13cf7387fef3c0c95bd4021698d54","3789","documentation","present","theme;panel;preference;action;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/CUE-STARTUP-ACCEPTANCE.md","f46fb368e767def05135111d165af8595abf043f0a158413a367969c98787d1b","2941","documentation","present","shell;firmware;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/CURRENT-ACCEPTANCE.md","e95cab3671c7a9d359c2d19cedc16fea9c03e3b7feb2a63f3a6e433b57864cbd","20279","documentation","present","palette;panel;preference;action;event;tray;status;discovery;firmware;updater;seven-segment;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/DEPLOYMENT-AND-MERGE-CHECKPOINT.md","7c659699d42f8c99729b4079d0c4df69c685bd1c1c92c47176a2cea7fdd2c6b8","31827","documentation","present","preference;action;event;status;shell;websocket;serial;firmware;updater;ota;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/designer-effect-groups.md","3aa6b1ccd66d69baacbaeaaeb79583522d16260e22e76dfffeece0ea50b47bd3","2498","documentation","present","theme;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/designer-interaction-consistency.md","44408263a403fc246d24e1a6a17b522f7b52b855efd18688abbe8b7069ab80f5","3092","documentation","present","preference;action;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/dropdown-navigation-colors.md","f95cc2e3d9b70f45c4343eb03988655eb7dd89db93d8f2eaa44a7ecc62506c9c","5473","documentation","present","palette;theme;preference;action;event;status;firmware;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/effect-card-rename-geometry.md","00f09e28a27cf52b881ff646f92414a144eebc39337ad6e677791e7a006cb8d4","2236","documentation","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/effect-card-rename-inline-web.png","a1c83cb9f751457be6b51c0212713d853674a293d1907d0c66d594bd564cd0dd","51393","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/effect-card-rename-menu-web.png","0321b42b32bb722786fcf658849f945c8071d3398620bc6cc64942ae216dbe5b","51929","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/effect-card-rename.md","bd705f1d99f35479b9bc30cac42adfd2f3d7a75b266f0004da09674d8e4d2b46","3356","documentation","present","phosphor;panel;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/EFFECT-CONTROLS-INSPECTOR.md","b93e098086071b6f5f43d15bbc332f4da612029d3e7dcca5fce09d5ee4ca6122","7403","documentation","present","panel;preference;action;firmware;updater;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/effect-sequence-context-menu.md","a07813a087895ce99386c939768e09b2e223013e45bb27a3eac4055c9488cad6","2837","documentation","present","theme;action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/effects-designer-gestures.md","869554511b024092229f36575d98a5db94a3d016fb5aeaffa72ff0f096ea3ca5","8955","documentation","present","action;status;shell;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/effects-library-card-header.md","bf9758e77987d39362326a4288bf88efd8683d2411b5e900e83d4a3c47b5d176","2676","documentation","present","phosphor;theme;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/effects-library-hover-spacing.md","0afc1db6b313057c2d81c07386233b14401df9203f6713867f8f09ddf347d4b4","5308","documentation","present","theme;panel;action;event;firmware;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/ELAPSED-TIME-SEGMENT-EDITOR.md","ce52a4be3acdcec2da930f19de30ee067174509de9f70f7cc308919045e4be6f","4642","documentation","present","preference;action;event;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/ERFAN-AUTHORING-READINESS.md","f6cfdbc15dc68443cc18d2620ba956683dfb5d49b9ba746b27f3a0377e794b7f","12342","documentation","present","action;protocol;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/EXTERNAL-MPV-DELIVERY.md","e7d614c00066883438ec77f8132f74e551979f9890125ab674659000d592be53","4956","documentation","present","preference;action;firmware;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/group-selectors.md","0ee1012dd37bf935fe11ec2474ff34501a7d90bc32b0a76f82f05f4908624313","4107","documentation","present","theme;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/handoff-audit-20261008.md","994e39ceae91e80e97126647e492fc66e18dbd11f1cccda11a981cbdf7440498","5629","documentation","present","status;shell","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/hardware-caption-alignment.md","74a694c0c97c81cd11f99142fe1af064948c320b3ddb56d473ec5f740d80bfcd","2336","documentation","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/hardware-clock-starvation.md","9a037e4bb4743af254248648902cb3ea6b89b9d15da01f3cc76f730a32af0293","5266","documentation","present","event;status;serial;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/hardware-hidden-disclosure.md","65e8054395e764f1a5693377d93fdae228bf761e8fadd565e935ffc1093c282b","3855","documentation","present","theme;panel;action;status;shell;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/hardware-monitor-navigation.md","2750e9df83f7b22f892b928062387192c3356fcbde75367fe484e15c8a5b1666","4145","documentation","present","panel;action;event;status;shell;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/hardware-preparation-recovery.md","a7738a56e294b0480ed9e72de890fe24e98685992ee4b2050d1fc3e9400d4b6e","5729","documentation","present","action;status;firmware;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/hardware-secondary-click.md","a529792a1d1b0a59469aad2a0718fbb3a149e9c92bd37803f1e998199a1ce2aa","2312","documentation","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/hardware-status-interaction.md","91d5ae19ce057b7b1944908c7e94925425328cdb8c45dab3eb649d2b64be8343","7694","documentation","present","phosphor;theme;action;status;firmware;updater;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/header-selector-bounds.md","75d01a2c13b33f9883294ab2b32550f1147f34fc6038536c74d5dd0869819c92","1623","documentation","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/ICON-PRESETS-CHECKPOINT.md","d880682cc609af79908a9370c93f5c59ad3e3b2ba964712de0cbe2417aec6273","3228","documentation","present","preference;action;tray;status;updater;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/idle-video-repaint.md","3558e2c9d11ccf1b7fd47aae1af1cc3ca18cdc7cfa95cc4f790ad65316188377","3186","documentation","present","panel;action;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/integrated-effect-capture.md","cf3cbb55ccba347d3d92cd843b1c2edabb782913e3f4e6b23b510e45cc61515d","5304","documentation","present","action;event;discovery;firmware;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/issue80-current-audit.md","51a13aefa8736ddfebc2a072ac0ad22c75b67f359966dcd3abdffce1ce62f6b2","4710","documentation","present","panel;action;event;status;serial;firmware;updater;ota","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/issue80-native-delivery.md","6dc7dfbbcf8d7ae7eff7f19591e4f6099d434ea6a44bfa7e8806080e2d65d357","5692","documentation","present","action;status;shell;firmware;updater;seven-segment;buzzer","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/keyframe-context-focus.md","7052182df0310de6863c42b1d4c9c50ade0eeba9cc3272c08fa2d55e3c145381","4092","documentation","present","panel;action;status","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/LIVE-BRANDING-SURFACES.md","be70dc5302099e5b236571cc561fc63a08a03930358488e182596d65455e56ce","4668","documentation","present","preference;action;tray;status;shell;websocket;protocol;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/LOCAL-WORKSPACE-HYGIENE.md","c024125307f6e466c924e1b8874f869a575b085b2a05bb4493bfd1d1e9f38975","12617","documentation","present","preference;discovery;shell;firmware;updater;ota;eeprom;isp","stale-review","","Source changed since manual review of acfcfccde3647841e3c55430fcc36677501659e8ff8fb1761c25391a0c6bad1d. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/MOBILE-BUTTON-CENTERING.md","f3e298ec68e9d80adba1754ef77213b19435459e18eef30ac36a9422eb2ad0d2","5106","documentation","present","action;status;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/model-native-service-policy.md","19d2f2f20666dfa706e1d4ef7838929b4c35dd7a785cae6ab9f972961b34ce3c","1874","documentation","present","event;discovery","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/native-icons-and-timeline-navigation.md","e32251bdb2027a2bf0f4018bf0a46acf1d96fe1ddcbd4232106115e2dfc05998","3860","documentation","present","panel;preference;action;event;tray;status;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/native-media-keys.md","54490ea60a6a67e668e1c8a9ecd8ca9468d5394bc5b0131c6d3030d50202b673","5269","documentation","present","preference;action;event;shell;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/nle-transport.md","5f4ad53a6b0ee8cfd6a651fd8d3a9f28d560d475b82cd027bbc32ef400cd8849","2760","documentation","present","palette;theme;action;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/NLE-VOLUME-AND-RESPONSIVE-TRANSPORT.md","ce97e66190305ac38855f95645ee51b01e5afcd200d385960b573fe6c0088809","3776","documentation","present","panel;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/numeric-adjustment-steps-web.png","dbd5f103cab76b821c8375e8285bab036abf269bc4f65bdad30829a31a009f6e","44082","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/numeric-input-context-actions.md","102046cfa0e5ce1be0b6e4104af1c02d5cb649eb9124e6b23bbbc1c59064bbe8","5383","documentation","present","preference;action;event;status;serial;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/os-media-session.md","3136a49b504dcbf9332e80b2f6a78a7aafbbd6423c6aa1a3d1049c1da30469de","4957","documentation","present","preference;action;event;status;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/paired-peer-deployment.md","0836e55fdeeb55f839300799a66ebdefc04141b98fff43d160d49574c2e66d27","5841","documentation","present","action;status;shell;serial;firmware;updater;buzzer","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/PALETTE-SAFE-ELEGANCE.md","ed0a441127e20a90ba0d9f4b6aac34ed701a745b2cc907a1515726c2140d81f2","6024","documentation","present","phosphor;palette;theme;panel;preference;action;status;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/panel-mirror-fidelity.md","b1ba4f2fa86e8653452b945367ff4430e127598005ff51d8a8c6310d6797d75f","2991","documentation","present","panel;event;status;websocket;serial;updater;seven-segment;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/playback-board-clock.png","d2ca3d096e1701ea9488f1768c4c6f305bb4e6fc93446962c5778f25c73a1b74","14920","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/playback-board-results.md","fc2aa0a7fa6465d1ec4e3f67c7876bd0a8129f5d93c85139fd8210ca8f2af30e","4831","documentation","present","panel;action;event;shell;serial;firmware;updater;eeprom","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/pr77-checkpoint.md","8d8aa8008cdea5946aa87e86500be357367a4f1eaf85db37a600d98d2d98ab8d","2260","documentation","present","palette;theme;preference;shell","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/preferences-save-closes.md","cec55a7e17828efba767e3338430cb8733488960c7d42ee8977c4fdbfef20602","1415","documentation","present","preference;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/prepared-timeline-results.md","2070b3c198079376a5b3609d37b7e15d147e3f534c34e5c82580bf4fc8c4f93c","3976","documentation","present","panel;action;event;shell;firmware;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/program-monitor-viewport.md","5f7d89e9420a1c796f4b25f48e279a64ed28f163d8c0b60753c381b36a120c42","1314","documentation","present","panel;action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/programming-latch-state.md","dd20c0b8857119650fa55a75bd1fa89e984bd1f554539927294de0803f0be0cb","3210","documentation","present","action;event;tray;status;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/pwm-card-controls.md","5c4318ecb1ad4c895d82ebf4507a3c2a30a163a735c0db40bfcabbac91b55842","2607","documentation","present","preference;action;firmware;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/pwm-editor-intent.md","aeede3c7f9d75bc2b9921999d7608993a4b8c43246f3f89e0a96b2356074617e","3235","documentation","present","action;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/pwm-observed-power.md","d89c1f04284e351f9d258fb6101bf9dffc090b1a7451b1ddbeaa24d2373e67c9","2167","documentation","present","preference;action;status;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/recording-colors.md","781df25faf4dd02ce785be0bd5c20e8d1b4b4c1f9cad257fdc1ad62745f9a1c2","2746","documentation","present","palette;theme;action;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/relay-card-semantics-and-centering.md","9a08668c4fecc6934bfb243e7c90527835aa8108eaed68c87a757d7f2cb20b22","2409","documentation","present","theme;preference;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/remote-folder-web-dark.jpg","add09863a88c566a86afbdc92f498b6a7553afcdbac347d1d1c974a1023f3d62","59895","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/remote-folder-web-light.jpg","36992fa8bb64a5555e5a386720cce3e38542c64654b5c5d950df42c182b387f7","63330","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/remote-folders.md","05074e5aafed1d40b1881d6410a75e2a9a5aa63723fa8b324f1ca238aaeb0bcf","4574","documentation","present","palette;theme;preference;action;event;discovery;websocket;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/renamed-seat-titles.md","f080266e9177ab44a415434b97f103c6b4a34e3e4d38947e424c5128f06c33fe","3226","documentation","present","preference;action;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/rf-assignment-usability.md","20224b68314dc6b4b4549f7ac7832f621ab2c610ff54efad1dfedf45cb64afb5","2612","documentation","present","action;protocol;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/rf-editor-first.md","8252f2e4474ea540234f1084b20233a661a5f96e8f1ccef643ff31aeef7f47f8","2525","documentation","present","action;event;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/rf-reception-and-learning.md","0ffe890591936b90088f3fa33b60447e0ac0ec6a9cbbf9776367d21a4edfdc24","4319","documentation","present","preference;action;protocol;firmware;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/rf-saved-rules-responsive-wip.md","3320fd6a82e4ab1341795b8bce997e45f0e8b6f1c0406ea0505e4b8623e78db8","5847","documentation","present","preference;action;event;websocket;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/screenshots/effect-group-empty-space-menu.jpg","d92afb4f885c766a700f0ec7846d2e726ac7421da17fb5f2342d9f2131b03020","39098","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/screenshots/effect-group-selector.jpg","b3e29f855277ddff1dd9d391a6e0f2da7d7815fa82ed990501baeb87797a1524","37039","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/screenshots/integrated-capture-active.jpg","f1ecac0efc3394085cb6b949b113072fe2674e7880c43ddfb94e69f6f7c39508","42373","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/screenshots/integrated-capture-after.jpg","a2d11e77b5990b65620d426465cd1904532297c76aa61c585ac560e4c368b2dc","33390","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/screenshots/integrated-capture-before.jpg","022b3d1064679c20c570be6f3fe2dd3bfc01c83f738155aece784af8fbf4d2e9","40069","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/screenshots/integrated-capture-existing.jpg","a7844ac0d8b60a7e9f98e1f0784f2766c2149aacc28f7b05fddb220d60a581ea","40994","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/screenshots/recording-color-after-blue.png","c6cdad6105f530a899548f17ebabbc85e001eb13c3eebcb61857abecf60f0aa9","36333","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/screenshots/recording-color-after-dropdown.png","68bc40d8e2d046a7550cd19401f79477d6353f13ac6164457c150f8a63916ad0","36624","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/screenshots/recording-color-before.png","e3488d7dc4e9807d1da168da576e81bbc8845b9ddc5cdf3aa820674bc65a1a8c","35554","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/seat-cue-timing.md","a24a21c05b742492258cde16c0b9df233a50c24831eeba83faa7eabd5344e27d","5119","documentation","present","status;protocol;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/seek-hover-card.md","5691d942671b6b3996c1af1f608256ec5b11655e36ee091a9ca84c2b8f038e4f","3701","documentation","present","preference;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/SEEKBAR-CHECKPOINT.md","aced6337872288b49dfdc43e9f7193c77bc367ba75dd424c3e7d80d09b8d6d6a","2621","documentation","present","preference;action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/SEMANTIC-TRANSPORT-AND-DEPLOYMENT.md","bb1d2a3a76848b91194f34cad9727ab69a53f0318d103ea489731476404e7a74","2485","documentation","present","palette;theme;action;shell","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/SFX-AUDIO-DELIVERY.md","bd5ef5c3c62cdf6d0a0f065e970ca77cac34c14f1cd9ff00a92c610c7c454a8d","4546","documentation","present","action;discovery;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/shared-messaging.md","e45aeebc707c294a599b90123049f8fb8e19b62700c586de990e557866e36435","2965","documentation","present","theme;status;discovery;websocket","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/shared-picker-refinement.md","ea4052a8345ed6d7c0b4910b5539551a56e94d8d6e3cdc1c6852a04d8af27ba1","1579","documentation","present","phosphor;palette;theme","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/shared-pwm-policy.md","a32119d5f3aecc5282fbea4a9328113f03455d1a3720d24ba745bfc20e4ca117","3393","documentation","present","preference;action;event;firmware;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/shared-toast-web-dark.jpg","f8bc6a215f23c0a1fec67eed29feb8832036b93b2c2cbaf01c61d7ca21f8c869","52012","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/shared-toast-web-light.jpg","f6b5564b2e468abb45d9746677087911640138d68b46ce8cac71e6f07fb8cc70","54761","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/square-modal-close.md","d20c06dfa2aa19e77c390f1a8fdc6a8b024c64229b8c1b615b6ab8d4a253178c","2216","documentation","present","palette;preference;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/station-timeline-crash.md","fd9ef071eb25ac070f6cb89970a90bfacbdf6c3a7186901c4be905eaa84c7b0c","7911","documentation","present","action;event;status;serial;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/status-bar-widgets.md","bc973a91a1a48a95d58b3247632e568896b4d1dab0060d4e455c7a62f2e5623d","10782","documentation","present","phosphor;theme;preference;action;event;status;firmware;updater;ota;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/step-repeat-ghosts.md","a95c66916f70b393f8c24e4703d101904c6a450d9fc89625bed37bc39e20c764","2674","documentation","present","action;event;firmware","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/subtitle-alignment-web.png","fc224f216393b975fdd893a1ca2510889e4ae5ca474e9a9a4cb7ae12dfe6b9c3","49833","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/subtitle-alignment.md","ac44c69f83384608fbf54c66983cd903c44da7011691568d86919123d4d6d79d","4606","documentation","present","preference;event;status;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/subtitle-hardware-layer-isolation.md","fc6de31ca34f71259154252510896be0bfddeb85318e70b67239ff5a0c142867","2705","documentation","present","theme;panel;action","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/system-theme.md","37197456a27824e3f2f9536f55c7165425393eaa54b51aed45f2d5adf7a07693","3827","documentation","present","palette;theme;preference;action;event;status;websocket","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/timeline-compact-clock.jpg","0c32cf6e5b0f909fd688021ae4eb265df9b13a27ea341991ffc6a991ae250896","1769","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/timeline-compact-clock.md","ee6da1556cf0b7b04f919beb39ad277807daba931fc38ed9a1ad527b755649d9","1047","documentation","present","updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/timeline-frozen-ruler.md","a5cd6410a51c80e8c134539c5a1ddf050af6883d3bfb53ffd04bd38aa048699e","3533","documentation","present","preference;event;status;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/timeline-toolbar-drag-feedback.md","8c642ff333e6cc081480b8c240f5a15adefc2d21730e14da8cfa8a40c553e881","3371","documentation","present","palette;theme;action;event;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/TIMELINE-TOOLBAR-INTERACTIONS.md","7d346c6515df59fe8f99ece6647f3179d0a26a674a8bd1cf4fa7fb6fca6c0246","5344","documentation","present","panel;preference;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/timeline-wheel-actions.md","ff11e2d874776e22f10d289c14c0facd68a7f0b6e9701714e96fe561aaca1f12","5290","documentation","present","preference;action;event;status;websocket;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/timeline-wheel-actions/live-sync.png","e8dcbb24cd5505d97da14dd3bc8d7b1201d0835cf84e3dfe2ffe0442d3726ad0","57359","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/timeline-wheel-actions/preferences.png","c95c0b59e1da59468141c1a1710bbb007bcd59139d82723e0f49a50539cb7809","53536","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/typed-controller-errors.md","e7221c74cc056f219f95af8e978ae3dc35c41f33269c723e1510a020e4d1b6a7","2886","documentation","present","event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/verify-appended-recording.mjs","408c7ec5a6079cbd3d5cb010171d5c3228bc147be680732aefdc52544c9cb8d9","7149","documentation","present","status;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/verify-live-cue.mjs","90c9544ffc07e710fc2a41020fcdebdc9e0bea8b7e7522e1e9cd88e0d8cdaa50","8208","documentation","present","action;status;serial;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/verify-live-cue.test.mjs","f58342624aa46dc24862b2d77ec02a3c71885addf301f1cd0807e1761953f3a5","5649","tests","present","status;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/verify-pealayer-prepared-cue.mjs","f6d1f6f4c8c5a44a4776a85e82c6b1486d9038e87fbb83bab4323889085b9c87","5483","documentation","present","status;discovery;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/verify-playback-board.mjs","68629c44a41bb2a4c44ee5810a80fdbc4a75a2fc11b59c6d811a38d476c64c88","6851","documentation","present","panel;action;event;status;websocket;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/verify-prepared-timeline.mjs","8a5b5463692a510db3f8393b0ddae08459c557ef0914880991c80113da44ef8d","4927","documentation","present","action;status;serial","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/video-ghosting.md","1453ccb7298bc7569f40bf5888587218bfb4b9abc53e30f5e5d24d1687478efb","4126","documentation","present","event;protocol;firmware;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/virtual-development.md","7c93c72ef93c50f6ebba2bd309404aff6589cca04d4dd927826a5712464f6498","3594","documentation","present","panel;status;discovery;shell;serial;firmware;updater;tm1637;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/web-file-locations.md","649dd0e90f60a6764acdd622fe57c994170b3d70b0e8397ad5f62cb0e6d4c8a8","4654","documentation","present","preference;discovery;shell;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/verification/windows-tray-board-actions.md","08c386551365512012f60bd2ec10bba4d1ceb0d050d8a8ce6204c777dab5d866","4586","documentation","present","theme;preference;action;event;tray;status;shell;firmware;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/WEB-APPLICATION-PARITY.md","09c994223c6ca02b0c8c71be554af966ac55997c0218f33cce99b6cc88f99353","22797","documentation","present","palette;theme;panel;preference;action;event;tray;status;discovery;shell;websocket;protocol;updater;seven-segment;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/WEB-ASSETS-AND-LOADING.md","5f2b5979e853df7ed102a44de163037883daeabc89a43c1c127102a0dce570f1","4274","documentation","present","theme;preference;status;shell;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/WEB-RESPONSIVE-LAYOUT.md","e589ec4ef7204c409371c577cd2eda576bf2247757786b6a5308df00c940ff6a","5608","documentation","present","palette;theme;panel;preference;action;websocket;updater","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/WINDOWS-SHELL-RECOVERY.md","57fbd904e18d8f0036dd67e2c866d357ab282075689a1cbf6b38a64270875492","5212","documentation","present","phosphor;panel;preference;action;event;status;shell;protocol;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","docs/WINDOWS-TASKBAR-PREVIEW.md","e4426f937576281ac63c0ce0c3583af3c5f69951af78fc9c3887fa20e6ceb8a9","8876","documentation","present","phosphor;theme;preference;action;status;shell;updater;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","examples/square-close-preview.rs","198b9cd2f36ff48003afdbf1d3f8bd647ba4df8761aef9f8c30b5fdfcf1de7a3","2414","ui-design","present","palette;theme;panel;preference;action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","interfaces/controller-wire/consumer.mjs","51ca4aaa9cb8f1ba74cabc001be34c8ec82a90d14a27e6b4ed793d72c7660484","3340","application-core","present","status;shell;protocol","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","interfaces/controller-wire/ProtocolContract.json","b72621de05550b724eeb312276b9cff8a86003e4acec3fcee860418f60944eb9","17675","design-assets","present","panel;action;event;status;shell;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","interfaces/controller-wire/published.json","eb66e7453bdf246bf03a6ea6bd90ab340b9f7716941119d33a7f828225e6010c","17121","design-assets","present","panel;action;event;status;shell;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","interfaces/controller-wire/registry.mjs","4c9b408145ce8db277fd312262b77106129c931398f50b66ff18cea14f9d7694","14528","application-core","present","event;status;shell;protocol","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","interfaces/controller-wire/source-lock.json","0ca4b1890c75ddf7ecc33d269b0b53cb4a65bdb7cb4251b95b03ea19489de1d2","568","design-assets","present","protocol","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","LICENSE","f52fdc03b3a61af55f5b7a8480a1d92fe46f0a59f2f2193d0155a6b65bce0c2e","1066","application-core","present","action;event","legacy-unverified","desktop/licenses/Pealayer-MIT.txt","Unbound historical decision (adapted); requires source-hash evidence. Preserved upstream license attribution" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","output/pdf/pealayer-pccontroller-effects-guide.pdf","8e5cfe6a9b476580fd7946d5fb06d0a07df2e9768d5547b23981159db2019366","491978","documentation","present","","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","README.md","4e78a6c486bfc7d78adc6d34552bddfd67c89997edb8d2bae0b46e70c705dcb6","46116","documentation","present","palette;theme;panel;preference;action;event;status;discovery;shell;websocket;serial;protocol;firmware;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/backup-peer-acceptance.ps1","8293c12a759031662ba8fe9b66994a163daeb268f865bd8ce32bab665877e425","2232","tooling-ci","present","preference;action;status;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/build-metadata.rs","fe18f35543ea96f30c713bc170286aeb73883ff7af62c866d2fa3cc56e9aec14","3799","tooling-ci","present","action;status","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/capture-visible-window-windows.ps1","94bc5aed91407818905412d50dde72ea669f3c799ef56a043dd0a81befdce47f","4028","tooling-ci","present","preference;action;ssdp;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/check-build-policy.mjs","7f24cfe914b4b501834cccbd70c6e0c61eb38b9a4a6f6fe880480813abeebf2c","953","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/check-crate-boundary.mjs","da9b469ac596e6eb1999e4d499742a51ebf289335285549569116c1124963e38","1257","tooling-ci","present","","reviewed-open","docs/REUSE-PREFLIGHT.md","Read entire source. Guard prevents duplicate library/binary contracts and resource linkage. Pakar currently has one binary without a library so the exact pealayer::startup assertion is not applicable today; generic module duplication guard remains pending for a library/mobile split." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/configure-windows-host.ps1","8c62e976f9fbcf5a7e874f8190ac9bcfaf654e4f88e6c4c08a7cd468fa3401a1","2202","tooling-ci","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/download-fixture-server.mjs","8350a1c7354ed092411d4cc3057f8d01ee408449adae1366f83250503bf8d091","1833","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/libmpv-windows.ps1","ab6e48f3e0a55a2d86ad1dbb19c01a23c751891cb5a7ed61875a21b1e52645e5","14274","tooling-ci","present","action;ota;isp","reviewed-open","tools/windows-build-host.ps1","Read all 331 lines at d3f11b1. Actual cache/file-identity plus new content-equality helper imported and used by staging. New cache-inside-checkout prohibition needs owned migration of the sole warm cache; unsafe delete-first copy replaced by verified pending-copy/rename. mpv-only dependency excluded; generic profile/config ownership remains pending." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/new-icon-pack.ps1","6a2dbf067e1236b91174f380cf7663b407cd321419600fb25efa77509b0ec6fa","5773","tooling-ci","present","preference;action;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/package-probe-windows.ps1","f4516884990ad76c020fbc6534d902c4949abae0b48da8ea40c008afa44dfd4f","927","tooling-ci","present","shell;isp","imported","tools/package-probe-windows.ps1","Read complete source. Actual process-handle helper imported unchanged apart from newline encoding; bounded exit-code and stdout probes reused by optional staging probe. Timeout child termination is not present in the donor and remains a separate decision." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/package-windows.ps1","5651709cfb58c2f1e0d7052b3ca604df154563ce552498a066c6e67b8f9baedf","15729","tooling-ci","present","preference;action;status;ota","stale-review","","Source changed since manual review of 3e6f8a82456329558c7ec24e596f353c75d39680d8807d6eb0261bd419e5025a. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/patch-windows-icon.ps1","2113741c449d8448d52e478b03993ccd3f96a2ebbd0a8c08d15c1333a273d89b","4712","tooling-ci","present","preference;action;status;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/piper-narrate.py","4d486543a60bed28e9427ba349e9b1c4db4dcfb79bd81488a7c4abc221d03881","1984","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/prepare-host-candidate.ps1","b40ccb3aa61810220f4cd904ab0a6236d819cdfc262925a2a01e33f2c9c4e102","4095","tooling-ci","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/run-ci-rust-tests.sh","aaf963ab73a4498a6feaab164f2304de95b953edd3988bc55094a9f147ae8ac7","793","tooling-ci","present","shell","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/run-windows.ps1","013e5c67e227ed851f8a3d26b27654e38c8816edca2965381bbb1b48d10a750d","2998","tooling-ci","present","preference;action;ota","reviewed-open","tools/build-desktop.ps1","Read entire source. Actual shared resolver dependency is adapted into native wrapper; canonical cache and locked builds retained. mpv runtime copy excluded. Automatic toolchain executable fallback selection and host-triple provenance still pending." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/sim_bridge.sh","a8f3171da6de3b84a6e8d5e6b7ea160351c15b4bc77a9e000b23c29a2b9bc3f1","3784","tooling-ci","present","status;serial","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/storage-hygiene.ps1","0d8fdeb3e15fb52b917784d4cb3875c68bc12c6c6ed78cd16f2ff8ee3561d89c","5652","tooling-ci","present","preference;action;ota","stale-review","","Source changed since manual review of 52f93bf96867b286d7d1c22f36c08603558e10dc6e9c14433e0a9ea9bb5f4f42. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/test-storage-hygiene.ps1","cbf747472685bc0ddb921444ec3399f1734aa6f105ae15fe68fff760c1e023fe","5736","tooling-ci","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/update-screenshots-linux.sh","7bd3372fc15e0486425ba4f80b1d299b4c5946116ed0e5fbdddf9533c6386d0e","3126","tooling-ci","present","theme;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/update-screenshots-windows.ps1","48507f6e9395c8c312c5557db729d05ed8d6a83e980d57a9b01e77ea525db287","21177","tooling-ci","present","theme;preference;action;event;ssdp;shell;updater;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/verify-copied-link-api.mjs","6ede1926e5353d3fd0e304706c5eaa1efe968efd9da586255b6495c7c1d53816","4673","tooling-ci","present","preference;status","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/verify-download-api.mjs","a4b4edd670d1a37818c180850f653dad14b297d12acce7bfc13622ea1b001368","3548","tooling-ci","present","action;status","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/verify-messaging.mjs","708fdeedda97d1a314dcadcad6a8c60fe65773bb25bc47d8af9d710ce8b52b42","3699","tooling-ci","present","event;status;websocket","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/verify-remote-folders.mjs","320cec5927ee203f58f3efa617778bdadc372ec524a736c79a3f30ef01ebec1d","10445","tooling-ci","present","status","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","scripts/verify-windows-quick-action-icons.ps1","f068ca5b27effc256085c7a095a7538fab532884b6a908e0f585b868f32eefd2","5414","tooling-ci","present","preference;action;shell;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/app.rs","41e50c2188ef281b5afcce8a6c5ff46b5bb478ab4ecb65d0d62a4aee0bcadbfe","553651","application-core","present","phosphor;palette;theme;panel;preference;action;event;tray;status;discovery;shell;websocket;serial;ota;buzzer;melod;isp","stale-review","","Source changed since manual review of d32e15fa4dc42581f8b44b5690950b086fe3ed08cb030e2aaf93b2587edf116e. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/application_shortcuts.rs","1f173bef8acc2904eac5b0a91407aa4f7629ce65c88ea3a8ac78f8c13321d203","15110","application-core","present","preference;action;event;serial","legacy-unverified","desktop/src/main.rs","Unbound historical decision (reviewed); requires source-hash evidence. Typed non-repeating action dispatch and text-edit focus policy selected for controller shortcuts" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/audio_effects.rs","71e90666ead85dbdefcbbd048d647ba36a943e643f8f17856f343fbe7a26ede0","7200","application-core","present","action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/authoring.rs","3bb56003f6d515c9e067ec71af15aace93945aea6c3669307be5a30ab1c6bb59","5986","application-core","present","status;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/branding.rs","ee6ef94e685a86e72258e4609692a9fefa516d5935d75d15a5abe0ee42ada3c1","17712","application-core","present","preference;tray;shell;serial","stale-review","","Source changed since manual review of be44ca91dfb08ce78fb377ccfcc4676676c05e6b36ed319c497365788ab264fe. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/cli.rs","412b553fcdcd4436075af6bc93c956a4b7d9ac93a552a3458f2afabb8aa1448f","28396","application-core","present","preference;action;status;shell;isp","reviewed-open","desktop/src/cli_output.rs + desktop/src/main.rs","Read all685 lines through EOF. Actual help/version branches and assertions adapted with early exit before config or GUI; shared TUI help and saved hostname defaults. Generic parser IPC embedded identity updater/headless and shortcut parity remains pending; media business excluded explicitly." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/config.rs","a318f05844f617ba908aa08c79c35ff91b5d73fdd833c6f5d06c47ea30b17f8e","121841","application-core","present","phosphor;palette;theme;panel;preference;action;event;status;discovery;websocket;serial;isp","legacy-unverified","desktop/src/config.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported numeric step types and adapted themes isolated persistence and workspace profile state" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/diagnostics.rs","92b065a4d8ff01ae3b4a81fa11fb6e5b671f85bb1f667be6af389e692fef9f71","6485","application-core","present","preference;action;event;shell","reviewed-open","desktop/src/cli_console.rs + desktop/src/main.rs","Read complete152-line6485-byte donor through EOF at5a6961ce. Import actual fallible stdout/stderr macro writer and broken-pipe test; extend for partial TUI writes. Bounded panic reports and shell-action diagnostics remain useful pending imports, not exclusions." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/downloads.rs","7db32d2df4f9e5a15a56d523ca131272768c8ce3874a37313f65b1807f0a3fb7","5770","application-core","present","phosphor;panel;action;status;serial;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/duration.rs","7b7f4e604f6160cdd0ba9cc0a34ed2d55d683dd918587f637af570ed0e57fc7c","14545","application-core","present","preference;action;protocol;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/authority.rs","8e27bbe4f9d82365d0d4d8946ae51b6c762f821d90bfc4803d8a1246787ba3cc","16350","application-core","present","panel;action;event;status;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/controller.rs","1a82472d637469f1659e4487992cfa0ac72cb528d9a9a1e85791fadfa4409410","207829","application-core","present","panel;action;event;status;discovery;websocket;serial;protocol;firmware;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/curve_record.rs","239343d81352b0c88563cf4fab343d91de5f3f9abe8595a594c13ef7f03c7bda","3949","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/curve.rs","22950794da3f9bddf981f51852224de68bdeafb367eead1fc8dd615e6d517657","6120","application-core","present","serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/embedded_host.rs","94d8639230309ea9434867e3a1721dcfad086a50b0e39af0e00edbb8c34e6e7e","11163","application-core","present","isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/engine.rs","7a4534f8fc0a031391db6c15a3d20cddc74b29ae2b6a392597d290b56fbce935","159080","application-core","present","preference;action;event;status;discovery;websocket;serial;protocol;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/history.rs","177e218325efe1ef3e915886d16383872e7283333cbffb63395a5216d1512395","2233","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/input_capture.rs","7c618423882eea52a60cf9af4afb93c2cf9092d73b0359a216c5c7f61a0a79ca","1468","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/media_sync.rs","79db1284423bb3475d37527d21cba5da6c27e3c38fcc8d43868a5623b53cc581","65340","application-core","present","action;event;status;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/media_timeline.rs","54c4ea4642451174b5e07be4e6d0c2fa2214965f625d8c8769680a95e44ff5f1","37336","application-core","present","action;event;status;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/mod.rs","a1bbbeb6b6a46a61fb4bc9c7f0290c6ab5756865b6b64ef943827c82be15b83d","272","application-core","present","protocol","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/models.rs","8299b098fad6f060c7db232f67eb05b4c55ee6a50bcc0ea94c73ed10205395cc","30054","application-core","present","preference;action;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/patterns.rs","ad9447e8561e408055d42ef8c4a503331f4348bd358e166eba98c0c544b0198c","1374","application-core","present","action","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/programming.rs","5a59e00a6d8c4a6fc92974a6c01ff70e84e2d199b0cd6c44d68cc86ca5825da4","6665","application-core","present","serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/protocol_opcodes.rs","d81b3e3f6208b10572ed7af3db41d2df53e8865a86401f3044554ecc6a95f803","5678","communications","present","panel;action;event;status;shell;protocol;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=communications. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/four_d/protocol.rs","943ebf8cdf050d346ff36764886550ea35a4bd6e6dab25d127329f15d8230731","9867","communications","present","serial;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=communications. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/hardware_shortcuts.rs","7c2acca638caa744389c345e6b3630b12b72844df3c77dfbc4108d2118f94bf1","10156","application-core","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/lib.rs","a14107fa5bded37ee42038f90781e6934986a436f539f64c767e781b1b325868","531","application-core","present","preference","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/main.rs","452eb004c52bdcff6936de5602cfdddf5c925d58db9e1e48220fc9a21075b696","96","application-core","present","","adapted","desktop/src/main.rs + desktop/src/cli_console.rs","Read completely through EOF at5a6961ce. Import actual Windows GUI subsystem entrypoint; retain native single-binary ownership and explicitly attached existing CLI/TUI terminal. Actual PE/resource gate and focused native tests; destination delivery is separate." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/media_info.rs","ff3b9c467654d7d89282da2cbdd6d1014d104e4fe67c42861f98666c6a6b76d0","10353","application-core","present","serial;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/media.rs","9f4068170e77f2ded48eb3f51df16d6aba70a4615f0378277768b8120f4e5feb","9851","application-core","present","status;protocol","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/messaging.rs","44ba995614f2acc3230f6adc13c00500e6844db81aa36d5e60e7eeb9e90d6f9f","7517","application-core","present","serial","legacy-unverified","desktop/src/messaging.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported bounded MessageHub stable IDs expiry dismissal and validation" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/mpv/audio_output.rs","3527620f6e46b6140b8de67f413177bd315731bb461e725f015d06e536030f41","3018","application-core","present","discovery;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/mpv/external.rs","16c349b8ec9de8515299ea8eb4d5de3a56268347a8b0f05a03cb88e18d3d2648","48165","application-core","present","preference;event;status;shell;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/mpv/frame_cache.rs","9fc70da51c1b281cef5b61f23d512dc2c83fb470d87798df59acad807b61b7f1","3336","application-core","present","ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/mpv/mod.rs","12dbb0f6bed28f79935b37a2af26f8e76c25b2c9b3271561c22fa6088f8d96c7","135","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/mpv/player.rs","900fed4bf8fb951b80f847163be23b304d846bd512f4f087b21bf16797bc1170","3750","application-core","present","serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/mpv/proxy.rs","50db256e7675f1620ea8589efd20c42152f7be1f6b9e3a72fbe9e8bd5195342b","3763","application-core","present","protocol","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/mpv/render.rs","d1f7033bad974a7fb8271bf3aceb71e1e0c9ca71d0d045d22427ed10f510c287","6763","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/mpv/seek.rs","5a6dac8f50dc84bbaf21aba62e588342fc614aebfa27e80be17df21088d73c29","7101","application-core","present","event;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/mpv/sfx.rs","99daa5181354be84facd627702ba734bf7d1e8d2691e338e46f05f410a65502b","22064","application-core","present","preference;event;status;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/network.rs","22abaf1ca05c64d7e694b7b1d8216904df23cb84f47a0d23c6e91e78d40b86f2","6694","application-core","present","preference;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/peer.rs","e6cc286bd1325de1ba9b5acc87e8010b12a70a653383d380338e409a0866c365","52065","application-core","present","preference;status;discovery;websocket;serial;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/performance.rs","584265743e6546633bf2ed5e65cb2a46def053d8c5b31b5aa59bbf4a90d3fc9a","2867","application-core","present","status;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/association.rs","21ebfeb0903fd3e97068f632d0f9d740c2053dc631729ffcfcc17ace2bee3cc3","4240","application-core","present","status;shell","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/associations.rs","87db1fb6944e7ab10e32332f135758e4f9a198dc0735a5fb16343287f07cfd2f","6479","application-core","present","shell;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/clipboard_urls.rs","20da33c913648064529541be4f42e7e86b0fd6be1b076a78a6c5516328c9100b","4547","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/interop.rs","174e750a6f629bbf3d3eabf499ab9ee6625433710048b66e7bd21ba0abd3ab41","188290","application-core","present","palette;theme;panel;preference;action;event;status;discovery;shell;websocket;serial;protocol;ota;buzzer;melod;isp","legacy-unverified","desktop/src/platform/instance.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported native pipe request response loop and typed local dispatcher" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/media_controls.rs","6d9b11283cc470faafd045d91a10c36a1d4913ac7f6feb55a6805773575bdff7","29944","application-core","present","action;event;serial;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/mod.rs","6f1f79cf52e665c7fd51f9f780ceac9792dae1d3204ee3b0483699aa5dade483","380","application-core","present","action;tray;shell","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/registry.rs","3b6f3f7e51baf18976c28f202e09ed20b2db1c7c5fe3b5da70e9a9b101f8dc0f","5355","application-core","present","serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/taskbar_preview.rs","8a30562c13bf5d3c66f13c1d3210f30f342b94aeb7f21f3f4d69e8b748a0490a","20008","ui-design","present","panel;action;status;shell;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/tray_board.rs","a3287cc126e6b61e508a6db101dee9ef020b13cbdeeb3266766ddf837798338a","16835","ui-design","present","action;tray;status;firmware;buzzer;melod","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/window_icons.rs","63bbaa244728a2fb4bd53ad5c35f7ff4b95790e70358d47c34ae704ea79d4a4e","9429","ui-design","present","palette;tray","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/windows_media_session.rs","69366849a21c8a2520839da95aa7ad6a6fdd5e740ee082b6bbad5b153c3402e0","14033","application-core","present","action;event;status;updater;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/windows_quick_actions.rs","35f6de708a0e402f6958a4d8feeead5037b42174286050ddc98c494d4173e4cb","2019","application-core","present","phosphor;preference;action;shell","legacy-unverified","desktop/src/platform/windows_quick_actions.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported stable resource ID contract with controller-specific launch commands" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/windows_shell_icons.rs","e1d8793f8f1697f2030bc407f51e48cab4063964c051f2e21d1f60ae3349732a","3821","ui-design","present","phosphor;theme;action;shell","legacy-unverified","desktop/src/platform/windows_shell_icons.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported exact Phosphor rasterizer and seven resolution ICO generator" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/platform/windows.rs","b7e27d61d8031367e34c4cd05c2fdc8720f7dfd9ec19acc49fc64414109cf178","128471","application-core","present","phosphor;palette;theme;panel;preference;action;event;tray;shell;websocket;buzzer;isp","legacy-unverified","desktop/src/platform/instance.rs + windows_jump_list.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported mutex ownership named pipe lifecycle and Jump List task publisher" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/preferences_contract.rs","1a688a178041f8966ac2b4533b303b7caf0db098f952cb1b7ca5eb2354428c00","82690","ui-design","present","phosphor;palette;theme;panel;preference;action;event;status;discovery;shell;websocket;serial;isp","legacy-unverified","desktop/src/preferences.rs","Unbound historical decision (reviewed); requires source-hash evidence. Single ordered preference contract planned for native and Web" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/process_control.rs","46fe50bc7942e3c1540284ad2d4dd31ae96f0390f3acc84174090aa23fc5241f","13883","application-core","present","status;serial;updater;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/remote_location.rs","d4269d2f5c975dc1b6a49c796b1a28eebde6c1fc5eff5fe1a69d387c3666c459","49323","application-core","present","status;discovery;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/binary_udp.rs","e28bf66583055cbab547955584617d3a85d5597ede6288ef830bbc680100e9b6","30566","application-core","present","action;event;status;discovery;websocket;serial;protocol;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/discovery.rs","a707a76b8424353a304ec28e344e467e89823b81c1f4dca321ec3b7060069c6c","20160","communications","present","event;status;discovery;mdns;ssdp;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=communications. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/download_media.rs","68ea8ace5793a45084d88be37e6168b9eb70d4a483d79b73b52b7af6a261be8e","3412","application-core","present","ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/fs_api.rs","85d1e8f3c21f2d09b5ea5380cd6c680fbe3d639b0cf13f3c36d2b573b75348e7","4205","communications","present","serial;isp","screened","","Content-hashed file-by-file screening complete; category=communications. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/fs_locations.rs","e87720c0c3ea7af933a0234b0458b804af13bc49c912714eb488dadd3afc3cb7","10475","application-core","present","shell;serial;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/media_stream.rs","11ee485001d35b573c41d9535c80e03201160c159217f65be1d68f4add6a8386","7923","application-core","present","event;serial;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/mod.rs","056b428dc44237011e4f299b9dc1f5c53161627368dab78b38e596bfb39f41e6","93847","application-core","present","phosphor;theme;preference;action;event;status;discovery;websocket;serial;protocol;updater;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/thumbnails.rs","07e3cd2307f1dc9eb0ca58d2d6358f9485d1ebd9d8acbb33cab50d4ef2be7c20","21943","application-core","present","action;status","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/udp_client.rs","3dcf43190a9448abdb78a0d1de243ccd4eab1dcea5db81ba1a8c2c99c569929b","7759","application-core","present","event","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/udp_codec.rs","f5a2fbe61a20083008012112aad2e2f1ed6bc191f8b27d4ade4df4d0c9984f20","5967","application-core","present","event;discovery;protocol;firmware","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/server/web_assets.rs","61c1dc863eefcd78d07ea0320b372bb6b5c4a4bb0437fb1e1f267a67ad7d0505","29239","application-core","present","panel;event;status;websocket;protocol;updater;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/startup.rs","9baf7b0fdb1a6c7953c951dd3fa915228e27d6e7323774d176d77e36fe472649","51207","application-core","present","palette;theme;panel;preference;action;event;status;shell;serial;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/subtitle.rs","f88a9b9586b78fadecbb23d45f25717f4a1e43d132430fe8af9a8b14b9355a35","10214","application-core","present","event;serial","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/about.rs","c1108051b5cdb102a07f2e1c7763f27da1538965f4ffddc220db3cf2f8757f2d","17197","application-core","present","phosphor;discovery;websocket;serial;protocol;firmware;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/action_customization.rs","d987e725d54a9bc695edacea9fc737ceab26f5ce42763328204f97fa17c67624","5067","application-core","present","action","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/audio.rs","c4adc41d29cb236e2f599c384b24f69f0c01244b8c6fb0548d819bd7433333ef","18433","application-core","present","preference;action;status","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/board_info.rs","ab1c99e674e902e37626963e2dd5cf7d993965334411d5e33dafd1ea2bf79e51","44202","application-core","present","panel;action;status;serial;seven-segment;eeprom;isp","stale-review","","Source changed since manual review of 135e259e7c4b36fede394943b754e9c438a19e9d8f41ea76fd065c57cfa596f1. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/color_picker.rs","fe2bf96c968d83874903f5d06085775f5787cf24467fb0c7be3fcf53077c1aa4","22386","application-core","present","palette;theme;event;serial","stale-review","desktop/src/ui/color_picker.rs","Source changed since manual review of a455b2adfdc80889a2f402c404a0b2364a4a8f968a5cd6b706aa274f015087de. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/control_bar.rs","56d1f904a4ef361d72819616bdf5384b79f6e2aee610bea4b6ef757d57d79608","31337","application-core","present","palette;preference;action;event;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/control_density.rs","690a964825638da4272550f389a948ad62b5947bad03df8aaee60de49c1325ed","5563","application-core","present","theme;event","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/controls.rs","f5211d73c38438f9cff2543ac234965a8dabd26f4a532fb8b8ecf51248fc0a56","64792","application-core","present","palette;action;event;ota;isp","stale-review","","Source changed since manual review of eb7e897040f0fcdd4149d0add2c45911b96a0e20ae8f5dbd62dde961f8713776. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/dialog.rs","8a396d67862578f8727e43a952e82120b20c9c582ebcc5366ab0968ba8f704d8","57688","ui-design","present","phosphor;palette;theme;panel;preference;action;event;isp","stale-review","desktop/src/ui/dialog.rs","Source changed since manual review of 4ffdd81afbaa2f918cb572f11d1ec978b279ca0e263f9bfad83e99a59bc27781. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/dropdown.rs","134f1613df05c9db44f8ccd178981a8eca4fb6c254ced6466229afca66b40ee9","23980","application-core","present","action;event","stale-review","","Source changed since manual review of f77426310758c2a96f9b3e571b3ab716f950ff3bfd5e0c3dc9c2f18ebd3100a9. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/effects_library.rs","a485362a0ad275426ef20768233b5b80b1633f896750bb62ed374d7b964f2b73","244743","application-core","present","palette;theme;panel;preference;action;event;status;serial;protocol;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/elegance_theme.rs","8d11f915ccf56e5ab67232ceac7432051437484d1faecacabab62ec5403d63bd","13265","ui-design","present","palette;theme;panel;preference;action;status","legacy-unverified","desktop/src/ui/elegance_theme.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported host style preserving Elegance theme adapter" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/error.rs","1f62031276eaf7720a344f41cd0a920a92418bcf816f4012efc3fd6a6626b0c9","4782","application-core","present","action","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/four_d.rs","0fc72e60c8ca9d876be5cfd1a7523878381c4aa0d6aa2297e2c9e948ced19e18","21944","application-core","present","action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/group_picker.rs","d7652450b26d97c79d4fa871da4203d210b4e76a1602af3c66537e03d6dc090b","15500","application-core","present","theme;action;event","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/hardware_control.rs","1e20dcdd968c61fd97722f71db1c902bba92529823e85a0db4bdaa4361a756d9","158418","application-core","present","palette;action;event;discovery;isp","stale-review","desktop/src/main.rs","Source changed since manual review of 3152087684039e1edaf6696d25742378b7b5c5eac09e918bf569d5c3fa3b4e1c. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/i18n.rs","811a48221c47c903c1d70ca904ead90a7a6b7f5ee0ba9a5f26a7e60dd30a75c3","104410","application-core","present","phosphor;palette;panel;preference;action;event;tray;status;serial;protocol;firmware;ota;seven-segment;buzzer;melod;eeprom;isp","legacy-unverified","desktop/src/ui/i18n.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported native font setup bundled Persian fallback and translation utilities" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/icon_catalog.rs","0f62f471bc1a6fd3a1f0af3b03df11cd2a6f5a47f3acc0735dea7fd356c45c96","113605","ui-design","present","phosphor;palette;panel;tray;ota;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/icons.rs","cd56a5849a0be621d8472b440c9cbac8b91bcaf603d228cb6148bba1eb554fc9","47713","ui-design","present","phosphor;palette;theme;action;event","stale-review","desktop/src/ui/icons.rs","Source changed since manual review of fba85edd503798868acc5527600b2ee52326339816c5b73e9926d1d7b0929384. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/layout.rs","d60b1913e9f5beb1417ef0951ccaadcdf89cd555a32279c3e6c70f14a94a3e17","1055384","application-core","present","palette;theme;panel;preference;action;event;status;serial;protocol;ota;buzzer;melod;isp","stale-review","desktop/src/ui/layout.rs","Source changed since manual review of db84ecbf382108e0acc67c18e9fc11459092171392831607a6510a6f8c0028be. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/layout/channel_folders.rs","eb19245ab455a5eaee074f6e242ae9894f3d1dcabdf5d4be9396f9a70af63863","33743","application-core","present","event","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/media_inspector.rs","4a7045dfb8499d83ccaa3c21d7a9684b3fccebfcb616efbd3ecbccacff9f53a0","18069","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/media_track_properties.rs","df7757898953048d45cd51ad3c7da3d6eb76abb008c08f20f374b7b01bb0aa39","17986","application-core","present","panel;event;ota","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/media_tracks.rs","bf883e6c5a330304782a7e0fc1052b07f8df83091add1957fae4c018bf092a82","3534","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/menu.rs","a0196878c7b76b898d0a5791b122181d9045d3fbbe9f56de52bc43242edf2d9d","41765","application-core","present","phosphor;panel;preference;action;event;status;discovery;serial;isp","stale-review","","Source changed since manual review of 83aa188b01de2e8eea1206c25b793e47ccaffa2eb3a40ab1617168c912d082af. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/mod.rs","a12993c8ee9d578b72197d2bef9a3e173472d3bd2e22d46511d98339099c96f7","17483","application-core","present","palette;theme;panel;preference;action;event;status","stale-review","","Source changed since manual review of c307ab48118ca5c283648db15c01b2bb9b454fd3c03ce0979d60fea0a78c2897. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/monitor_controls.rs","058ed468407494461a2153a042c9fee80d89b24851c1469e7a45efc30ff79f0b","19922","application-core","present","phosphor;palette;action;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/motion.rs","e9ac14b42fcdc0d1411373bbcdd330560a2a58ac1c4a3b6cccb6ad40662c249b","2592","application-core","present","theme;preference;action","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/open_url.rs","e5b7ede0460080e1f08fba0aa7ea8455e81f0e41c15de8ace675d9dd7a9904ad","73576","application-core","present","preference;action;event;status;protocol;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/palette.rs","c169db6a61b79ebb2ce00f0ca442305eefeea7b34740720a2cdf6424d6fef85d","6370","ui-design","present","palette;theme;panel;preference","legacy-unverified","desktop/src/ui/palette.rs","Unbound historical decision (adapted); requires source-hash evidence. Adapted role lookup and egui Visuals application" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/peer_browser.rs","bb917e1b1f8f191f327732916611feb3d118cb36832db167a4277b48d71a81b8","17186","application-core","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/preferences.rs","1fa2482a389fee84c79eef3d69ad8cc0ecb922c319fd222219af3e90d7e6f965","98064","ui-design","present","phosphor;palette;theme;panel;preference;action;event;status;shell;serial;ota;isp","legacy-unverified","desktop/src/ui/preferences.rs","Unbound historical decision (adapted); requires source-hash evidence. Adapted PreferencesDraft saved preview and discard lifecycle plus rail body footer editor" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/pwm_policy.rs","6d71c9813920b32dc833c90648f005d4a0687478627afe4c2edf302af7c971ed","5136","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/remote_location.rs","55cacd2e22833a71c5b4717c51854823d15f0ea01eed44c96c8a1edad82460ea","14156","application-core","present","action;status","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/rf.rs","c5fb24f320b3a230bdf183d5a362e5ad83d86e422643c944bdc32d22ff2d96f3","94024","application-core","present","preference;action;event;status;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/seek_preview.rs","0500fdc35824e3a1acdca90e5953ecf4eb9c2db7065c63d2324cc963a4ec6957","24069","ui-design","present","action;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/status_bar.rs","e407025a1ee959230634f8350de20d58432313d6dd0f734ada735b8fc9fec4db","83157","ui-design","present","panel;preference;action;event;status;serial;firmware;ota;eeprom;isp","stale-review","desktop/src/main.rs","Source changed since manual review of 99003b3a1c672b8e849ee587ed2144838e3eba99cf02af43e1056d5d24f5767d. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/subtitles.rs","3617ac13b09591572d635550d0dac359e505e6768d1e010ec29ddf26a35e9c70","15637","application-core","present","action;status","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/timeline_toolbar.rs","99f5d7b079024850b5f7e38543c3e8c70f56d309d72ae4308f7e8c95f67235d4","29962","application-core","present","palette;panel;preference;action;event","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/toasts.rs","30d4ff8c9a30b783f9513a3508787e9ca233881bb3a9bda2e1b9f9cd1bc9c989","3733","application-core","present","palette","legacy-unverified","desktop/src/ui/toasts.rs","Unbound historical decision (adapted); requires source-hash evidence. Imported root viewport overlay connected to the imported MessageHub" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/video.rs","ec5937789cd5c0cc0daf1f717898a0bffce330756760a1c84b7e8202e7166860","55080","application-core","present","theme;panel;action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/ui/workspace_profiles.rs","410d274f51e5e7db7ce81582d36166a97240b097e993cec5fee8707a95183e2f","9936","application-core","present","action;status","legacy-unverified","desktop/src/ui/shell.rs","Unbound historical decision (adapted); requires source-hash evidence. Adapted profile manager row actions saved layouts rename restore and overwrite" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","src/update.rs","909e8aa4f903d1a8a63589fd2e371d77ff7b8c6c6bcb3fc9949609ab55440652","74041","application-core","present","action;status;serial;updater;ota;isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","test-data/jellyfish.mp4","ac5a1796476da2e218fae4cccfd4a4bc2747593a41b50aedc60e5e19a1bf2b7a","1047968","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","test-data/synthetic_23fps.mp4","de62a75ac5852cb4e981325862a7ad4222b40acb1864cde2efa0383a7fb134f3","32999","application-core","present","","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/cli_forwarding_test.rs","777039867acb8f0bc8aaa12da0efbd846abfc62f0612054e1b9b1a6fdeb940a7","4812","tests","present","status;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/config_persistence_test.rs","e06205e3e023e47e8a8c646e881044ce967e793628f7d52159fbbdf589a6f0d7","1380","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/curve_record_test.rs","2ee2dede9ad3ee2d685312f6ac0a5f9f7263670b3a95f77649b332cf2b45ceeb","3820","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/curve_test.rs","cbd24f0c9e347cfd7b34a7f0f12613618aefd6257c65c703c1eee458e8fb455a","4254","tests","present","serial","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/frame_accurate_scrubbing_tests.rs","d3ecb033a7e8b11a068754e00a8b90863f30885c5c5e760934f2d4986f6479b7","10907","tests","present","ota;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/frame_cache_test.rs","3877b3522622201def1443861202c4f02749b9a4c1c173f235b66b8146cfef29","5732","tests","present","ota","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/hardware_affordance_integration_test.rs","4205e42676753cf2c2d20401cf85c1c1b88bf59e075056ef8fbabbb41d8db2d8","2641","tests","present","action","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/hardware_target_test.rs","79b66a0f1703f550a7cedcc6f9be9321c63e38013b4593f1bb6505958f054f3f","1191","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/i18n_surface_audit_test.rs","504768bc9cf2fda32a8dab8b0f50d573c74e45001734f45c7ff3120f36333f63","2173","tests","present","event;status;ota","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/input_capture_test.rs","d7e003ecafc9cd965b0963bb3866b86764628b692642f9e9a8cd9b1fb7f6cf2e","1937","tests","present","serial","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/interop_tcp_test.rs","e4ed01fc9532fad073323a5d3b20ebcd838b0ef274378fe4a046f0f2c5acf687","2465","tests","present","status","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/live_recording_engine_test.rs","e4f40539cd883a11b7d6d7aff89c1209b2042e6ab70740661a895cc0d5288e99","293","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/live_recording_sim_test.rs","6699d1778fbde46416561e36b5604da8ee4ebafb2c306393a548c55ac8300bd8","4843","tests","present","protocol","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/pccontroller_host_integration_test.rs","8c0639a897b8a2c42a64c27350129fa30d961c9068fde1f0cb0e11e462c2b4dd","7186","tests","present","action;event;status;websocket;serial","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/pccontroller_virtual_board_test.rs","823d4aaca1eaa819baefe428a574465a475f2468c83c92d6d2003a90dbb1fcfc","10273","tests","present","panel;action;status;discovery;protocol;firmware;tm1637;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/playback_end_test.rs","0c7b8fdedd18bc22e469561e5575ea9685118571ca0d6fc1cf4fe2564b5aaf0d","9070","tests","present","event;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/protocol_test.rs","166ccb6f55fb38e647659a1eb059da6f11847f2e3e3dcda3e47a15c1a865bd6b","6315","tests","present","protocol;isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/sim_integration_test.rs","782b8f3b1d07adbd11433a58c4300ea6ba9ec97b0a684bc0fd02afc91352c56a","9743","tests","present","serial;protocol","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/timeline_clip_controls_test.rs","724313f6084f5ec1fb7792510c8697656b1f84c45a797722d0c2c56402eb47fd","52651","tests","present","action","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/timeline_history_test.rs","b6be37afc414db4dd351d2fe17e2baae9e2d03900428986d9883db6df857cca6","4779","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/timeline_pointer_regression_test.rs","f39ceaeb531b75a705bc4304af2382f8819ae702ba9efd9cec13b402379c5178","7211","tests","present","action;event;status","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/timeline_selection_test.rs","4c00459b42d63b00da11f2b883da000a5edd0ee96313a4cecdf6b54b9b1e44e5","8162","tests","present","ota","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/timeline_smooth_seek_test.rs","fb3feab626048b10ff419da691c3ea4acb60c8ceee46497f1c4ec1d883072a8c","5837","tests","present","isp","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/timeline_ux_integration_test.rs","6e61b457c44fe83a82543d32b1634eee41958e123b0786dbc70319992d76ba1f","1309","tests","present","","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/web_media_explorer_test.rs","60562dd0e2d9ac77cddabeb9989a5df0c19bc4fd84d6da80f86dedfee50d1044","9005","tests","present","theme;status;websocket;protocol","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/web_workspace_parity_test.rs","e139ed7b0a4cc63360d3dcaeb139a62212ec7c105f297bf104727d4de3bca207","4200","tests","present","panel;preference;action;shell;websocket;ota","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/windows_shell_suite_test.rs","3f1f8f7709dd7b0e9dad2c58d1b345e9a7b054bb1bcfbcff9c6aede6598791c6","3318","tests","present","preference;action;tray;shell","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tests/workspace_dock_test.rs","a16b32bd03351aceeb30ac49a36e3eca449f5821f220a4b0f012da839c02ac61","8948","tests","present","panel;serial","screened","","Content-hashed file-by-file screening complete; category=tests. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tools/udp-probe/Cargo.lock","c289c509b2b921d35ba8c0462f6dbeaaa56dbac7a7251ba55e144a9c808ae7b7","6759","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tools/udp-probe/Cargo.toml","f858cc7851e7420766fc92cfbf16b227e7e310a420b6613ac0297bb790c9e770","365","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","tools/udp-probe/src/main.rs","9b84d8376fbbb0e6664902e11649628076893c125a14b13894321af1e3a1efb5","1985","tooling-ci","present","event;discovery;protocol","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","utilities/downloader/build.rs","81416102abc1c98057fcef07dd48c042c124af776834b7bbaa244129017daf87","1879","application-core","present","isp","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","utilities/downloader/Cargo.toml","f0e259a02e751f0c59a8efcc2ae0fbcecc794028976658656663bbcd90caf122","572","dependencies","present","phosphor","screened","","Content-hashed file-by-file screening complete; category=dependencies. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","utilities/downloader/src/icon.rs","228fcf16796c2cc5522b1936f61adc0e63c78e6b55440c293d35759aa7ab6d2b","1274","ui-design","present","tray","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","utilities/downloader/src/main.rs","f7e12741e59ef13e16977088f84290902c74b346fda3397d682e08a0c5daa11f","5253","application-core","present","phosphor;theme;panel;preference","screened","","Content-hashed file-by-file screening complete; category=application-core. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/.gitignore","6c7d15d2ab1a0b51ebcae7e88b9ad01f0713d0833bc2dbe8f3bcc7a81b66b344","24","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/alert.js","b07538fbd4900d6f758e5f6b2d16fbd183ffe84acb1d8519a6764139de680703","6454","design-assets","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/app.css","f8f0d47e6e8942d1fb760c23689d501116e5908c53e97732c32b5a1c0cf5377a","89924","design-assets","present","theme;panel;preference;action;event;status;shell;ota;seven-segment;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/app.js","6d6caabfdc23a82d54f52fc568a00fecac729659762b83cb4ef82ec35ef3c426","210283","design-assets","present","palette;theme;panel;preference;action;event;status;shell;websocket;protocol;updater;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/ArrowDownOutlined.js","01717b1b9451af22c924b8a7dc1633bb91eeeabc1c4393c2f9a8be5d0722e576","814","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/ArrowUpOutlined.js","e75a8d7c4982c88df005615536c8311f8b93794f8b73efd3abbf8fa8a06939ac","8117","design-assets","present","theme;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/card.js","12aad43fe00cef0b0e92cb9b54c320e86d87527a49b019ff4a7f4f17e6067427","43914","design-assets","present","panel;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/ColorPicker.js","fa6c6866a01e13ea489d4baae0a76ec5b8cd1f6f7885c904f6681d669e8551d5","39458","design-assets","present","palette;theme;panel;event;status;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/DeleteOutlined.js","d4cd4fb8ddf9cc971fab52435a4b41a5f1ba5a90a1fd1af6e48e1f7d3461bed4","929","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/DownloadsTab.js","9ee793db7741fc5b36a8efa75d9524782ef7653fc3e7507fc72467fd0cf46512","7712","design-assets","present","action;status;ota","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/dropdown.js","54fb75ef1b5b835ee89880c959d004a95509842be75c5af4343b8ad725c2f387","41873","design-assets","present","theme;panel;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/EffectsTab.js","4c352fa9a96c2a27aa21b61cc83f93e48b41ff6d756bbc9a9c94a5a18ed43657","26715","design-assets","present","theme;preference;action;event;ota;melod;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/ElapsedTimeInput.js","7d4ea5049b467942ab0c43d814873da069f67a68643e4c07bc3d1ed25aaf186d","35875","design-assets","present","theme;preference;action;event;status","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/ExpandOutlined.js","f64d920a1ce1c8b8770d666eb2cfcd66d378e8fea869d11707c9b219d49c71e1","1109","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/GroupSelect.js","9d5cb0e66eda56b2d0fd2f2f696ce74039d3f49d89993b40892930eb3d87c5a5","9571","design-assets","present","theme;event","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/Hack-Regular.ttf","15f55cc0c85a2988d2b4b3a8cdb5d77fdfbaf319e1bb5309d725db9818fb7125","309408","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/HardwareTab.js","76768b6f076bcb4f67079b4fdf61a6f87cddadff4e0994e9c9df16ee93526aec","73218","design-assets","present","theme;panel;action;event;status;serial;protocol;firmware;seven-segment;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/jsx-runtime.js","d410783b3a5ba8380dc1b40f9cf0f9b052e2134b675b293468b85e7920ffe4a6","488725","design-assets","present","palette;theme;panel;action;event;status;shell;updater;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/MediaLibraryTab.js","d3712a312bd94b090d15dc5b8ff71fa48b1cc8094efc58ee18b95595ae2b19d7","15386","design-assets","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/MelodySelect.js","7dfcfbc0fe8a251b0250e5f3fb4b19f8e7f1a4278fcfef1efae10754d214dd9b","1991","design-assets","present","theme;action;melod","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/modal.js","f67cb934b902a3e1d44f58714b65f5addf39c02cc3049f8dc7adb266abc9541d","26588","design-assets","present","theme;panel;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/PauseOutlined.js","b7b4127ef8cbe96c9eac0bbdb60d8b65b3c6e520026c5ecea32fa57fa44f0202","696","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/PlayCircleOutlined.js","6d83ec599a168fb8b58b00152f1f45d392e042460ec7bc22196373778a571eab","82104","design-assets","present","theme;panel;action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/PlayerInfoTab.js","91242af7e19ca254beb5ab24e7c4071a8eeee672312cedc1f980eab4e00cac6f","15910","design-assets","present","theme;status;shell;websocket;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/popconfirm.js","774c74060e8697e3b34d1594ee8d8a3969b4ba0c67ae93290d7df952af2a3656","3635","design-assets","present","panel;action;event;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/popover.js","a0b147935952f2184aea8176230edf5d5e62e988e19b39fd2b5959b0e503d4d5","4559","design-assets","present","panel;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/PreferencesTab.js","5f7f920c79751ab401ff0368e3b2190bdb5594d5f801e59f6a14be3faa960408","22086","design-assets","present","palette;theme;preference;action;event;status;discovery","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/progress.js","606fac2567e285d6cd7629e60721ee65eff902d5b577d838a88b4e8b0b74c0e1","14853","design-assets","present","status;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/PushpinOutlined.js","02b3d34998b678e692c60f382071ba978740c0305390b72b9ecf958b6a03b20d","2891","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/RemoteControlTab.js","ea828c74b997b6327781a3b93d0775389dc8604212866500a155f5722c4d0d97","3966","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/rolldown-runtime.js","bbf7c5086ae414dc3f33777e3eebf16ea8631325b8bb4690d25091c03567f31a","589","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/row.js","d1b7b30bb0b59eb6077fefcb0ebba86f1fca01c69ec5951c05ada564611d37b0","2485","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/SafetyCertificateOutlined.js","0b68ee4a6d33279d75fec6bf6d098fbe2b8d61db7d566f6658fd89a1986c7523","1100","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/ServerFilePicker.js","eab91b5ec3359a502b92ee36bebfae06504c5b49f018b79412ca01c730207334","7580","design-assets","present","theme;panel;event;status","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/slider.js","0712cad991b7ac82e0505b189cd12128f5e5fef757ad8fbce1523cec3047a7fe","24501","design-assets","present","action;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/StepRepeatFields.js","756ba53a5cc2d83236b558cc1dbe4fa18790c28ea6a3e50b1406937dafa3b19f","29920","design-assets","present","theme;panel;preference;action;event;status;protocol;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/StopOutlined.js","9c95cf72ea5426451d58e69c16e6f7893580dd491eb46bb017a0e88dbd7be6bb","880","design-assets","present","theme","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/StudioTab.js","c3106d00368ab6e4fe7162c5818b729a6714c1bd77424221759141fdb385f97e","43569","design-assets","present","theme;panel;preference;action;event;status;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/style.js","9f8e35dcf49cbc1eebe7baaa52efbcea0e8e0e42f42f032547b6d1ba01b0143c","1985","design-assets","present","isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/table.js","92eae8acd50a7ed34371b5f1faa1971e0d72d38f525ad365104d9382fbaa790a","189710","design-assets","present","theme;action;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/typography.js","b2e1b277e0abeaf5f951cb37438976fb4c811dbfd6a935b9a30e96915aa0f270","77993","design-assets","present","theme;action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/Ubuntu-Light.ttf","80307b8da7649aa4ee4d484b232140e3ce1ec0ca093073d3c53c8f5a5ced7a70","361676","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/useBreakpoint.js","dd431cf4d5a90e59cdb77f7e3ffda0980cd180cdd8173874086389b59459cf2d","1883","design-assets","present","event;isp","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/assets/Vazirmatn-Regular.ttf","b69fd4c680b8f3f225feabcc655a2c585d97627b8f5f5c0f9985e894069f3a56","122752","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/font-licenses/Hack-LICENSE.txt","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","3734","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/font-licenses/Ubuntu-LICENSE.txt","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","4673","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/fuji-loader.css","fcf8940e88af0c833b6ea4a46b2ad49f5b0aa189a4d5cd9ca6e5df68df412075","849","ui-design","present","theme;shell;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/fuji-loader.svg","9bb6239258823f43190e54a61e1e68cd8a812b13c6c84548923391d902f5a770","2302","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/index.html","e51ccb29a0275314b9dfd4fbe623a5c7f5d0b042bb731fcddc76f3fe8b506e11","2460","ui-design","present","theme;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/manifest.webmanifest","4d4ca66ac2ae23d9e5354770f653b27de599a5a7a654194cc6fe883a9d3cebd3","1124","ui-design","present","theme;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/pwa-build.json","afd4a7ed45f6045ece111e522a95edaca90665ca503df2560fbb44870db13bfb","2367","design-assets","present","preference;ota;melod","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/dist/sw.js","d4d21189e509a280ece2be65ca553fc23ba0ef81b2d4db7ca89caaf154c2d4e9","5535","ui-design","present","preference;event;ota;melod","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/index.html","dd206cd22260a94270df444c3bd85b87defa2ac0ac580298eaf38282c527d7bc","1410","ui-design","present","theme;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/package-lock.json","d26dd09dbd787e87f520cca00437e2a64623ace6704e42669d03227269827008","77042","design-assets","present","event","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/package.json","49eb339b9d40c5b97e943098e62e8c99b913b2d81093db123f6901d6e54ca032","1898","design-assets","present","preference;status","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/public/font-licenses/Hack-LICENSE.txt","47c0cccbeec7e8614548cc485588b28149e7874188df5f41b36efebcee285c87","3734","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/public/font-licenses/Ubuntu-LICENSE.txt","2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002","4673","documentation","present","action;event","screened","","Content-hashed file-by-file screening complete; category=documentation. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/public/fuji-loader.css","fcf8940e88af0c833b6ea4a46b2ad49f5b0aa189a4d5cd9ca6e5df68df412075","849","ui-design","present","theme;shell;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/public/fuji-loader.svg","9bb6239258823f43190e54a61e1e68cd8a812b13c6c84548923391d902f5a770","2302","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/public/manifest.webmanifest","4d4ca66ac2ae23d9e5354770f653b27de599a5a7a654194cc6fe883a9d3cebd3","1124","ui-design","present","theme;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/public/sw.js","dd8e3de59caed2ca4c833ff91d9a703659df6c22f6cffec668f065445ef705e5","3346","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/appearance.test.mjs","35f269e9463e49dbc41572683ca374be8674a93e0e97c84240838d34dc950ddc","2494","tests","present","palette;theme;preference;event","adapted","tests/web_appearance_test.mjs","Read complete source and ported all four actual contract tests. Additional tests execute shipped code for all palettes and browser persistence/cancel/System/cross-tab/failure behavior. Not hardware or connected-host broadcast proof." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/finalize-pwa.mjs","03b8218465ac00bc76476c092c0e9ca377c1a17b0685cbced621ba30f845a1c3","3038","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-application-parity.mjs","e95fece5a25f594af94067f6ad7099acdaa3446541c4b22528ec7f4afab068e7","14463","tooling-ci","present","theme;panel;preference;action;event;status;ota;seven-segment;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-channel-folders.mjs","606b1984d74bbbfe7959fa06ceb7a0bb73ca4b51cb2d1912f29ebae5003dc106","1851","tooling-ci","present","isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-clipboard-urls.mjs","7dec1674871c4314fd96c6ffea00ace39c5cf64205b1fcc9306a08a822e27915","1450","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-control-bars.mjs","f6ab881e6e42472a6fdca5cfd4f29b75512d5eceaa9fd7a06e98d488908a3782","3186","tooling-ci","present","action;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-controller-errors.mjs","132f8b76d5ff244220215cffc89247c2c30d0e3d7e1aadc62251f3e44fba1e9e","1095","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-cue-authoring.mjs","f74996c2f5d6c993422fa6daabab9beddee9f58ef028e8d28afa6dccc56945a5","10445","tooling-ci","present","action;event;status;ota;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-file-locations.mjs","c03b418256de95d4f1f4409be9d3827c6e5ddaba55f40dc4b9d19e2c221b3e65","1076","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-hardware-availability.mjs","c451251acb4aa2119b623d4d5e2236d0562ac1efd28b61661b89771d0ec7ce91","2456","tooling-ci","present","status;ota","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-media-controls.mjs","c501cdc527ff4acfbec10dc1dc288f2c3024adb3b1f321d750510a201286df35","1537","tooling-ci","present","preference;action;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-messaging.mjs","12923b9cf8fda68b787f498fe404a50c994767bd2d8ddbdce0ea6cd49da0a841","980","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-os-media-session.mjs","0ae2a410eefd275bfacbcda9e818dffac4fd5d05b15eeda5e4778985d7d4cccc","3441","tooling-ci","present","action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-preference-files.mjs","b0ae70aa9a7b438d7638d502b7c2fb88d5cd36a96866c7b62810638efd40c480","1098","tooling-ci","present","preference","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-pwm-card.mjs","4a017549641975eb6950e9dc65b8283e48a3519c7559cd2d25edf0256cd3af05","4249","tooling-ci","present","action;event;status;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-pwm-policy.mjs","306128ce16cd3c513011f1b00d97ca91a895aac4dd3a02dc1bb5f06e767a627c","1188","tooling-ci","present","event","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-pwm-push.mjs","25977a0374aebf1cd4902821f147c8beff1507bcb42e674a261f5d3fd29edd40","771","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-responsive-layout.mjs","377d208dec92440cb6926a37f9ab972d4aa5802e722e57159155fe75d228ff86","3807","tooling-ci","present","panel;preference;action;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-rf-binding-names.mjs","73f8d706dbe1a2887c604aee943f40e9019f442a0cd66e1fd40d316ace9597a1","1016","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-rf-presentation.mjs","ac608cf7ea0a9c4584f8b30524dfb918dcf7d6725694c5c9aa5425b6623277ff","4171","tooling-ci","present","action;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-rf-reception.mjs","335cc560ac9bef2a3b15c45bb7dc5a3cd0c8e826095a723a0122fc6cfe525968","766","tooling-ci","present","protocol","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-rf-saved-layout.mjs","15ddfb5b28df49746d7eb047f9a74a8e035d03331b8eae644fbac124017388f9","5062","tooling-ci","present","action;websocket","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-seek-preview.mjs","2514659886740dff8be645f1bb023bd3b0f8267af8c20a24f1c88a96ce034bcd","2724","tooling-ci","present","preference;event;ota;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-status-widgets.mjs","5f47f526959f03b797b97f139e12f945da9fa90a35ca85ea868e8f108a018469","4105","tooling-ci","present","preference;status;isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-timecode-editor.mjs","174d70e5179a2c9ab16b5222b362d1cdd0e06ccf74fe6b5583bdd4acdcec977e","1253","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-timeline-time.mjs","116d104838a6b92ad681c74ead549145939b3092188a589b5ecec04d7953ce54","728","tooling-ci","present","","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-timeline-wheel.mjs","0ccd79835b40396046793606fc261ecae1965682e71be1f52f6a5ab27a7aa239","2444","tooling-ci","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/test-web-assets.mjs","460d22166373d030da9fa3070db467300fb9091d1f1c5b324b5530217b4c5a33","4005","tooling-ci","present","event;status;shell","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/scripts/verify-pwa.mjs","abb3897421e75dd842f5cbeddf4bf57577dce7abed6453f76a8100990f0c8394","2830","tooling-ci","present","isp","screened","","Content-hashed file-by-file screening complete; category=tooling-ci. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/App.tsx","ba2d7a35e2f887ec556b681cca24aaa6f263295208cbc80678bc248b61949845","36262","ui-design","present","palette;theme;preference;action;event;status;shell;websocket;protocol;ota;isp","stale-review","","Source changed since manual review of 0596ca005fc50e76c79b6d178bd5ad6718ae8f640ed4bc9f521fcb932ce6b776. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/appearance.ts","b521c20a1f10e6f818978bcb09948c689b74caaf72df18bdec56f2f566f8db58","3175","ui-design","present","palette;theme;preference","stale-review","firmware/esp/src/WebUi.h","Source changed since manual review of b6a56ff95deaa1779e5021bdc8db9e45bdbf3cb54f4158c20f1e922e16959d54. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/channelFolders.ts","066d9f8abd055555673bc44d2f7d8716e104bca9747e949abfcd9d9f4855196f","1772","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/clipboardUrls.ts","f851b796fbe24ae4d94cb583e4fa0c2851e983db67804d80acfe80e69da11dc4","3165","ui-design","present","event;status;protocol","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/ApplicationStatusBar.tsx","94b9cdc6d28346bb7ae591d6d0a0ec3dd910b47471c6bb3df868582784ea99d4","21495","ui-design","present","preference;action;event;status;isp","legacy-unverified","firmware/esp/src/WebUi.h","Unbound historical decision (reviewed); requires source-hash evidence. Live state status composition selected for Web redesign" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/ColorDropdown.tsx","49d37654faab5033df04954456d0fe980571ccbc66478caaab7007dae1b8c151","4456","ui-design","present","panel;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/ColorPicker.tsx","024fdabb482a714c38a91d0dde5d0be11486b20859a019f4fbc2d3dd34295022","1243","ui-design","present","theme","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/ControlBar.tsx","cbd6ebc09cbf23e4958c4d1979974d3e856f2096bcc2dcfd1556c5ef4c45cafd","11040","ui-design","present","preference;action;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/DesignerFieldLabel.tsx","ed527ea04c4dc8e9f51e755c0dc92b8cd9a71a414b2fbcfbaba96e97cd7916a7","1119","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/downloads.css","5301e1a83619229834082effbc6078f4fb4cd2bae0940695a9df68ae198e0b78","2249","ui-design","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/DownloadsTab.tsx","6586e81dfa2de5e7e5dc71bd21e153e027e137c6f03dfb8aa6335efe5b0e5c60","9825","ui-design","present","action;status;ota","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/EffectGroupDialog.tsx","8c90f7a85286efada6d5a1e24212a03dd1ae14e51bea1767f8d195a538ec8f80","2154","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/EffectRecorder.tsx","60f0592a17464e82aef7d96ad391648fb72add8dea3b07bdb74727934863176c","6188","ui-design","present","action;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/EffectsTab.tsx","1e05d85e102ccf8fe8a1b928d9d948a0818d7c2a69e29e1ceaec9e94d0e1fa84","39349","ui-design","present","theme;panel;preference;action;event;protocol;ota;melod;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/ElapsedTimeInput.tsx","3486788299c7d562735fc9e9dbabe5c803349a360279197fbcecf85dd92a7519","3993","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/FileLocationSelect.tsx","4d8f2b5cecca02476322d171ad04a8e9bc28055947fd2035620ae1d6c8be3530","3093","ui-design","present","status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/FujiLoader.tsx","e1ffd53b29e78aa7153c7a22f0282a5a9d7a2c559832f45e21ffa323d265e7a4","409","ui-design","present","status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/GroupSelect.tsx","14bdd722273e5b80603ecf1f3ae3ac92176c5be49f97edeb8ad82d7595335931","1652","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/HardwareFolders.tsx","a3114bf641485cedaf16bf79b07cff271708bb1e6dd187ce41df5cae4da42b8a","9895","ui-design","present","event;serial","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/HardwareTab.tsx","66b453097073e72ead2fc89f36056371509557d43bcd0053299cc1e99f304712","49200","ui-design","present","panel;preference;action;event;status;serial;firmware;seven-segment;buzzer;melod;isp","stale-review","firmware/esp/src/WebUi.h","Source changed since manual review of 1bd4bc131dd12dfbc9ec340e47b1dc8aa2e0b110011fb40876093a1b85abcb25. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/HeaderBar.tsx","ad53ee284d969054f69b65e8447a313498b5928eae0aed2564e95f8c71e70d04","8654","ui-design","present","event;websocket;updater","stale-review","firmware/esp/src/WebUi.h","Source changed since manual review of df84386e53d729eabddf9476026a9f96afe130dd3429612f4c73509d1757d16b. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/MediaLibraryTab.tsx","853eacc37f9d53ba900b17682062c320711eef4f560b1474150a7912abc7d43a","10545","ui-design","present","action;event;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/MediaSurface.tsx","251fe24c5946d813beacf8760e063e32fcb9978a6fe350890d5967576c4ce35d","13552","ui-design","present","preference;action;event;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/MediaTrackSelectors.tsx","0eb6fd5d33db144dab7204131e6f0472bf1a0a3d446af4161c81189e68b64587","3280","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/MelodySelect.tsx","c82b79b849c6bc72ce8079dbf089630e2c44bb7305300c11c01477b1cac50782","1516","ui-design","present","action;buzzer;melod","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/NumericValueControl.tsx","6f1e99cd5ae8ef0bae30d43a86f22a22371c6543498c5d8938e486cff151d218","5386","ui-design","present","action;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/PlaybackButton.tsx","10b2c97e2b85d1f5390790992b53a8250dc49847ce0c4b1679f5928e30b9fe5a","964","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/PlayerInfoTab.tsx","3d771590a1e6b5392ed8f294068a26ee5403284808eab786eca6caeaf3eff2a7","11559","ui-design","present","event;status;shell;websocket;ota","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/PreferencesTab.tsx","30a63cc1db61a46346c2d4c30ce011dc74081a8a6da2e29853e56d39811a0de1","23262","ui-design","present","palette;theme;preference;action;event;status;discovery;isp","legacy-unverified","firmware/esp/src/WebUi.h","Unbound historical decision (reviewed); requires source-hash evidence. Preferences grouping selected for Web redesign" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/PublishingAuthority.tsx","62cffd9ba3d502aaaf30c4dc52dba5f09e151c9cd4309b105b16c0ce36d5ef6d","4278","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/PwmPolicyEditor.tsx","10f7fa2276a093924c41c1dac3045c5d70e7291905ab5e42f97c4f2d566b042e","2389","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/RemoteControlTab.tsx","4a3cd14c6ba51e4aa489230b5820a77b247a482c52eb8318dc43c16af055b13e","16414","ui-design","present","panel;preference;action;status;serial;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/RemoteLocationDialog.tsx","1b6571793fd747f13ebee92e078b9b2989f3b52178ea7756fe52be49d8f7e415","12024","ui-design","present","action;event;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/RfManager.tsx","e283b2479cf0f1f8e66dde43ddc61b6dd4e2a97a6ed3c3d8b89535011f541cd3","35390","ui-design","present","preference;action;event;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/RfSavedRuleCards.tsx","f8724fdb919712182b10f752914c9ce322fe4984fcec9ce5ddd53d6745bf2045","1703","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/seekbar.tsx","50cfe8d64c183500ecb9a766a340b24437a214f6977abd400d3314db6d48913c","5912","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/SeekThumbnailPreview.tsx","957406b4b0a465dee14657300b4c86aca81f2a693b1e7312cb7cbf8b4ff6bce7","7978","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/SequenceTimeline.tsx","773b16ce81c478c3b1719de69efd1259e8ae9df48bffd2af637d94c3ee6f86d7","21328","ui-design","present","preference;action;event;melod","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/ServerFilePicker.tsx","df5b59007e0b726c815bed0eafcce87e4f5a6e4a59e8c79a1414f2cc7be89316","4595","ui-design","present","preference;event;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/SevenSegmentDisplay.tsx","07cb90f243998086623f6957a7dc14ee2eb9a8ad4c9a644ae74da68a37a78fce","1315","ui-design","present","seven-segment;isp","legacy-unverified","desktop/src/ui/seven_segment.rs","Unbound historical decision (adapted); requires source-hash evidence. Exact seven segment geometry and intensity behavior adapted to egui" +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/SharedToasts.tsx","1cff480ef57bf5bdd84c316e8b990611db7c21619c7763529c03abc0bc3726ba","1888","ui-design","present","status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/SoundEffectFields.tsx","9b024984dc77ca37a4199afdcedb8f32b9fdc7149e9e618e8964c3c32b8159be","2855","ui-design","present","preference","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/StepRepeatFields.tsx","12aed954f80392f1e111fa8b5cd2842f2dc883469c561cdc2288796175504187","1274","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/StudioTab.tsx","c2e36cec1fab36df6224c665c4fb4d374320a62c9820c16e046e30690b4a1642","78390","ui-design","present","theme;panel;preference;action;event;status;ota;buzzer;melod;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/TimeValueField.tsx","492b290193674b99e055606d2006c8b11c8e57381fec61abb7c68e8b7534870d","1490","ui-design","present","event;status","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/VolumeControl.tsx","5bb7d7d51744d3ff627b3406295eb650e5221055fa04deffa63c3e76090133c6","2059","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/components/WebViewBoundary.tsx","eabda2c06bc1bc3f88d6f6f0790e0061e5857f2102c1fdf89a2ad01e7e0d60bb","877","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/controlBars.ts","eae3066c6d65c4057248bcc9cb4191246a84320bd60df49bbd830c3f6f1decb0","2840","ui-design","present","preference;action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/controllerErrors.ts","b7c5bec5e656b587637f77a72729fb4eb7bfeea3138d538fdbb9e642d3eb618c","521","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/cueAuthoring.ts","e9b6489f7b321c71d269eb072e38e20f3622d6bf5943312433522a4f55634925","12480","ui-design","present","panel;action;status;protocol;ota;buzzer;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/effectIcons.tsx","0836bbb837af44ef85cc03a7fad3eec437dd321d20aaa759aab8d440ea36f90e","6798","ui-design","present","phosphor;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/fileLocations.ts","2aca81029dce9db9b1989c63d6663d70943245bc13a4ae77b11156dd35b20fad","1774","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/hardwareAvailability.ts","cd0f51eb347cfbf3f90505ed318497829ca84a763a16e52fd5e0c834591747ad","1560","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/hardwareIdentity.ts","f6b7b03b69478de271f531eb061ea216b60e1cdbfcbc6abadd1b3352c3b914a0","577","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/i18n.ts","331d2545379e36ea717fcf2876508315437bc5abe49923170f50a4f1bb1b47fc","37317","ui-design","present","palette;panel;preference;action;status;shell;websocket;protocol;firmware;ota;buzzer;melod;eeprom;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/main.tsx","b7578041f5caa4aecf591daad49dcc16b418432952f4e8b3595f08b8abd78873","455","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/mediaControlsPolicy.ts","d2195135c00dd0b36b1743a4837977ae7bfe5fc3457d05bcfad96270e13290ed","341","ui-design","present","isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/mediaLabel.ts","d9f5a045fbe398f8e3a4f97753b1d974d4edcc38295a57036d0b8432f3465f02","979","ui-design","present","event;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/mediaSession.ts","cf032eef087338f65c6ca486f4287b495745b29afd7f971ea75d6f8f555df496","2725","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/melodyCatalog.ts","e0b3bbe4b902b9c0f653dcfcefaba8f148bca88101d26b33b78e5774eca55386","1415","ui-design","present","buzzer;melod","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/messaging.ts","e2f8b33b5ba9e4983ed4ea78838aa0d41f5476a641a80803fbd2f532763cbb38","612","ui-design","present","event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/preferenceFiles.ts","4580d1396b36f5a907cad6cf2f33a38486c3a7e6948a3bb222974e1b8a2a4af4","392","ui-design","present","preference","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/pwmCard.ts","1ef17e576921f1422f06fc0486572aa7642284cc98c70d0c39e0cac0b31d9935","2125","ui-design","present","preference;action;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/pwmDrafts.ts","593948d5662ccbb86b18fc4778907a3f899830e93a2ac9056181222adb817165","611","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/pwmPolicy.ts","e3faf4aa22877a0b6503bb8b4e07847084be2eea158824857d0ca29b9676b3f0","454","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/remote-location.css","bd063aee5d61b8ae380d894747ac8ad0d7d3971078ec2f6b6a7ca8597d13e84d","1711","ui-design","present","isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/rf-manager.css","6b84c381f383386bc646d6e3a10f1fd595a54e16d2937616ade40c464057cf2c","1232","ui-design","present","action;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/rf-presentation.ts","80fcb835a2d1b9d108d20916f75d4959c9d5d0e5c2b9aaf6e5a600472b9fc172","6997","ui-design","present","action;event;protocol;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/rf-reception.ts","e11b67861d7ae0a42f576ce2b1544b81855b0feb85dae13446174be329585cba","912","ui-design","present","preference;protocol","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/rf-saved-rules.css","0ed5053e0b3b836004b804e6cd9db82558f52c27b78f023f334c0947de5d33ba","897","ui-design","present","isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/rfBindingNames.ts","2282a81d3c39630b2b173bd6d9ec09e7801f7483fdcb56e4196cbd6a198c6624","1082","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/seekPreview.ts","66423333b22e2d455b5a1057598bde9abfcb580d68d496c57ccdd0a20cea8c56","1336","ui-design","present","action","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/shared-toasts.css","d5b9b58bf54587e5726c2e236d0a60b6e2911c70ab7ea945c22933d92415b794","1117","ui-design","present","event;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/statusWidgets.ts","3b748364e740dba009eb781ee496b7890ba83f8f6e051ffba7560af5e02365e1","5023","ui-design","present","preference;status;isp","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/styles.css","2d08f0129a28e29b55a137c708b9296d5282bd0aaffb6c2fdba6b9d5cf16462d","102544","ui-design","present","phosphor;theme;panel;preference;action;event;status;shell;ota;seven-segment;buzzer;melod;isp","stale-review","firmware/esp/src/WebUi.h","Source changed since manual review of 82cab6cb3eae2bfc04441f9a249c12a2390449ae4a2bf6fc257fa77d3abfb26b. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/timecodeEditor.ts","909317930eb43d8a41be86734d997ae2c6b4efa50e42dcf8057db903e223d649","3285","ui-design","present","ota","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/timelineTime.ts","6820ca9d8f9ca62f0cf08651eb4f6f1ccd8e8a68e68cb68e7a759173e658e3ee","789","ui-design","present","ota","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/timelineWheel.ts","1910311a3acba2f1d22d9d4fb57d43e08bcf6ee91f3ea567e381ae90e8a487cd","2351","ui-design","present","preference;action;event","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/vite-env.d.ts","65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5","38","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/webPlatform.ts","d6ee8217c05e96be2e20f9a40ab4c46249d57f58871c661a31c33e2310a92f0e","16892","ui-design","present","preference;action;event;updater;isp","stale-review","","Source changed since manual review of 23e8fd2a8f17d296f14b81d6618cbd166129e116e36515444239edac15f89554. Re-read required." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/workspacePresentation.tsx","b4e696358d80f3a3e6720b29f5921d5e478d9ec92a5c0aaac6562920259128b2","726","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/src/workspaces.ts","43fba86291b61e60a132a30e6080fec91c25d700e0b6410760e2dc07e0dea24e","352","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/tsconfig.json","00adaef3cb5f1cc832be92b2867c32ec31a6fabd05b58a6a827eebfd782532ff","551","design-assets","present","","screened","","Content-hashed file-by-file screening complete; category=design-assets. Manual adaptation is recorded separately when applicable." +"Pealayer","10fc6604a9d6068eb57da2f00d7d9404238f00c8","web_ui/vite.config.ts","5d1a2dbcbe761be8e775577274ced51d6a068e6b19af072f5d3fd698c75a9918","1790","ui-design","present","","screened","","Content-hashed file-by-file screening complete; category=ui-design. Manual adaptation is recorded separately when applicable." "portable-shell","67c5dcb8a63f4055cbdaf02e9ff271c53b46410d","_codeql_detected_source_root","cdb4ee2aea69cc6a83331bbe96dc2caa9a299d21329efb0336fc02a82e1839a8","1","application-core","pinned-blob","shell","reviewed-open","third_party/portable-shell/README.md","Read all source through EOF at 67c5dcb8a63f4055cbdaf02e9ff271c53b46410d. Inspected Git mode 120000 and target '.' at the pinned revision; accounted for without creating a recursive reference. Environment-specific analysis marker is not shell code; recreating it would introduce self-referential source traversal." "portable-shell","67c5dcb8a63f4055cbdaf02e9ff271c53b46410d",".gitignore","b7abe7efbbcb839e230ceb828522604b59f4faaf7b28b697aecb4c9df9f77fe0","221","application-core","present","shell","reviewed-open","third_party/portable-shell/README.md","Read all source through EOF at 67c5dcb8a63f4055cbdaf02e9ff271c53b46410d. Build/editor artifact exclusions retained in the exact reference snapshot; Pakar keeps its existing repository ignore policy. Applying *.exe, *.a and IDE exclusions repo-wide would hide tracked recovery/test assets and existing project policies." "portable-shell","67c5dcb8a63f4055cbdaf02e9ff271c53b46410d","CHANGELOG.md","7dd7e6e515634cc0c81ff1b1528ad5f0e5c29631417c427d50916a0de132224f","2117","documentation","present","shell","reviewed-open","third_party/portable-shell/README.md","Read all source through EOF at 67c5dcb8a63f4055cbdaf02e9ff271c53b46410d. Read complete historical claims; retained verbatim as donor history, not imported as Pakar release certification. Source inspection shows placeholders and allocation in history/parser; an old claim of zero alerts cannot establish current safety." diff --git a/docs/pccontroller/ProtocolContract.json b/docs/pccontroller/ProtocolContract.json index 2b403a4..ba95293 100644 --- a/docs/pccontroller/ProtocolContract.json +++ b/docs/pccontroller/ProtocolContract.json @@ -94,5 +94,83 @@ { "cpp": "HardwareUnavailable", "go": "ErrorHardwareUnavailable", "value": 4 }, { "cpp": "Busy", "go": "ErrorBusy", "value": 5 }, { "cpp": "Unsafe", "go": "ErrorUnsafe", "value": 6 } - ] + ], + "pakar": { + "envelope": {"magic":165,"reserved":0,"maximumPayload":48,"rawFrameOverhead":6,"maximumEncodedFrameOverhead":2}, + "opcodes": [ + {"cpp":"kHello","rust":"HELLO","dart":"hello","value":1,"wireName":"HELLO","go":"PakarHello"}, + {"cpp":"kGetStatus","rust":"GET_STATUS","dart":"getStatus","value":2,"wireName":"GET_STATUS","go":"PakarGetStatus"}, + {"cpp":"kSetStreamPeriod","rust":"SET_STREAM_PERIOD","dart":"setStreamPeriod","value":3,"wireName":"SET_STREAM_PERIOD","go":"PakarSetStreamPeriod"}, + {"cpp":"kBuzzer","rust":"BUZZER","dart":"buzzer","value":16,"wireName":"BUZZER","go":"PakarBuzzer"}, + {"cpp":"kAudioCue","rust":"AUDIO_CUE","dart":"audioCue","value":17,"wireName":"AUDIO_CUE","go":"PakarAudioCue"}, + {"cpp":"kAudioStream","rust":"AUDIO_STREAM","dart":"audioStream","value":18,"wireName":"AUDIO_STREAM","go":"PakarAudioStream"}, + {"cpp":"kDisplayText","rust":"DISPLAY_TEXT","dart":"displayText","value":56,"wireName":"DISPLAY_TEXT","go":"PakarDisplayText"}, + {"cpp":"kSetMode","rust":"SET_MODE","dart":"setMode","value":75,"wireName":"SET_MODE","go":"PakarSetMode"}, + {"cpp":"kCellAction","rust":"CELL_ACTION","dart":"cellAction","value":76,"wireName":"CELL_ACTION","go":"PakarCellAction"}, + {"cpp":"kGameReset","rust":"GAME_RESET","dart":"gameReset","value":77,"wireName":"GAME_RESET","go":"PakarGameReset"}, + {"cpp":"kOutputMask","rust":"OUTPUT_MASK","dart":"outputMask","value":78,"wireName":"OUTPUT_MASK","go":"PakarOutputMask"}, + {"cpp":"kPing","rust":"PING","dart":"ping","value":79,"wireName":"PING","go":"PakarPing"}, + {"cpp":"kProgrammingState","rust":"PROGRAMMING_STATE","dart":"programmingState","value":80,"wireName":"PROGRAMMING_STATE","go":"PakarProgrammingState"}, + {"cpp":"kSetBrightness","rust":"SET_BRIGHTNESS","dart":"setBrightness","value":81,"wireName":"SET_BRIGHTNESS","go":"PakarSetBrightness"}, + {"cpp":"kSetLedPattern","rust":"SET_LED_PATTERN","dart":"setLedPattern","value":82,"wireName":"SET_LED_PATTERN","go":"PakarSetLedPattern"}, + {"cpp":"kNetworkConfig","rust":"NETWORK_CONFIG","dart":"networkConfig","value":83,"wireName":"NETWORK_CONFIG","go":"PakarNetworkConfig"}, + {"cpp":"kAccessConfig","rust":"ACCESS_CONFIG","dart":"accessConfig","value":84,"wireName":"ACCESS_CONFIG","go":"PakarAccessConfig"}, + {"cpp":"kDeviceName","rust":"DEVICE_NAME","dart":"deviceName","value":85,"wireName":"DEVICE_NAME","go":"PakarDeviceName"}, + {"cpp":"kPcContract","rust":"PC_CONTRACT","dart":"pcContract","value":86,"wireName":"PC_CONTRACT","go":"PakarPcContract"}, + {"cpp":"kPcContractChunk","rust":"PC_CONTRACT_CHUNK","dart":"pcContractChunk","value":87,"wireName":"PC_CONTRACT_CHUNK","go":"PakarPcContractChunk"}, + {"cpp":"kGetTelemetry","rust":"GET_TELEMETRY","dart":"getTelemetry","value":88,"wireName":"GET_TELEMETRY","go":"PakarGetTelemetry"}, + {"cpp":"kGetIdentity","rust":"GET_IDENTITY","dart":"getIdentity","value":89,"wireName":"GET_IDENTITY","go":"PakarGetIdentity"}, + {"cpp":"kEspPanel","rust":"ESP_PANEL","dart":"espPanel","value":90,"wireName":"ESP_PANEL","go":"PakarEspPanel"}, + {"cpp":"kAvrRxDiagnostic","rust":"AVR_RX_DIAGNOSTIC","dart":"avrRxDiagnostic","value":91,"wireName":"AVR_RX_DIAGNOSTIC","go":"PakarAvrRxDiagnostic"}, + {"cpp":"kSetLedOutput","rust":"SET_LED_OUTPUT","dart":"setLedOutput","value":92,"wireName":"SET_LED_OUTPUT","go":"PakarSetLedOutput"}, + {"cpp":"kGetTableSnapshot","rust":"GET_TABLE_SNAPSHOT","dart":"getTableSnapshot","value":93,"wireName":"GET_TABLE_SNAPSHOT","go":"PakarGetTableSnapshot"}, + {"cpp":"kTableCommand","rust":"TABLE_COMMAND","dart":"tableCommand","value":94,"wireName":"TABLE_COMMAND","go":"PakarTableCommand"}, + {"cpp":"kCellsAction","rust":"CELLS_ACTION","dart":"cellsAction","value":95,"wireName":"CELLS_ACTION","go":"PakarCellsAction"}, + {"cpp":"kShellRequest","rust":"SHELL_REQUEST","dart":"shellRequest","value":96,"wireName":"SHELL_REQUEST","go":"PakarShellRequest"}, + {"cpp":"kPeerReport","rust":"PEER_REPORT","dart":"peerReport","value":97,"wireName":"PEER_REPORT","go":"PakarPeerReport"}, + {"cpp":"kCellAssignments","rust":"CELL_ASSIGNMENTS","dart":"cellAssignments","value":98,"wireName":"CELL_ASSIGNMENTS","go":"PakarCellAssignments"}, + {"cpp":"kCellLock","rust":"CELL_LOCK","dart":"cellLock","value":99,"wireName":"CELL_LOCK","go":"PakarCellLock"}, + {"cpp":"kHostDemand","rust":"HOST_DEMAND","dart":"hostDemand","value":100,"wireName":"HOST_DEMAND","go":"PakarHostDemand"}, + {"cpp":"kPixelDiagnostic","rust":"PIXEL_DIAGNOSTIC","dart":"pixelDiagnostic","value":101,"wireName":"PIXEL_DIAGNOSTIC","go":"PakarPixelDiagnostic"}, + {"cpp":"kKeyMask","rust":"KEY_MASK","dart":"keyMask","value":102,"wireName":"KEY_MASK","go":"PakarKeyMask"}, + {"cpp":"kKeySettings","rust":"KEY_SETTINGS","dart":"keySettings","value":103,"wireName":"KEY_SETTINGS","go":"PakarKeySettings"}, + {"cpp":"kGamePress","rust":"GAME_PRESS","dart":"gamePress","value":104,"wireName":"GAME_PRESS","go":"PakarGamePress"}, + {"cpp":"kKeyPresentation","rust":"KEY_PRESENTATION","dart":"keyPresentation","value":105,"wireName":"KEY_PRESENTATION","go":"PakarKeyPresentation"}, + {"cpp":"kUsbApi","rust":"USB_API","dart":"usbApi","value":106,"wireName":"USB_API","go":"PakarUsbApi"}, + {"cpp":"kAck","rust":"ACK","dart":"ack","value":128,"wireName":"ACK","go":"PakarAck"}, + {"cpp":"kHelloResponse","rust":"HELLO_RESPONSE","dart":"helloResponse","value":129,"wireName":"HELLO_RESPONSE","go":"PakarHelloResponse"}, + {"cpp":"kErrorResponse","rust":"ERROR_RESPONSE","dart":"errorResponse","value":130,"wireName":"ERROR_RESPONSE","go":"PakarErrorResponse"}, + {"cpp":"kStatusResponse","rust":"STATUS_RESPONSE","dart":"statusResponse","value":144,"wireName":"STATUS_RESPONSE","go":"PakarStatusResponse"}, + {"cpp":"kGameState","rust":"GAME_STATE","dart":"gameState","value":163,"wireName":"GAME_STATE","go":"PakarGameState"}, + {"cpp":"kInputEvent","rust":"INPUT_EVENT","dart":"inputEvent","value":164,"wireName":"INPUT_EVENT","go":"PakarInputEvent"}, + {"cpp":"kCellEvent","rust":"CELL_EVENT","dart":"cellEvent","value":165,"wireName":"CELL_EVENT","go":"PakarCellEvent"}, + {"cpp":"kPong","rust":"PONG","dart":"pong","value":166,"wireName":"PONG","go":"PakarPong"}, + {"cpp":"kPcContractResponse","rust":"PC_CONTRACT_RESPONSE","dart":"pcContractResponse","value":176,"wireName":"PC_CONTRACT_RESPONSE","go":"PakarPcContractResponse"}, + {"cpp":"kTelemetryResponse","rust":"TELEMETRY_RESPONSE","dart":"telemetryResponse","value":177,"wireName":"TELEMETRY_RESPONSE","go":"PakarTelemetryResponse"}, + {"cpp":"kIdentityResponse","rust":"IDENTITY_RESPONSE","dart":"identityResponse","value":178,"wireName":"IDENTITY_RESPONSE","go":"PakarIdentityResponse"}, + {"cpp":"kEspPanelResponse","rust":"ESP_PANEL_RESPONSE","dart":"espPanelResponse","value":179,"wireName":"ESP_PANEL_RESPONSE","go":"PakarEspPanelResponse"}, + {"cpp":"kAvrRxDiagnosticResponse","rust":"AVR_RX_DIAGNOSTIC_RESPONSE","dart":"avrRxDiagnosticResponse","value":180,"wireName":"AVR_RX_DIAGNOSTIC_RESPONSE","go":"PakarAvrRxDiagnosticResponse"}, + {"cpp":"kResetTelemetryResponse","rust":"RESET_TELEMETRY_RESPONSE","dart":"resetTelemetryResponse","value":181,"wireName":"RESET_TELEMETRY_RESPONSE","go":"PakarResetTelemetryResponse"}, + {"cpp":"kTableSnapshotResponse","rust":"TABLE_SNAPSHOT_RESPONSE","dart":"tableSnapshotResponse","value":182,"wireName":"TABLE_SNAPSHOT_RESPONSE","go":"PakarTableSnapshotResponse"}, + {"cpp":"kTableCommandState","rust":"TABLE_COMMAND_STATE","dart":"tableCommandState","value":183,"wireName":"TABLE_COMMAND_STATE","go":"PakarTableCommandState"}, + {"cpp":"kPanelEvent","rust":"PANEL_EVENT","dart":"panelEvent","value":184,"wireName":"PANEL_EVENT","go":"PakarPanelEvent"}, + {"cpp":"kShellResponse","rust":"SHELL_RESPONSE","dart":"shellResponse","value":185,"wireName":"SHELL_RESPONSE","go":"PakarShellResponse"}, + {"cpp":"kHostDemandResponse","rust":"HOST_DEMAND_RESPONSE","dart":"hostDemandResponse","value":186,"wireName":"HOST_DEMAND_RESPONSE","go":"PakarHostDemandResponse"}, + {"cpp":"kAudioStreamResponse","rust":"AUDIO_STREAM_RESPONSE","dart":"audioStreamResponse","value":188,"wireName":"AUDIO_STREAM_RESPONSE","go":"PakarAudioStreamResponse"}, + {"cpp":"kUsbApiResponse","rust":"USB_API_RESPONSE","dart":"usbApiResponse","value":189,"wireName":"USB_API_RESPONSE","go":"PakarUsbApiResponse"} + ], + "reservedOpcodes": [], + "errors": [ + {"cpp":"kNoError","rust":"NO_ERROR","dart":"noError","value":0,"wireName":"NO_ERROR","go":"PakarNoError"}, + {"cpp":"kBadEnvelope","rust":"BAD_ENVELOPE","dart":"badEnvelope","value":1,"wireName":"BAD_ENVELOPE","go":"PakarBadEnvelope"}, + {"cpp":"kUnsupported","rust":"UNSUPPORTED","dart":"unsupported","value":2,"wireName":"UNSUPPORTED","go":"PakarUnsupported"}, + {"cpp":"kBadPayload","rust":"BAD_PAYLOAD","dart":"badPayload","value":3,"wireName":"BAD_PAYLOAD","go":"PakarBadPayload"}, + {"cpp":"kHardwareUnavailable","rust":"HARDWARE_UNAVAILABLE","dart":"hardwareUnavailable","value":4,"wireName":"HARDWARE_UNAVAILABLE","go":"PakarHardwareUnavailable"}, + {"cpp":"kBusy","rust":"BUSY","dart":"busy","value":5,"wireName":"BUSY","go":"PakarBusy"}, + {"cpp":"kUnsafe","rust":"UNSAFE","dart":"unsafe","value":6,"wireName":"UNSAFE","go":"PakarUnsafe"}, + {"cpp":"kRedCellsLocked","rust":"RED_CELLS_LOCKED","dart":"redCellsLocked","value":7,"wireName":"RED_CELLS_LOCKED","go":"PakarRedCellsLocked"}, + {"cpp":"kInvalidCellAssignments","rust":"INVALID_CELL_ASSIGNMENTS","dart":"invalidCellAssignments","value":8,"wireName":"INVALID_CELL_ASSIGNMENTS","go":"PakarInvalidCellAssignments"}, + {"cpp":"kUnsupportedBoardRole","rust":"UNSUPPORTED_BOARD_ROLE","dart":"unsupportedBoardRole","value":9,"wireName":"UNSUPPORTED_BOARD_ROLE","go":"PakarUnsupportedBoardRole"} + ] + } } diff --git a/docs/pccontroller/SOURCE-MAPPING.json b/docs/pccontroller/SOURCE-MAPPING.json index 15598a8..286b4da 100644 --- a/docs/pccontroller/SOURCE-MAPPING.json +++ b/docs/pccontroller/SOURCE-MAPPING.json @@ -9,10 +9,10 @@ "source_sha256": "af30319345d28fbae9fb2fb2cee755252a224ce79c31ad3bd8039b27ab279a1f", "source_read": "complete", "target": "docs/pccontroller/ProtocolContract.json", - "target_sha256_utf8_lf": "af30319345d28fbae9fb2fb2cee755252a224ce79c31ad3bd8039b27ab279a1f", + "target_sha256_utf8_lf": "b72621de05550b724eeb312276b9cff8a86003e4acec3fcee860418f60944eb9", "line": 5, "anchor": "\"maximumPayload\"", - "retained": "Imported actual registry unchanged. All registered requests classified in PC-CONTROLLER-CONTRACTS.md.", + "retained": "Imported actual registry unchanged. All registered requests classified in PC-CONTROLLER-CONTRACTS.md. Opcode ownership follow-up: numeric definitions now come from the pinned canonical generator; native wire assignments, bounded framing and the explicit tunnel are unchanged.", "omitted_code_and_reason": "None." }, { @@ -31,10 +31,10 @@ "source_sha256": "287a95a65a9b9655e64a15ece051bc792a06564b648a1b53eed4f373c564e458", "source_read": "complete", "target": "libraries/BoardCore/src/Protocol.h", - "target_sha256_utf8_lf": "6031ecc3f760f2e4fc7a766e5977b1ea990a602de27808ddb060e56bf81c6f47", - "line": 39, - "anchor": "kPcContract = 0x56", - "retained": "Retains native opcode/error values in isolated tunneled dialect; existing COBS/CRC shared transport owns framing. Fully reread after additive USB snapshot, boot-fenced table command, atomic cell bitmap and post-ACK command-state additions: envelope bounds, CRC validation and 0x56/0x57 tunneled dialect remain unchanged. Reread semantic-panel and shell additions: 0xB8 reports requested presentation, not observed segment masks; 0x60/0xB9 carry bounded shell traffic inside COBS rather than interleaving raw terminal bytes. Fixed reserved zero, 48-byte payload and CRC rejection remain unchanged. No second UART owner is introduced.", + "target_sha256_utf8_lf": "331f68dfe248de399304210d34bfc51d97a39d84610731d7abe6d44587634059", + "line": 7, + "anchor": "#include \"ProtocolOpcodes.h\"", + "retained": "Retains native opcode/error values in isolated tunneled dialect; existing COBS/CRC shared transport owns framing. Fully reread after additive USB snapshot, boot-fenced table command, atomic cell bitmap and post-ACK command-state additions: envelope bounds, CRC validation and 0x56/0x57 tunneled dialect remain unchanged. Reread semantic-panel and shell additions: 0xB8 reports requested presentation, not observed segment masks; 0x60/0xB9 carry bounded shell traffic inside COBS rather than interleaving raw terminal bytes. Fixed reserved zero, 48-byte payload and CRC rejection remain unchanged. No second UART owner is introduced. Opcode ownership follow-up: numeric definitions now come from the pinned canonical generator; native wire assignments, bounded framing and the explicit tunnel are unchanged.", "omitted_code_and_reason": "Donor Stream-owning wrapper replaced by existing SerialLink; copying a second UART owner would collide. Direct donor opcode namespace cannot alias Pakar 0x11 audio." }, { diff --git a/docs/reuse-capabilities.json b/docs/reuse-capabilities.json index 045493e..0e20e2c 100644 --- a/docs/reuse-capabilities.json +++ b/docs/reuse-capabilities.json @@ -2,7 +2,7 @@ "schema": 1, "authority": "docs/file-comparison-evidence.json", "concerns": [ - {"id":"transport-convergence","origins":["PCController","Pealayer"],"path_pattern":"(^Project/(ProtocolCodec\\.h|UartProtocol\\.(h|cpp))$|^Tools/Controller/(internal/native/(cobs|frame)\\.go|transport/udp/.*)$|^docs/BINARY-UDP\\.md$|^src/(four_d/protocol|server/(udp_codec|binary_udp|udp_client))\\.rs$)","required_reviews":["PCController|Project/ProtocolCodec.h"],"issue":41}, + {"id":"transport-convergence","origins":["PCController","Pealayer"],"path_pattern":"(^Project/(ProtocolCodec\\.h|ProtocolContract\\.(h|json)|UartProtocol\\.(h|cpp))$|^Tools/Build/generate-protocol-contract\\.mjs$|^Tools/Controller/(internal/native/(cobs|frame)\\.go|transport/udp/.*)$|^docs/BINARY-UDP\\.md$|^src/(four_d/protocol|server/(udp_codec|binary_udp|udp_client))\\.rs$)","required_reviews":["PCController|Project/ProtocolCodec.h","PCController|Tools/Build/generate-protocol-contract.mjs"],"issue":41}, {"id":"ssh-transport","origins":["PU850-ESP"],"path_pattern":"^LocalLib/Shell\\.(cpp|h)$","required_reviews":["PU850-ESP|LocalLib/Shell.cpp","PU850-ESP|LocalLib/Shell.h"],"issue":33}, {"id":"host-wifi","origins":["PCController"],"path_pattern":"^mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/DiscoveryChannel\\.kt$","required_reviews":["PCController|mobile/android/app/src/main/kotlin/ir/digitalogic/pakar/pakarcontroller/DiscoveryChannel.kt"],"issue":31}, {"id":"drs-snake","origins":["DRS-jSnake"],"path_pattern":".*","required_reviews":["DRS-jSnake|DRS-JSnake.html"],"issue":30}, diff --git a/interfaces/controller-wire/consumer.mjs b/interfaces/controller-wire/consumer.mjs new file mode 100644 index 0000000..4eddddb --- /dev/null +++ b/interfaces/controller-wire/consumer.mjs @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: MIT +// Exact, pinned consumer of the PCController-owned registry. Never downloads code +// to execute it; optional upstream verification compares immutable source bytes. +import assert from "node:assert/strict"; +import {readFile, writeFile} from "node:fs/promises"; +import {createHash} from "node:crypto"; +import {fileURLToPath} from "node:url"; +import {validatePublishedBindings, renderCpp, renderPakarCpp, renderRust, renderDart, renderPowerShell} from "./registry.mjs"; + +const root = new URL("../../", import.meta.url); +const args = process.argv.slice(2); +assert(args.every(arg => ["--pakar", "--pealayer", "--check", "--upstream"].includes(arg)), "Unknown opcode generator argument"); +assert.equal(args.includes("--pakar") !== args.includes("--pealayer"), true, "Select exactly one consumer"); +const pakar = args.includes("--pakar"); +const snapshot = pakar ? "docs/pccontroller/ProtocolContract.json" : "interfaces/controller-wire/ProtocolContract.json"; +const read = path => readFile(new URL(path, root), "utf8"); +const digest = bytes => createHash("sha256").update(bytes).digest("hex"); +const lock = JSON.parse(await read("interfaces/controller-wire/source-lock.json")); +assert.equal(lock.owner, "atomicdeploy/PCController"); +assert.match(lock.commit, /^[0-9a-f]{40}$/); +const sources = [ + ["Project/ProtocolContract.json", snapshot], + ...["registry.mjs", "published.json", "consumer.mjs"].map(name => ["interfaces/controller-wire/" + name, "interfaces/controller-wire/" + name]) +]; +assert.deepEqual(Object.keys(lock.files).sort(), sources.map(([source]) => source).sort(), "Unrecognized registry source"); +for (const [source, destination] of sources) { + const bytes = await readFile(new URL(destination, root)); + assert.equal(digest(bytes), lock.files[source], "Pinned registry source changed: " + destination); + if (args.includes("--upstream")) { + const response = await fetch("https://raw.githubusercontent.com/atomicdeploy/PCController/" + lock.commit + "/" + source, + {signal: AbortSignal.timeout(15000), redirect: "error"}); + assert(response.ok, "Cannot verify canonical opcode source: HTTP" + response.status); + assert.equal(digest(new Uint8Array(await response.arrayBuffer())), lock.files[source], "Canonical opcode owner differs: " + source); + } +} +const contract = validatePublishedBindings(JSON.parse(await read(snapshot)), JSON.parse(await read("interfaces/controller-wire/published.json"))); +const outputs = pakar ? [ + ["libraries/BoardCore/src/ProtocolOpcodes.h", renderPakarCpp(contract)], + ["libraries/BoardCore/src/pccontroller/ProtocolContract.h", renderCpp(contract)], + ["desktop/src/protocol_opcodes.rs", renderRust(contract)], + ["mobile/lib/protocol_opcodes.dart", renderDart(contract)], + ["tools/ProtocolOpcodes.ps1", renderPowerShell(contract)] +] : [["src/four_d/protocol_opcodes.rs", renderRust(contract)]]; +for (const [path, expected] of outputs) { + let actual = ""; try { actual = await read(path); } catch (error) { if (error.code !== "ENOENT") throw error; } + if (actual.replaceAll("\r\n", "\n") === expected) continue; + assert(!args.includes("--check"), "Generated opcodes are stale: " + path); + await writeFile(new URL(path, root), expected); +} +console.log("Canonical opcode ownership, published allocations and all selected consumer views agree."); diff --git a/interfaces/controller-wire/published.json b/interfaces/controller-wire/published.json new file mode 100644 index 0000000..66af0f3 --- /dev/null +++ b/interfaces/controller-wire/published.json @@ -0,0 +1,164 @@ +{ + "controller": { + "envelope": {"magic":165,"reserved":1,"maximumPayload":48,"rawFrameOverhead":6,"maximumEncodedFrameOverhead":2}, + "opcodes": [ + {"cpp":"Hello","go":"OpHello","value":1,"wireName":"HELLO"}, + {"cpp":"GetStatus","go":"OpGetStatus","value":2,"wireName":"GET_STATUS"}, + {"cpp":"SetStreamPeriod","go":"OpSetStream","value":3,"wireName":"SET_STREAM"}, + {"cpp":"GetSettings","go":"OpGetSettings","value":4,"wireName":"GET_SETTINGS"}, + {"cpp":"SetSettings","go":"OpSetSettings","value":5,"wireName":"SET_SETTINGS"}, + {"cpp":"TemperatureList","go":"OpTemperatureList","value":6,"wireName":"TEMPERATURE_LIST"}, + {"cpp":"Buzzer","go":"OpBuzzer","value":16,"wireName":"BUZZER"}, + {"cpp":"PwmSet","go":"OpPWMSet","value":17,"wireName":"PWM_SET"}, + {"cpp":"PwmAllOff","go":"OpPWMAllOff","value":18,"wireName":"PWM_ALL_OFF"}, + {"cpp":"StatusRgb","go":"OpStatusRGB","value":20,"wireName":"STATUS_RGB"}, + {"cpp":"PwmGet","go":"OpPWMGet","value":21,"wireName":"PWM_GET"}, + {"cpp":"AddressableLed","go":"OpAddressableLED","value":22,"wireName":"ADDRESSABLE_LED"}, + {"cpp":"StatusEffect","go":"OpStatusEffect","value":23,"wireName":"STATUS_EFFECT"}, + {"cpp":"StatusProfileGet","go":"OpStatusProfileGet","value":24,"wireName":"STATUS_PROFILE_GET"}, + {"cpp":"StatusProfileSet","go":"OpStatusProfileSet","value":25,"wireName":"STATUS_PROFILE_SET"}, + {"cpp":"RadioTransmit","go":"OpRFTx","value":32,"wireName":"RF_TX"}, + {"cpp":"RadioLearnStart","go":"OpRFLearnStart","value":33,"wireName":"RF_LEARN_START"}, + {"cpp":"RadioLearnCancel","go":"OpRFLearnCancel","value":34,"wireName":"RF_LEARN_CANCEL"}, + {"cpp":"RadioLearnClear","go":"OpRFLearnClear","value":35,"wireName":"RF_LEARN_CLEAR"}, + {"cpp":"RadioLearnList","go":"OpRFLearnList","value":36,"wireName":"RF_LEARN_LIST"}, + {"cpp":"RadioLearnRemove","go":"OpRFLearnRemove","value":37,"wireName":"RF_LEARN_REMOVE"}, + {"cpp":"MenuAction","go":"OpMenuAction","value":48,"wireName":"MENU_ACTION"}, + {"cpp":"RelaySet","go":"OpRelaySet","value":49,"wireName":"RELAY_SET"}, + {"cpp":"RelaySide","go":"OpRelaySide","value":50,"wireName":"RELAY_SIDE"}, + {"cpp":"RelayAllOff","go":"OpRelayAllOff","value":51,"wireName":"RELAY_ALL_OFF"}, + {"cpp":"RelayTest","go":"OpRelayTest","value":52,"wireName":"RELAY_TEST"}, + {"cpp":"Reset","go":"OpReset","value":53,"wireName":"RESET"}, + {"cpp":"I2cTransfer","go":"OpI2CTransfer","value":54,"wireName":"I2C_TRANSFER"}, + {"cpp":"MenuSetPage","go":"OpMenuSetPage","value":55,"wireName":"MENU_SET_PAGE"}, + {"cpp":"DisplayText","go":"OpDisplayText","value":56,"wireName":"DISPLAY_TEXT"}, + {"cpp":"MacroStart","go":"OpMacroStart","value":57,"wireName":"MACRO_START"}, + {"cpp":"MacroCancel","go":"OpMacroCancel","value":58,"wireName":"MACRO_CANCEL"}, + {"cpp":"MacroStep","go":"OpMacroStep","value":59,"wireName":"MACRO_STEP"}, + {"cpp":"FrontPanelGet","go":"OpFrontPanelGet","value":60,"wireName":"FRONT_PANEL_GET"}, + {"cpp":"RemoteKeyGesture","go":"OpRemoteKeyGesture","value":61,"wireName":"REMOTE_KEY_GESTURE"}, + {"cpp":"MenuList","go":"OpMenuList","value":62,"wireName":"MENU_LIST"}, + {"cpp":"RadioLearnReplace","go":"OpRFLearnReplace","value":63,"wireName":"RF_LEARN_REPLACE"}, + {"cpp":"MenuLayoutGet","go":"OpMenuLayoutGet","value":64,"wireName":"MENU_LAYOUT_GET"}, + {"cpp":"MenuLayoutSet","go":"OpMenuLayoutSet","value":65,"wireName":"MENU_LAYOUT_SET"}, + {"cpp":"HostMenuDirectory","go":"OpHostMenuDirectory","value":66,"wireName":"HOST_MENU_DIRECTORY"}, + {"cpp":"HostMenuContent","go":"OpHostMenuContent","value":67,"wireName":"HOST_MENU_CONTENT"}, + {"cpp":"HostMenuStateGet","go":"OpHostMenuStateGet","value":68,"wireName":"HOST_MENU_STATE_GET"}, + {"cpp":"ProgramState","go":"OpProgramState","value":69,"wireName":"PROGRAM_STATE"}, + {"cpp":"AutomationList","go":"OpAutomationList","value":70,"wireName":"AUTOMATION_LIST"}, + {"cpp":"AutomationPut","go":"OpAutomationPut","value":71,"wireName":"AUTOMATION_PUT"}, + {"cpp":"AutomationRemove","go":"OpAutomationRemove","value":72,"wireName":"AUTOMATION_REMOVE"}, + {"cpp":"AutomationClear","go":"OpAutomationClear","value":73,"wireName":"AUTOMATION_CLEAR"}, + {"cpp":"Ack","go":"OpACK","value":128,"wireName":"ACK"}, + {"cpp":"HelloResponse","go":"OpHelloResp","value":129,"wireName":"HELLO"}, + {"cpp":"ErrorResponse","go":"OpError","value":130,"wireName":"ERROR"}, + {"cpp":"StatusResponse","go":"OpStatus","value":144,"wireName":"STATUS"}, + {"cpp":"SettingsResponse","go":"OpSettings","value":145,"wireName":"SETTINGS"}, + {"cpp":"PwmValuesResponse","go":"OpPWMValues","value":146,"wireName":"PWM_VALUES"}, + {"cpp":"I2cTransferResponse","go":"OpI2CTransferResp","value":147,"wireName":"I2C_TRANSFER"}, + {"cpp":"RadioLearnListResponse","go":"OpRFEntries","value":148,"wireName":"RF_ENTRIES"}, + {"cpp":"TemperatureListResponse","go":"OpTemperatures","value":149,"wireName":"TEMPERATURES"}, + {"cpp":"FrontPanelResponse","go":"OpFrontPanel","value":150,"wireName":"FRONT_PANEL"}, + {"cpp":"MenuListResponse","go":"OpMenuListResp","value":151,"wireName":"MENU_LIST"}, + {"cpp":"MacroStatusResponse","go":"OpMacroStatus","value":152,"wireName":"MACRO_STATUS"}, + {"cpp":"MenuLayoutResponse","go":"OpMenuLayoutResp","value":153,"wireName":"MENU_LAYOUT"}, + {"cpp":"HostMenuContentRequest","go":"OpHostMenuRequest","value":154,"wireName":"HOST_MENU_REQUEST"}, + {"cpp":"HostMenuStateResponse","go":"OpHostMenuState","value":155,"wireName":"HOST_MENU_STATE"}, + {"cpp":"SegmentChanged","go":"OpSegmentChanged","value":156,"wireName":"SEGMENT_CHANGED"}, + {"cpp":"BuzzerChanged","go":"OpBuzzerChanged","value":157,"wireName":"BUZZER_CHANGED"}, + {"cpp":"StatusLedChanged","go":"OpStatusLEDChanged","value":158,"wireName":"STATUS_LED_CHANGED"}, + {"cpp":"StatusProfileResponse","go":"OpStatusProfile","value":159,"wireName":"STATUS_PROFILE"}, + {"cpp":"Event","go":"OpEvent","value":160,"wireName":"EVENT"}, + {"cpp":"AutomationListResponse","go":"OpAutomationListResp","value":161,"wireName":"AUTOMATION_LIST"}, + {"cpp":"AutomationRecordResponse","go":"OpAutomationRecord","value":162,"wireName":"AUTOMATION_RECORD"} + ], + "reservedOpcodes": [{"value":19,"note":"No PWM mode or auto-demo state is implemented."},{"value":38,"note":"Mappings are updated as complete records through RADIO_LEARN_REPLACE."},{"value":74,"note":"Media cells reuse DISPLAY_TEXT scheduled segments instead of a parallel physical opcode."}], + "errors": [ + {"cpp":"NoError","go":"ErrorNoError","value":0}, + {"cpp":"BadEnvelope","go":"ErrorBadEnvelope","value":1}, + {"cpp":"Unsupported","go":"ErrorUnsupported","value":2}, + {"cpp":"BadPayload","go":"ErrorBadPayload","value":3}, + {"cpp":"HardwareUnavailable","go":"ErrorHardwareUnavailable","value":4}, + {"cpp":"Busy","go":"ErrorBusy","value":5}, + {"cpp":"Unsafe","go":"ErrorUnsafe","value":6} + ] + }, + "pakar": { + "envelope": {"magic":165,"reserved":0,"maximumPayload":48,"rawFrameOverhead":6,"maximumEncodedFrameOverhead":2}, + "opcodes": [ + {"cpp":"kHello","rust":"HELLO","dart":"hello","value":1,"wireName":"HELLO","go":"PakarHello"}, + {"cpp":"kGetStatus","rust":"GET_STATUS","dart":"getStatus","value":2,"wireName":"GET_STATUS","go":"PakarGetStatus"}, + {"cpp":"kSetStreamPeriod","rust":"SET_STREAM_PERIOD","dart":"setStreamPeriod","value":3,"wireName":"SET_STREAM_PERIOD","go":"PakarSetStreamPeriod"}, + {"cpp":"kBuzzer","rust":"BUZZER","dart":"buzzer","value":16,"wireName":"BUZZER","go":"PakarBuzzer"}, + {"cpp":"kAudioCue","rust":"AUDIO_CUE","dart":"audioCue","value":17,"wireName":"AUDIO_CUE","go":"PakarAudioCue"}, + {"cpp":"kAudioStream","rust":"AUDIO_STREAM","dart":"audioStream","value":18,"wireName":"AUDIO_STREAM","go":"PakarAudioStream"}, + {"cpp":"kDisplayText","rust":"DISPLAY_TEXT","dart":"displayText","value":56,"wireName":"DISPLAY_TEXT","go":"PakarDisplayText"}, + {"cpp":"kSetMode","rust":"SET_MODE","dart":"setMode","value":75,"wireName":"SET_MODE","go":"PakarSetMode"}, + {"cpp":"kCellAction","rust":"CELL_ACTION","dart":"cellAction","value":76,"wireName":"CELL_ACTION","go":"PakarCellAction"}, + {"cpp":"kGameReset","rust":"GAME_RESET","dart":"gameReset","value":77,"wireName":"GAME_RESET","go":"PakarGameReset"}, + {"cpp":"kOutputMask","rust":"OUTPUT_MASK","dart":"outputMask","value":78,"wireName":"OUTPUT_MASK","go":"PakarOutputMask"}, + {"cpp":"kPing","rust":"PING","dart":"ping","value":79,"wireName":"PING","go":"PakarPing"}, + {"cpp":"kProgrammingState","rust":"PROGRAMMING_STATE","dart":"programmingState","value":80,"wireName":"PROGRAMMING_STATE","go":"PakarProgrammingState"}, + {"cpp":"kSetBrightness","rust":"SET_BRIGHTNESS","dart":"setBrightness","value":81,"wireName":"SET_BRIGHTNESS","go":"PakarSetBrightness"}, + {"cpp":"kSetLedPattern","rust":"SET_LED_PATTERN","dart":"setLedPattern","value":82,"wireName":"SET_LED_PATTERN","go":"PakarSetLedPattern"}, + {"cpp":"kNetworkConfig","rust":"NETWORK_CONFIG","dart":"networkConfig","value":83,"wireName":"NETWORK_CONFIG","go":"PakarNetworkConfig"}, + {"cpp":"kAccessConfig","rust":"ACCESS_CONFIG","dart":"accessConfig","value":84,"wireName":"ACCESS_CONFIG","go":"PakarAccessConfig"}, + {"cpp":"kDeviceName","rust":"DEVICE_NAME","dart":"deviceName","value":85,"wireName":"DEVICE_NAME","go":"PakarDeviceName"}, + {"cpp":"kPcContract","rust":"PC_CONTRACT","dart":"pcContract","value":86,"wireName":"PC_CONTRACT","go":"PakarPcContract"}, + {"cpp":"kPcContractChunk","rust":"PC_CONTRACT_CHUNK","dart":"pcContractChunk","value":87,"wireName":"PC_CONTRACT_CHUNK","go":"PakarPcContractChunk"}, + {"cpp":"kGetTelemetry","rust":"GET_TELEMETRY","dart":"getTelemetry","value":88,"wireName":"GET_TELEMETRY","go":"PakarGetTelemetry"}, + {"cpp":"kGetIdentity","rust":"GET_IDENTITY","dart":"getIdentity","value":89,"wireName":"GET_IDENTITY","go":"PakarGetIdentity"}, + {"cpp":"kEspPanel","rust":"ESP_PANEL","dart":"espPanel","value":90,"wireName":"ESP_PANEL","go":"PakarEspPanel"}, + {"cpp":"kAvrRxDiagnostic","rust":"AVR_RX_DIAGNOSTIC","dart":"avrRxDiagnostic","value":91,"wireName":"AVR_RX_DIAGNOSTIC","go":"PakarAvrRxDiagnostic"}, + {"cpp":"kSetLedOutput","rust":"SET_LED_OUTPUT","dart":"setLedOutput","value":92,"wireName":"SET_LED_OUTPUT","go":"PakarSetLedOutput"}, + {"cpp":"kGetTableSnapshot","rust":"GET_TABLE_SNAPSHOT","dart":"getTableSnapshot","value":93,"wireName":"GET_TABLE_SNAPSHOT","go":"PakarGetTableSnapshot"}, + {"cpp":"kTableCommand","rust":"TABLE_COMMAND","dart":"tableCommand","value":94,"wireName":"TABLE_COMMAND","go":"PakarTableCommand"}, + {"cpp":"kCellsAction","rust":"CELLS_ACTION","dart":"cellsAction","value":95,"wireName":"CELLS_ACTION","go":"PakarCellsAction"}, + {"cpp":"kShellRequest","rust":"SHELL_REQUEST","dart":"shellRequest","value":96,"wireName":"SHELL_REQUEST","go":"PakarShellRequest"}, + {"cpp":"kPeerReport","rust":"PEER_REPORT","dart":"peerReport","value":97,"wireName":"PEER_REPORT","go":"PakarPeerReport"}, + {"cpp":"kCellAssignments","rust":"CELL_ASSIGNMENTS","dart":"cellAssignments","value":98,"wireName":"CELL_ASSIGNMENTS","go":"PakarCellAssignments"}, + {"cpp":"kCellLock","rust":"CELL_LOCK","dart":"cellLock","value":99,"wireName":"CELL_LOCK","go":"PakarCellLock"}, + {"cpp":"kHostDemand","rust":"HOST_DEMAND","dart":"hostDemand","value":100,"wireName":"HOST_DEMAND","go":"PakarHostDemand"}, + {"cpp":"kPixelDiagnostic","rust":"PIXEL_DIAGNOSTIC","dart":"pixelDiagnostic","value":101,"wireName":"PIXEL_DIAGNOSTIC","go":"PakarPixelDiagnostic"}, + {"cpp":"kKeyMask","rust":"KEY_MASK","dart":"keyMask","value":102,"wireName":"KEY_MASK","go":"PakarKeyMask"}, + {"cpp":"kKeySettings","rust":"KEY_SETTINGS","dart":"keySettings","value":103,"wireName":"KEY_SETTINGS","go":"PakarKeySettings"}, + {"cpp":"kGamePress","rust":"GAME_PRESS","dart":"gamePress","value":104,"wireName":"GAME_PRESS","go":"PakarGamePress"}, + {"cpp":"kKeyPresentation","rust":"KEY_PRESENTATION","dart":"keyPresentation","value":105,"wireName":"KEY_PRESENTATION","go":"PakarKeyPresentation"}, + {"cpp":"kUsbApi","rust":"USB_API","dart":"usbApi","value":106,"wireName":"USB_API","go":"PakarUsbApi"}, + {"cpp":"kAck","rust":"ACK","dart":"ack","value":128,"wireName":"ACK","go":"PakarAck"}, + {"cpp":"kHelloResponse","rust":"HELLO_RESPONSE","dart":"helloResponse","value":129,"wireName":"HELLO_RESPONSE","go":"PakarHelloResponse"}, + {"cpp":"kErrorResponse","rust":"ERROR_RESPONSE","dart":"errorResponse","value":130,"wireName":"ERROR_RESPONSE","go":"PakarErrorResponse"}, + {"cpp":"kStatusResponse","rust":"STATUS_RESPONSE","dart":"statusResponse","value":144,"wireName":"STATUS_RESPONSE","go":"PakarStatusResponse"}, + {"cpp":"kGameState","rust":"GAME_STATE","dart":"gameState","value":163,"wireName":"GAME_STATE","go":"PakarGameState"}, + {"cpp":"kInputEvent","rust":"INPUT_EVENT","dart":"inputEvent","value":164,"wireName":"INPUT_EVENT","go":"PakarInputEvent"}, + {"cpp":"kCellEvent","rust":"CELL_EVENT","dart":"cellEvent","value":165,"wireName":"CELL_EVENT","go":"PakarCellEvent"}, + {"cpp":"kPong","rust":"PONG","dart":"pong","value":166,"wireName":"PONG","go":"PakarPong"}, + {"cpp":"kPcContractResponse","rust":"PC_CONTRACT_RESPONSE","dart":"pcContractResponse","value":176,"wireName":"PC_CONTRACT_RESPONSE","go":"PakarPcContractResponse"}, + {"cpp":"kTelemetryResponse","rust":"TELEMETRY_RESPONSE","dart":"telemetryResponse","value":177,"wireName":"TELEMETRY_RESPONSE","go":"PakarTelemetryResponse"}, + {"cpp":"kIdentityResponse","rust":"IDENTITY_RESPONSE","dart":"identityResponse","value":178,"wireName":"IDENTITY_RESPONSE","go":"PakarIdentityResponse"}, + {"cpp":"kEspPanelResponse","rust":"ESP_PANEL_RESPONSE","dart":"espPanelResponse","value":179,"wireName":"ESP_PANEL_RESPONSE","go":"PakarEspPanelResponse"}, + {"cpp":"kAvrRxDiagnosticResponse","rust":"AVR_RX_DIAGNOSTIC_RESPONSE","dart":"avrRxDiagnosticResponse","value":180,"wireName":"AVR_RX_DIAGNOSTIC_RESPONSE","go":"PakarAvrRxDiagnosticResponse"}, + {"cpp":"kResetTelemetryResponse","rust":"RESET_TELEMETRY_RESPONSE","dart":"resetTelemetryResponse","value":181,"wireName":"RESET_TELEMETRY_RESPONSE","go":"PakarResetTelemetryResponse"}, + {"cpp":"kTableSnapshotResponse","rust":"TABLE_SNAPSHOT_RESPONSE","dart":"tableSnapshotResponse","value":182,"wireName":"TABLE_SNAPSHOT_RESPONSE","go":"PakarTableSnapshotResponse"}, + {"cpp":"kTableCommandState","rust":"TABLE_COMMAND_STATE","dart":"tableCommandState","value":183,"wireName":"TABLE_COMMAND_STATE","go":"PakarTableCommandState"}, + {"cpp":"kPanelEvent","rust":"PANEL_EVENT","dart":"panelEvent","value":184,"wireName":"PANEL_EVENT","go":"PakarPanelEvent"}, + {"cpp":"kShellResponse","rust":"SHELL_RESPONSE","dart":"shellResponse","value":185,"wireName":"SHELL_RESPONSE","go":"PakarShellResponse"}, + {"cpp":"kHostDemandResponse","rust":"HOST_DEMAND_RESPONSE","dart":"hostDemandResponse","value":186,"wireName":"HOST_DEMAND_RESPONSE","go":"PakarHostDemandResponse"}, + {"cpp":"kAudioStreamResponse","rust":"AUDIO_STREAM_RESPONSE","dart":"audioStreamResponse","value":188,"wireName":"AUDIO_STREAM_RESPONSE","go":"PakarAudioStreamResponse"}, + {"cpp":"kUsbApiResponse","rust":"USB_API_RESPONSE","dart":"usbApiResponse","value":189,"wireName":"USB_API_RESPONSE","go":"PakarUsbApiResponse"} + ], + "reservedOpcodes": [], + "errors": [ + {"cpp":"kNoError","rust":"NO_ERROR","dart":"noError","value":0,"wireName":"NO_ERROR","go":"PakarNoError"}, + {"cpp":"kBadEnvelope","rust":"BAD_ENVELOPE","dart":"badEnvelope","value":1,"wireName":"BAD_ENVELOPE","go":"PakarBadEnvelope"}, + {"cpp":"kUnsupported","rust":"UNSUPPORTED","dart":"unsupported","value":2,"wireName":"UNSUPPORTED","go":"PakarUnsupported"}, + {"cpp":"kBadPayload","rust":"BAD_PAYLOAD","dart":"badPayload","value":3,"wireName":"BAD_PAYLOAD","go":"PakarBadPayload"}, + {"cpp":"kHardwareUnavailable","rust":"HARDWARE_UNAVAILABLE","dart":"hardwareUnavailable","value":4,"wireName":"HARDWARE_UNAVAILABLE","go":"PakarHardwareUnavailable"}, + {"cpp":"kBusy","rust":"BUSY","dart":"busy","value":5,"wireName":"BUSY","go":"PakarBusy"}, + {"cpp":"kUnsafe","rust":"UNSAFE","dart":"unsafe","value":6,"wireName":"UNSAFE","go":"PakarUnsafe"}, + {"cpp":"kRedCellsLocked","rust":"RED_CELLS_LOCKED","dart":"redCellsLocked","value":7,"wireName":"RED_CELLS_LOCKED","go":"PakarRedCellsLocked"}, + {"cpp":"kInvalidCellAssignments","rust":"INVALID_CELL_ASSIGNMENTS","dart":"invalidCellAssignments","value":8,"wireName":"INVALID_CELL_ASSIGNMENTS","go":"PakarInvalidCellAssignments"}, + {"cpp":"kUnsupportedBoardRole","rust":"UNSUPPORTED_BOARD_ROLE","dart":"unsupportedBoardRole","value":9,"wireName":"UNSUPPORTED_BOARD_ROLE","go":"PakarUnsupportedBoardRole"} + ] + } +} diff --git a/interfaces/controller-wire/registry.mjs b/interfaces/controller-wire/registry.mjs new file mode 100644 index 0000000..8659cc8 --- /dev/null +++ b/interfaces/controller-wire/registry.mjs @@ -0,0 +1,342 @@ +// SPDX-License-Identifier: MIT +// Portable source owner: PCController interfaces/controller-wire/registry.mjs. +// Adapted from its actual Tools/Build/generate-protocol-contract.mjs. +// No IO, toolchain or transport dependencies. Consumers vendor exact pinned bytes. + +const identifier = /^[A-Za-z][A-Za-z0-9]*$/; +const wireName = /^[A-Z][A-Z0-9_]*$/; +const requiredOpcodes = new Map([ + ["HostMenuDirectory", 0x42], + ["HostMenuContent", 0x43], + ["HostMenuStateGet", 0x44], +]); +const requiredErrors = new Map([ + ["NoError", 0], + ["BadEnvelope", 1], + ["Unsupported", 2], + ["BadPayload", 3], + ["HardwareUnavailable", 4], + ["Busy", 5], + ["Unsafe", 6], +]); + +function requireInteger(value, label, minimum = 0, maximum = 0xFF) { + if (!Number.isInteger(value) || value < minimum || value > maximum) { + throw new Error(`${label} must be an integer in ${minimum}..${maximum}`); + } +} + +function requireIdentifier(value, label) { + if (typeof value !== "string" || !identifier.test(value)) { + throw new Error(`${label} must be an identifier`); + } +} + +function requireWireName(value, label) { + if (typeof value !== "string" || !wireName.test(value)) { + throw new Error(`${label} must be an upper-case wire name`); + } +} + +function validateRegistry(entries, label, fields) { + if (!Array.isArray(entries) || entries.length === 0) { + throw new Error(`${label} must be a non-empty array`); + } + const values = new Set(); + const cpp = new Set(); + const go = new Set(); + let previous = -1; + for (const [index, entry] of entries.entries()) { + if (entry === null || typeof entry !== "object") { + throw new Error(`${label}[${index}] must be an object`); + } + requireInteger(entry.value, `${label}[${index}].value`); + requireIdentifier(entry.cpp, `${label}[${index}].cpp`); + requireIdentifier(entry.go, `${label}[${index}].go`); + if (fields.includes("wireName")) { + requireWireName(entry.wireName, `${label}[${index}].wireName`); + } + if (values.has(entry.value) || cpp.has(entry.cpp) || go.has(entry.go)) { + throw new Error(`${label}[${index}] duplicates a value or exported name`); + } + if (entry.value <= previous) { + throw new Error(`${label} must be strictly ordered by value`); + } + values.add(entry.value); + cpp.add(entry.cpp); + go.add(entry.go); + previous = entry.value; + } + return { values, cpp, go }; +} + +// validateContract rejects ambiguous registries before either public target is +// rendered. The exact physical extensions are guarded here instead of relying on +// a reviewer to notice a hexadecimal value changing in a generated diff. +export function validateContract(contract) { + if (contract === null || typeof contract !== "object") { + throw new Error("protocol contract must be an object"); + } + const envelope = contract.envelope; + if (envelope === null || typeof envelope !== "object") { + throw new Error("protocol contract requires an envelope object"); + } + requireInteger(envelope.magic, "envelope.magic"); + requireInteger(envelope.reserved, "envelope.reserved"); + requireInteger(envelope.maximumPayload, "envelope.maximumPayload", 1, 247); + requireInteger(envelope.rawFrameOverhead, "envelope.rawFrameOverhead", 6, 16); + requireInteger( + envelope.maximumEncodedFrameOverhead, + "envelope.maximumEncodedFrameOverhead", + 2, + 16, + ); + + const opcodeRegistry = validateRegistry(contract.opcodes, "opcodes", ["wireName"]); + const errorRegistry = validateRegistry(contract.errors, "errors", []); + const reserved = contract.reservedOpcodes ?? []; + if (!Array.isArray(reserved)) { + throw new Error("reservedOpcodes must be an array"); + } + const reservedValues = new Set(); + for (const [index, entry] of reserved.entries()) { + if (entry === null || typeof entry !== "object") { + throw new Error(`reservedOpcodes[${index}] must be an object`); + } + requireInteger(entry.value, `reservedOpcodes[${index}].value`); + if (typeof entry.note !== "string" || entry.note.trim() === "") { + throw new Error(`reservedOpcodes[${index}].note must be descriptive`); + } + if (opcodeRegistry.values.has(entry.value) || reservedValues.has(entry.value)) { + throw new Error(`reserved opcode 0x${formatHex(entry.value)} conflicts`); + } + reservedValues.add(entry.value); + } + for (const [name, value] of requiredOpcodes) { + const entry = contract.opcodes.find((candidate) => candidate.cpp === name); + if (!entry || entry.value !== value) { + throw new Error(`${name} must remain 0x${formatHex(value)}`); + } + } + for (const [name, value] of requiredErrors) { + const entry = contract.errors.find((candidate) => candidate.cpp === name); + if (!entry || entry.value !== value) { + throw new Error(`${name} must remain ${value}`); + } + } + if (envelope.magic !== 0xA5 || envelope.reserved !== 1 || envelope.maximumPayload !== 48) { + throw new Error("the published native envelope must remain A5/reserved-1/48-byte payload"); + } + const peer = contract.pakar; + if (!peer || !peer.envelope || peer.envelope.magic !== envelope.magic || + peer.envelope.reserved !== 0 || peer.envelope.maximumPayload !== 48 || + peer.envelope.rawFrameOverhead !== 6 || peer.envelope.maximumEncodedFrameOverhead !== 2) + throw new Error("Pakar requires its fixed A5/reserved-0/48-byte envelope; no dialect fallback"); + validateRegistry(peer.opcodes, "pakar.opcodes", ["wireName"]); + validateRegistry(peer.errors, "pakar.errors", []); + return contract; +} + +function formatHex(value) { + return value.toString(16).toUpperCase().padStart(2, "0"); +} + +function generatedBanner(source) { + return [ + "// Code generated by Tools/Build/generate-protocol-contract.mjs; DO NOT EDIT.", + `// Source: ${source}`, + "", + ]; +} + +function cppEnum(entries, label) { + const lines = [`enum ${label} : uint8_t {`]; + for (const entry of entries) { + lines.push(` ${entry.cpp} = 0x${formatHex(entry.value)},`); + } + lines.push("};", ""); + return lines; +} + +function goConstBlock(entries, valueFor) { + const width = Math.max(...entries.map((entry) => entry.name.length)); + return [ + "const (", + ...entries.map( + (entry) => `\t${entry.name.padEnd(width)}${entry.type ? ` ${entry.type}` : ""} = ${valueFor(entry)}`, + ), + ")", + ]; +} + +// renderCpp keeps the established ControllerProtocol::* names and C++11-only +// surface. AVR receives no allocation, clock, or transport dependency here. +export function renderCpp(contract) { + validateContract(contract); + const { envelope, opcodes, reservedOpcodes, errors } = contract; + const reservations = new Map(reservedOpcodes.map((entry) => [entry.value, entry.note])); + const lines = [ + "#pragma once", + "", + ...generatedBanner("Project/ProtocolContract.json"), + "// Target-neutral native wire contract. Keep numeric values stable;", + "// capabilities advertise optional support rather than renumbering operations.", + "", + "#include ", + "", + "namespace ControllerProtocol {", + "namespace WireContract {", + "", + `constexpr uint8_t Magic = 0x${formatHex(envelope.magic)};`, + `constexpr uint8_t ReservedEnvelopeByte = ${envelope.reserved};`, + `constexpr uint8_t MaximumPayload = ${envelope.maximumPayload};`, + `constexpr uint8_t RawFrameOverhead = ${envelope.rawFrameOverhead};`, + "constexpr uint8_t MaximumRawFrame = MaximumPayload + RawFrameOverhead;", + `constexpr uint8_t MaximumEncodedFrame = MaximumRawFrame + ${envelope.maximumEncodedFrameOverhead};`, + "", + "// Opcode is the stable native request, response, and event registry.", + "enum Opcode : uint8_t {", + ]; + for (const entry of opcodes) { + lines.push(` ${entry.cpp} = 0x${formatHex(entry.value)},`); + const nextReservation = reservations.get(entry.value + 1); + if (nextReservation) { + lines.push(` // 0x${formatHex(entry.value + 1)} is reserved: ${nextReservation}`); + } + } + lines.push("};", "", "// Error is the compact failure code returned by ErrorResponse."); + lines.push(...cppEnum(errors, "Error")); + lines.push( + "static_assert(MaximumRawFrame < 254,", + " \"native COBS contract requires one bounded code block\");", + "static_assert(HostMenuDirectory == 0x42 && HostMenuContent == 0x43 &&", + " HostMenuStateGet == 0x44 && StatusLedChanged == 0x9E,", + " \"native opcode values are part of the wire contract\");", + "", + "} // namespace WireContract", + "", + "// Preserve the established ControllerProtocol::* source API without", + "// duplicating the generated constants in AVR storage.", + "using namespace WireContract;", + "", + "} // namespace ControllerProtocol", + "", + ); + return lines.join("\n"); +} + +// renderGo preserves the existing public native.Op* and Error* spellings so +// callers retain source compatibility while values gain one checked-in owner. +export function renderGo(contract) { + validateContract(contract); + const { envelope, opcodes, errors } = contract; + const lines = [ + ...generatedBanner("Project/ProtocolContract.json"), + "package native", + "", + ...goConstBlock( + [ + { name: "Magic", type: "byte", value: `0x${formatHex(envelope.magic)}` }, + { name: "ReservedEnvelopeByte", type: "byte", value: `${envelope.reserved}` }, + ], + (entry) => entry.value, + ), + "", + ...goConstBlock( + [ + { name: "MaxPayload", value: `${envelope.maximumPayload}` }, + { name: "RawFrameOverhead", value: `${envelope.rawFrameOverhead}` }, + { name: "MaxRawFrame", value: "MaxPayload + RawFrameOverhead" }, + { name: "MaxEncodedFrame", value: `MaxRawFrame + ${envelope.maximumEncodedFrameOverhead}` }, + ], + (entry) => entry.value, + ), + "", + ...goConstBlock( + opcodes.map((entry) => ({ + name: entry.go, + type: "byte", + value: `0x${formatHex(entry.value)}`, + })), + (entry) => entry.value, + ), + "", + ...goConstBlock( + errors.map((entry) => ({ name: entry.go, type: "byte", value: `${entry.value}` })), + (entry) => entry.value, + ), + "", + "var opcodeNames = map[byte]string{", + ...opcodes.map(entry => `\t${entry.go}: ${" ".repeat(Math.max(...opcodes.map(row => row.go.length)) - entry.go.length)}"${entry.wireName}",`), + "}", + "", + ]; + return lines.join("\n"); +} + + +// Published assignments are an independent compatibility fixture, not another +// editable output. Additions are allowed; removal, reuse and renumbering are not. +export function validatePublishedBindings(contract, published) { + validateContract(contract); + for (const [name, current] of [["controller", contract], ["pakar", contract.pakar]]) { + const previous = published[name]; + if (!previous) throw Error("Missing published namespace " + name); + for (const [key, value] of Object.entries(previous.envelope)) + if (current.envelope[key] !== value) throw Error(name + " published envelope changed: " + key); + for (const type of ["opcodes", "errors"]) for (const entry of previous[type]) { + const actual = current[type].find(row => row.cpp === entry.cpp); + if (!actual || Object.entries(entry).some(([key, value]) => actual[key] !== value)) + throw Error(name + " published binding changed: " + entry.cpp); + } + for (const reserved of previous.reservedOpcodes) { + if (current.opcodes.some(row => row.value === reserved.value) || + !current.reservedOpcodes.some(row => row.value === reserved.value)) + throw Error(name + " published reservation reused: " + reserved.value); + } + } + return contract; +} +const upper = name => name.replace(/^k(?=[A-Z])/, "").replace(/([a-z0-9])([A-Z])/g, "$1_$2").toUpperCase(); +const dartName = name => name.replace(/^k(?=[A-Z])/, "").replace(/^./, c => c.toLowerCase()); +const banner = "// Generated from PCController Project/ProtocolContract.json; DO NOT EDIT.\n"; +export function renderPakarCpp(contract) { + validateContract(contract); + const p = contract.pakar; + return banner + "#pragma once\n#include \n\nnamespace BoardCore { namespace Protocol {\n" + + "constexpr uint8_t kMagic = 0xA5;\nconstexpr uint8_t kReserved = 0;\nconstexpr uint8_t kMaximumPayload = 48;\n" + + "constexpr uint8_t kRawOverhead = 6;\nconstexpr uint8_t kMaximumRaw = kMaximumPayload + kRawOverhead;\nconstexpr uint8_t kMaximumEncoded = kMaximumRaw + 2;\n\n" + + ["Opcode", "Error"].map((type, i) => "enum " + type + " : uint8_t {\n" + + p[i ? "errors" : "opcodes"].map(r => " " + r.cpp + " = 0x" + formatHex(r.value) + ",").join("\n") + "\n};\n").join("\n") + + "\n} } // namespace BoardCore::Protocol\n"; +} +export function renderRust(contract) { + validateContract(contract); + return banner + [["pakar", contract.pakar], ["controller", contract]].map(([name, ns]) => + "#[allow(dead_code)]\npub mod " + name + " {\n" + + " pub const MAGIC: u8 = 0x" + formatHex(ns.envelope.magic) + ";\n" + + " pub const RESERVED: u8 = " + ns.envelope.reserved + ";\n" + + " pub const MAXIMUM_PAYLOAD: usize = " + ns.envelope.maximumPayload + ";\n" + + ns.opcodes.map(r => " pub const " + upper(r.cpp) + ": u8 = 0x" + formatHex(r.value) + ";").join("\n") + + "\n}\n").join("\n"); +} +export function renderDart(contract) { + validateContract(contract); + return banner + [["Pakar", contract.pakar], ["Controller", contract]].map(([name, ns]) => + "abstract final class " + name + "Opcode {\n" + + " static const magic = " + ns.envelope.magic + ";\n" + + " static const reserved = " + ns.envelope.reserved + ";\n" + + " static const maximumPayload = " + ns.envelope.maximumPayload + ";\n" + + " static const requests = {" + ns.opcodes.filter(r => r.value < 128).map(r => r.value).join(", ") + "};\n" + + ns.opcodes.map(r => " static const " + dartName(r.cpp) + " = 0x" + formatHex(r.value) + ";").join("\n") + + "\n}\n").join("\n"); +} +export function renderPowerShell(contract) { + validateContract(contract); + return "# Generated from PCController Project/ProtocolContract.json; DO NOT EDIT.\n" + + [["Pakar", contract.pakar], ["Controller", contract]].map(([name, ns]) => + "enum " + name + "Envelope { Magic = " + ns.envelope.magic + "; Reserved = " + ns.envelope.reserved + + "; MaximumPayload = " + ns.envelope.maximumPayload + " }\n" + + "enum " + name + "Opcode {\n" + ns.opcodes.map(r => + " " + r.cpp.replace(/^k(?=[A-Z])/, "") + " = " + r.value).join("\n") + "\n}\n").join("\n"); +} diff --git a/interfaces/controller-wire/source-lock.json b/interfaces/controller-wire/source-lock.json new file mode 100644 index 0000000..c0cf13b --- /dev/null +++ b/interfaces/controller-wire/source-lock.json @@ -0,0 +1,10 @@ +{ + "owner": "atomicdeploy/PCController", + "commit": "3b8fabe6b4833262a2b76f64c2ef648c8b4c8e96", + "files": { + "Project/ProtocolContract.json": "b72621de05550b724eeb312276b9cff8a86003e4acec3fcee860418f60944eb9", + "interfaces/controller-wire/registry.mjs": "4c9b408145ce8db277fd312262b77106129c931398f50b66ff18cea14f9d7694", + "interfaces/controller-wire/published.json": "eb66e7453bdf246bf03a6ea6bd90ab340b9f7716941119d33a7f828225e6010c", + "interfaces/controller-wire/consumer.mjs": "51ca4aaa9cb8f1ba74cabc001be34c8ec82a90d14a27e6b4ed793d72c7660484" + } +} diff --git a/libraries/BoardCore/src/Protocol.h b/libraries/BoardCore/src/Protocol.h index 481e63c..c455788 100644 --- a/libraries/BoardCore/src/Protocol.h +++ b/libraries/BoardCore/src/Protocol.h @@ -4,94 +4,12 @@ #include #include "WireCodec.h" +#include "ProtocolOpcodes.h" namespace BoardCore { namespace Protocol { -constexpr uint8_t kMagic = 0xA5; -// Fixed reserved byte. Evolution uses opcodes/capabilities, not generations. -constexpr uint8_t kReserved = 0; -constexpr uint8_t kMaximumPayload = 48; -constexpr uint8_t kRawOverhead = 6; -constexpr uint8_t kMaximumRaw = kMaximumPayload + kRawOverhead; -constexpr uint8_t kMaximumEncoded = kMaximumRaw + 2; - -enum Opcode : uint8_t { - kHello = 0x01, - kGetStatus = 0x02, - kSetStreamPeriod = 0x03, - kBuzzer = 0x10, - kAudioCue = 0x11, - kAudioStream = 0x12, // Bounded AVR tone ring: action,id16,offset16,packed steps. - kAudioStreamResponse = 0xBC, // error,id16,nextOffset16,credits,state,muted. - kDisplayText = 0x38, - kSetMode = 0x4B, - kCellAction = 0x4C, - kGameReset = 0x4D, - kOutputMask = 0x4E, - kPing = 0x4F, - kProgrammingState = 0x50, - kSetBrightness = 0x51, - kSetLedPattern = 0x52, - kNetworkConfig = 0x53, - kAccessConfig = 0x54, // ESP physical USB only: reset staging, user/password chunks, commit. - kDeviceName = 0x55, // ESP physical USB: reset(0), label chunks(1), persist/apply(2). - kPcContract = 0x56, // [PCController opcode, payload]; isolated from legacy 0x11 audio. - kPcContractChunk = 0x57, // Full 48-byte donor request, bounded two-frame assembly. - kGetTelemetry = 0x58, // Read-only; does not renew PCController's host/control lease. - kGetIdentity = 0x59, // ESP USB: [nonce, offset16], bounded read-only identity chunks. - kEspPanel = 0x5A, // Paired ESP settings: state offer or AVR physical-menu action. - kAvrRxDiagnostic = 0x5B, // Physical ESP USB only, quiet S3 build: bounded RX-only capture. - kSetLedOutput = 0x5C, // ESP only: one boolean; independent of presentation/game mode. - kGetTableSnapshot = 0x5D, // USB [nonce,offset16,token32]; zero token/offset captures immutable table state. - kTableCommand = 0x5E, // USB [boot_id16,inner opcode,<=31 bytes]; bounded table-only, ACK names inner opcode. - kCellsAction = 0x5F, // ESP only: [state,effect,10-byte logical-cell bitmap], one atomic loop-owner update. - kShellRequest = 0x60, // ESP only: boot-fenced Open, token/sequence Input, Close and bounded output Poll. - kPeerReport = 0x61, // USB: [totalLE16,offsetLE16,<=44 JSON bytes], bounded sequential peer introduction. - kCellAssignments = 0x62, // ESP table-selection: selection bitmap10 + two-bit states20; one atomic transaction. - kCellLock = 0x63, // ESP table-selection: enabled boolean; persistent red-to-white guard. - kHostDemand = 0x64, // ESP USB: [flagsLE16,leaseMsLE16]; zero pair releases optional observations. - kPixelDiagnostic = 0x65, // Boot-fenced table inner: [indexLE16,count,R,G,B,off]; one pixel or six aligned pixels. - kKeyMask = 0x66, // Paired first-wins AVR: keys LE16, optional winner/reset cue bytes when HELLO[16] ACKs support; 255=silent. - kKeySettings = 0x67, // ESP fenced patch: mask8, keys16, RGB24 x3, effects8, autoReset32; optional winner/reset bytes17/18 via mask64/128. - kGamePress = 0x68, // One enabled key (1..9), same first-winner latch as physical Down. - kKeyPresentation = 0x69, // Fenced ESP patch: global [0,count,on16,gap16,fade16,pulse16,chase16] or group [1,id,override,winRGB24,loseRGB24,winMotion,loseMotion]. - kUsbApi = 0x6A, // Bounded boot-fenced API transaction; see UsbApiRequest.h. - kUsbApiResponse = 0xBD, // [action,token32,total16,offset16,<=39 response bytes]. - kHostDemandResponse = 0xBA, // Correlated [effectiveFlagsLE16,remainingMsLE16], not an actuator ACK. - kShellResponse = 0xB9, // Encapsulated terminal output; no raw bytes interleaved with COBS. - kTableSnapshotResponse = 0xB6, // [nonce,token32,total16,offset16,<=39 immutable JSON bytes]. - kTableCommandState = 0xB7, // Post-ACK readback: inner opcode, boot16, 7 scalar fields, 80 packed two-bit cell states. - kPanelEvent = 0xB8, // ESP semantic presentation event; requested, NOT confirmed segment rendering. - kAvrRxDiagnosticResponse = 0xB4, // Action/error + actual capture/pad observations; never AVR ACK. - kResetTelemetryResponse = 0xB5, // [MCUSR cause,countLE32,journal_verified]; optional GET_TELEMETRY companion. - kEspPanelResponse = 0xB3, // Correlated action, error and authoritative ESP readback. - kIdentityResponse = 0xB2, // [nonce, revision32, total16, offset16, <=39 JSON bytes]. - kTelemetryResponse = 0xB1, // 46 bytes; actual AVR observations. - kPcContractResponse = 0xB0, // [PCController response opcode, payload]. - - kAck = 0x80, - kHelloResponse = 0x81, - kErrorResponse = 0x82, - kStatusResponse = 0x90, - kGameState = 0xA3, - kInputEvent = 0xA4, - kCellEvent = 0xA5, - kPong = 0xA6, -}; - -enum Error : uint8_t { - kNoError = 0, - kBadEnvelope = 1, - kUnsupported = 2, - kBadPayload = 3, - kHardwareUnavailable = 4, - kBusy = 5, - kUnsafe = 6, - kRedCellsLocked = 7, - kInvalidCellAssignments = 8, - kUnsupportedBoardRole = 9, -}; +// Envelope, opcodes and errors come from the canonical generated registry. enum DeviceRole : uint8_t { kRoleAvr = 1, kRoleEsp = 2, kRoleHost = 3 }; diff --git a/libraries/BoardCore/src/ProtocolOpcodes.h b/libraries/BoardCore/src/ProtocolOpcodes.h new file mode 100644 index 0000000..003eff4 --- /dev/null +++ b/libraries/BoardCore/src/ProtocolOpcodes.h @@ -0,0 +1,89 @@ +// Generated from PCController Project/ProtocolContract.json; DO NOT EDIT. +#pragma once +#include + +namespace BoardCore { namespace Protocol { +constexpr uint8_t kMagic = 0xA5; +constexpr uint8_t kReserved = 0; +constexpr uint8_t kMaximumPayload = 48; +constexpr uint8_t kRawOverhead = 6; +constexpr uint8_t kMaximumRaw = kMaximumPayload + kRawOverhead; +constexpr uint8_t kMaximumEncoded = kMaximumRaw + 2; + +enum Opcode : uint8_t { + kHello = 0x01, + kGetStatus = 0x02, + kSetStreamPeriod = 0x03, + kBuzzer = 0x10, + kAudioCue = 0x11, + kAudioStream = 0x12, + kDisplayText = 0x38, + kSetMode = 0x4B, + kCellAction = 0x4C, + kGameReset = 0x4D, + kOutputMask = 0x4E, + kPing = 0x4F, + kProgrammingState = 0x50, + kSetBrightness = 0x51, + kSetLedPattern = 0x52, + kNetworkConfig = 0x53, + kAccessConfig = 0x54, + kDeviceName = 0x55, + kPcContract = 0x56, + kPcContractChunk = 0x57, + kGetTelemetry = 0x58, + kGetIdentity = 0x59, + kEspPanel = 0x5A, + kAvrRxDiagnostic = 0x5B, + kSetLedOutput = 0x5C, + kGetTableSnapshot = 0x5D, + kTableCommand = 0x5E, + kCellsAction = 0x5F, + kShellRequest = 0x60, + kPeerReport = 0x61, + kCellAssignments = 0x62, + kCellLock = 0x63, + kHostDemand = 0x64, + kPixelDiagnostic = 0x65, + kKeyMask = 0x66, + kKeySettings = 0x67, + kGamePress = 0x68, + kKeyPresentation = 0x69, + kUsbApi = 0x6A, + kAck = 0x80, + kHelloResponse = 0x81, + kErrorResponse = 0x82, + kStatusResponse = 0x90, + kGameState = 0xA3, + kInputEvent = 0xA4, + kCellEvent = 0xA5, + kPong = 0xA6, + kPcContractResponse = 0xB0, + kTelemetryResponse = 0xB1, + kIdentityResponse = 0xB2, + kEspPanelResponse = 0xB3, + kAvrRxDiagnosticResponse = 0xB4, + kResetTelemetryResponse = 0xB5, + kTableSnapshotResponse = 0xB6, + kTableCommandState = 0xB7, + kPanelEvent = 0xB8, + kShellResponse = 0xB9, + kHostDemandResponse = 0xBA, + kAudioStreamResponse = 0xBC, + kUsbApiResponse = 0xBD, +}; + +enum Error : uint8_t { + kNoError = 0x00, + kBadEnvelope = 0x01, + kUnsupported = 0x02, + kBadPayload = 0x03, + kHardwareUnavailable = 0x04, + kBusy = 0x05, + kUnsafe = 0x06, + kRedCellsLocked = 0x07, + kInvalidCellAssignments = 0x08, + kUnsupportedBoardRole = 0x09, +}; + +} } // namespace BoardCore::Protocol diff --git a/mobile/lib/protocol_opcodes.dart b/mobile/lib/protocol_opcodes.dart new file mode 100644 index 0000000..7841b54 --- /dev/null +++ b/mobile/lib/protocol_opcodes.dart @@ -0,0 +1,143 @@ +// Generated from PCController Project/ProtocolContract.json; DO NOT EDIT. +abstract final class PakarOpcode { + static const magic = 165; + static const reserved = 0; + static const maximumPayload = 48; + static const requests = {1, 2, 3, 16, 17, 18, 56, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106}; + static const hello = 0x01; + static const getStatus = 0x02; + static const setStreamPeriod = 0x03; + static const buzzer = 0x10; + static const audioCue = 0x11; + static const audioStream = 0x12; + static const displayText = 0x38; + static const setMode = 0x4B; + static const cellAction = 0x4C; + static const gameReset = 0x4D; + static const outputMask = 0x4E; + static const ping = 0x4F; + static const programmingState = 0x50; + static const setBrightness = 0x51; + static const setLedPattern = 0x52; + static const networkConfig = 0x53; + static const accessConfig = 0x54; + static const deviceName = 0x55; + static const pcContract = 0x56; + static const pcContractChunk = 0x57; + static const getTelemetry = 0x58; + static const getIdentity = 0x59; + static const espPanel = 0x5A; + static const avrRxDiagnostic = 0x5B; + static const setLedOutput = 0x5C; + static const getTableSnapshot = 0x5D; + static const tableCommand = 0x5E; + static const cellsAction = 0x5F; + static const shellRequest = 0x60; + static const peerReport = 0x61; + static const cellAssignments = 0x62; + static const cellLock = 0x63; + static const hostDemand = 0x64; + static const pixelDiagnostic = 0x65; + static const keyMask = 0x66; + static const keySettings = 0x67; + static const gamePress = 0x68; + static const keyPresentation = 0x69; + static const usbApi = 0x6A; + static const ack = 0x80; + static const helloResponse = 0x81; + static const errorResponse = 0x82; + static const statusResponse = 0x90; + static const gameState = 0xA3; + static const inputEvent = 0xA4; + static const cellEvent = 0xA5; + static const pong = 0xA6; + static const pcContractResponse = 0xB0; + static const telemetryResponse = 0xB1; + static const identityResponse = 0xB2; + static const espPanelResponse = 0xB3; + static const avrRxDiagnosticResponse = 0xB4; + static const resetTelemetryResponse = 0xB5; + static const tableSnapshotResponse = 0xB6; + static const tableCommandState = 0xB7; + static const panelEvent = 0xB8; + static const shellResponse = 0xB9; + static const hostDemandResponse = 0xBA; + static const audioStreamResponse = 0xBC; + static const usbApiResponse = 0xBD; +} + +abstract final class ControllerOpcode { + static const magic = 165; + static const reserved = 1; + static const maximumPayload = 48; + static const requests = {1, 2, 3, 4, 5, 6, 16, 17, 18, 20, 21, 22, 23, 24, 25, 32, 33, 34, 35, 36, 37, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73}; + static const hello = 0x01; + static const getStatus = 0x02; + static const setStreamPeriod = 0x03; + static const getSettings = 0x04; + static const setSettings = 0x05; + static const temperatureList = 0x06; + static const buzzer = 0x10; + static const pwmSet = 0x11; + static const pwmAllOff = 0x12; + static const statusRgb = 0x14; + static const pwmGet = 0x15; + static const addressableLed = 0x16; + static const statusEffect = 0x17; + static const statusProfileGet = 0x18; + static const statusProfileSet = 0x19; + static const radioTransmit = 0x20; + static const radioLearnStart = 0x21; + static const radioLearnCancel = 0x22; + static const radioLearnClear = 0x23; + static const radioLearnList = 0x24; + static const radioLearnRemove = 0x25; + static const menuAction = 0x30; + static const relaySet = 0x31; + static const relaySide = 0x32; + static const relayAllOff = 0x33; + static const relayTest = 0x34; + static const reset = 0x35; + static const i2cTransfer = 0x36; + static const menuSetPage = 0x37; + static const displayText = 0x38; + static const macroStart = 0x39; + static const macroCancel = 0x3A; + static const macroStep = 0x3B; + static const frontPanelGet = 0x3C; + static const remoteKeyGesture = 0x3D; + static const menuList = 0x3E; + static const radioLearnReplace = 0x3F; + static const menuLayoutGet = 0x40; + static const menuLayoutSet = 0x41; + static const hostMenuDirectory = 0x42; + static const hostMenuContent = 0x43; + static const hostMenuStateGet = 0x44; + static const programState = 0x45; + static const automationList = 0x46; + static const automationPut = 0x47; + static const automationRemove = 0x48; + static const automationClear = 0x49; + static const ack = 0x80; + static const helloResponse = 0x81; + static const errorResponse = 0x82; + static const statusResponse = 0x90; + static const settingsResponse = 0x91; + static const pwmValuesResponse = 0x92; + static const i2cTransferResponse = 0x93; + static const radioLearnListResponse = 0x94; + static const temperatureListResponse = 0x95; + static const frontPanelResponse = 0x96; + static const menuListResponse = 0x97; + static const macroStatusResponse = 0x98; + static const menuLayoutResponse = 0x99; + static const hostMenuContentRequest = 0x9A; + static const hostMenuStateResponse = 0x9B; + static const segmentChanged = 0x9C; + static const buzzerChanged = 0x9D; + static const statusLedChanged = 0x9E; + static const statusProfileResponse = 0x9F; + static const event = 0xA0; + static const automationListResponse = 0xA1; + static const automationRecordResponse = 0xA2; +} diff --git a/mobile/lib/usb_transport.dart b/mobile/lib/usb_transport.dart index 317843a..fd3468a 100644 --- a/mobile/lib/usb_transport.dart +++ b/mobile/lib/usb_transport.dart @@ -1,6 +1,8 @@ import 'dart:async'; import 'dart:convert'; +import 'protocol_opcodes.dart'; + import 'package:flutter/services.dart'; import 'models.dart'; @@ -35,7 +37,10 @@ class UsbFrame { if (payload.length > 48 || payload.any((b) => b < 0 || b > 255)) { throw const FormatException('USB payload exceeds 48 bytes'); } - final raw = [165, 0, opcode, sequence, payload.length, ...payload]; + if (opcode < 0 || opcode > 255 || sequence < 0 || sequence > 255) { + throw const FormatException('USB opcode/sequence is not a byte'); + } + final raw = [PakarOpcode.magic, PakarOpcode.reserved, opcode, sequence, payload.length, ...payload]; raw.add(crc(raw)); final out = [0]; var at = 0, code = 1; @@ -75,8 +80,8 @@ class UsbFrame { } } if (raw.length < 6 || - raw[0] != 165 || - raw[1] != 0 || + raw[0] != PakarOpcode.magic || + raw[1] != PakarOpcode.reserved || raw[4] > 48 || raw.length != raw[4] + 6 || crc(raw.take(raw.length - 1)) != raw.last) { @@ -202,7 +207,7 @@ class PakarUsbTransport { 'USB application release is not representable', ); } - final hello = await _exchange(1, [3, ...version.parts], {0x81}); + final hello = await _exchange(PakarOpcode.hello, [3, ...version.parts], {PakarOpcode.helloResponse}); if (hello.payload.length < 9 || hello.payload[1] != 2) { throw const FormatException('USB HELLO is not an ESP board'); } @@ -211,7 +216,7 @@ class PakarUsbTransport { ); for (var offset = 0; offset < report.length; offset += 44) { final end = (offset + 44).clamp(0, report.length); - await _ack(0x61, [ + await _ack(PakarOpcode.peerReport, [ ..._u16(report.length), ..._u16(offset), ...report.sublist(offset, end), @@ -299,27 +304,27 @@ class PakarUsbTransport { final pending = _pending[frame.sequence]; if (pending != null && (_expected[frame.sequence]!.contains(frame.opcode) || - frame.opcode == 0x82)) { + frame.opcode == PakarOpcode.errorResponse)) { _pending.remove(frame.sequence); _expected.remove(frame.sequence); pending.complete(frame); } else if (ready && - frame.opcode == 0xb8 && + frame.opcode == PakarOpcode.panelEvent && (_captureAge?.elapsedMilliseconds ?? 8000) < 8000) { final value = _panelEvent(frame.payload); if (value != null) { events.add(value); } } else if (ready && (frame.sequence == 0 || frame.sequence == 254)) { - if (frame.opcode == 0x90 || - frame.opcode == 0xa5 || - frame.opcode == 0xa3) { + if (frame.opcode == PakarOpcode.statusResponse || + frame.opcode == PakarOpcode.cellEvent || + frame.opcode == PakarOpcode.gameState) { events.add({ 'type': 'changed', 'board_id': latest!.json['board_id'], 'boot_id': latest!.json['boot_id'], }); - } else if (frame.opcode == 0xb8 || frame.opcode == 0xb0) { + } else if (frame.opcode == PakarOpcode.panelEvent || frame.opcode == PakarOpcode.pcContractResponse) { events.add({ 'type': 'usb-peripheral', 'opcode': frame.opcode, @@ -413,7 +418,7 @@ class PakarUsbTransport { if (owner != _epoch) { throw const FormatException('USB owner retired'); } - if (frame.opcode == 0x82) { + if (frame.opcode == PakarOpcode.errorResponse) { throw FormatException( 'Board rejected USB request 0x${op.toRadixString(16)} (code ${frame.payload.length > 1 ? frame.payload[1] : "unknown"}); not retried', ); @@ -426,7 +431,7 @@ class PakarUsbTransport { } Future _ack(int op, List p) async { - final frame = await _exchange(op, p, {0x80}); + final frame = await _exchange(op, p, {PakarOpcode.ack}); if (frame.payload.length != 2 || frame.payload[0] != op || frame.payload[1] != 0) { @@ -451,13 +456,13 @@ class PakarUsbTransport { await _renewDemand(); } final f = await _exchange( - 0x5d, + PakarOpcode.getTableSnapshot, [ _nonce, ..._u16(bytes.length), ...List.generate(4, (i) => token >> (8 * i) & 255), ], - {0xb6}, + {PakarOpcode.tableSnapshotResponse}, ); final p = f.payload; if (p.length < 10 || p[0] != _nonce || _le(p, 7, 2) != bytes.length) { @@ -625,9 +630,9 @@ class PakarUsbTransport { } final flags = _foreground ? _demand | (_diagnosticPixels ? 8 : 0) : 0; final response = await _exchange( - 0x64, + PakarOpcode.hostDemand, [..._u16(flags), ..._u16(flags == 0 ? 0 : 3000)], - {0xba}, + {PakarOpcode.hostDemandResponse}, ); if (response.payload.length != 4 || _le(response.payload, 0, 2) != flags || @@ -719,7 +724,7 @@ class PakarUsbTransport { } if (_demandAge.elapsedMilliseconds >= 900) await _renewDemand(); admit(); - final frame = await _exchange(0x6a, [action, ...payload], {0xbd}); + final frame = await _exchange(PakarOpcode.usbApi, [action, ...payload], {PakarOpcode.usbApiResponse}); admit(); final p = frame.payload; if (p.length < 9 || @@ -795,7 +800,7 @@ class PakarUsbTransport { } finally { if (token != 0 && owner == _epoch && ready && authorize()) { try { - await _ack(0x6a, [4, ...tokenBytes()]); + await _ack(PakarOpcode.usbApi, [4, ...tokenBytes()]); } on Object { /* No replay. */ } @@ -1071,7 +1076,7 @@ class PakarUsbTransport { 'Acknowledged AVR game press unavailable', ); } - op = 0x68; + op = PakarOpcode.gamePress; payload = [integer('key', 1, 9)]; case '/api/game/settings': if (values.containsKey('presentation')) { @@ -1085,7 +1090,7 @@ class PakarUsbTransport { if (current is! Map) { throw const FormatException('Presentation readback unavailable'); } - op = 0x69; + op = PakarOpcode.keyPresentation; if (patch.containsKey('groups')) { final groups = patch['groups'] as List; if (patch.length != 1 || groups.length != 1) { @@ -1144,7 +1149,7 @@ class PakarUsbTransport { if (hasMelodies && !features.has('game-melodies')) { throw const FormatException('USB game melodies not acknowledged'); } - op = 0x67; + op = PakarOpcode.keySettings; payload = List.filled(hasMelodies ? 19 : 17, 0); const fields = [ 'enabled_mask', @@ -1181,7 +1186,7 @@ class PakarUsbTransport { if (!features.has('leds')) { throw const FormatException('USB LEDs not acknowledged'); } - op = 0x4c; + op = PakarOpcode.cellAction; payload = [ integer('id', 1, 80), state(values['state']), @@ -1196,7 +1201,7 @@ class PakarUsbTransport { for (final id in ids) { bitmap[(id - 1) ~/ 8] |= 1 << ((id - 1) % 8); } - op = 0x5f; + op = PakarOpcode.cellsAction; payload = [ state(values['state']), _effect(values['effect']), @@ -1215,19 +1220,19 @@ class PakarUsbTransport { bitmap[i ~/ 8] |= 1 << (i % 8); packed[i ~/ 4] |= state(entry.value) << ((i % 4) * 2); } - op = 0x62; + op = PakarOpcode.cellAssignments; payload = [...bitmap, ...packed]; case '/api/cells/lock': if (!features.has('cell-lock')) { throw const FormatException('USB lock not acknowledged'); } - op = 0x63; + op = PakarOpcode.cellLock; payload = [_boolean(values['enabled'])]; case '/api/brightness': - op = 0x51; + op = PakarOpcode.setBrightness; payload = [integer('value', 1, 255)]; case '/api/effect': - op = 0x52; + op = PakarOpcode.setLedPattern; payload = [ switch (values['value']) { 'none' => 0, @@ -1241,7 +1246,7 @@ class PakarUsbTransport { if (values['value'] != before.mode) { throw const FormatException('This board has one baked-in game mode'); } - op = 0x4b; + op = PakarOpcode.setMode; payload = [ switch (values['value']) { 'cell' => 1, @@ -1256,10 +1261,10 @@ class PakarUsbTransport { 'Acknowledged game reset is not supported by this firmware', ); } - op = 0x4d; + op = PakarOpcode.gameReset; payload = []; case '/api/led/output': - op = 0x5c; + op = PakarOpcode.setLedOutput; if (values.containsKey('backend') && !features.allows(path, values)) { throw const FormatException( 'This LED transmitter is not available on the connected board', @@ -1301,7 +1306,7 @@ class PakarUsbTransport { } _diagnosticPixels = true; await _renewDemand(); - op = 0x65; + op = PakarOpcode.pixelDiagnostic; payload = [ ..._u16(index), count, @@ -1326,15 +1331,15 @@ class PakarUsbTransport { ); } // One physical dispatch only. ACK is not accepted as an applied state. - final reply = await _exchange(0x5e, [...fence, op, ...payload], {0x80}); + final reply = await _exchange(PakarOpcode.tableCommand, [...fence, op, ...payload], {PakarOpcode.ack}); if (reply.payload.length != 2 || reply.payload[0] != op || reply.payload[1] != 0) { throw const FormatException('USB command receipt mismatch; no replay'); } var actual = await _snapshot(); - if (op == 0x67 && gameMelodyPatch(values) || - op == 0x5c && values.containsKey('backend')) { + if (op == PakarOpcode.keySettings && gameMelodyPatch(values) || + op == PakarOpcode.setLedOutput && values.containsKey('backend')) { // The ESP persists first; AVR playback configuration settles on its next // service turn. Observe that receipt without replaying the mutation. final started = Stopwatch()..start(); @@ -1345,7 +1350,7 @@ class PakarUsbTransport { actual.json['boot_id'] != before.json['boot_id']) { throw const FormatException('Command owner retired; no replay'); } - if (op == 0x5c) { + if (op == PakarOpcode.setLedOutput) { final driver = LedBackendState.fromStatus(actual.json); if (driver?.failed == true) { throw FormatException(driver!.failureDescription); @@ -1355,7 +1360,7 @@ class PakarUsbTransport { actual = await _snapshot(); } } - if (op == 0x65) { + if (op == PakarOpcode.pixelDiagnostic) { final start = Stopwatch()..start(); while ((actual.json['pixel_frame'] as Map?)?['pending'] == true && start.elapsed < const Duration(seconds: 5)) { @@ -1380,22 +1385,22 @@ class PakarUsbTransport { 'USB command owner retired; outcome not claimed', ); } - if ((op == 0x67 || op == 0x69) && + if ((op == PakarOpcode.keySettings || op == PakarOpcode.keyPresentation) && !commandReadbackMatches(actual, path, values) || - op == 0x4d && + op == PakarOpcode.gameReset && (actual.winner != 0 || actual.effect != 'none' || actual.ledOutputEnabled != true) || - op == 0x4c && actual.json['cells'][payload[0] - 1] != values['state'] || - op == 0x5f && + op == PakarOpcode.cellAction && actual.json['cells'][payload[0] - 1] != values['state'] || + op == PakarOpcode.cellsAction && _ids(values['ids']) .any((id) => actual.json['cells'][id - 1] != values['state']) || - op == 0x63 && actual.json['red_lock'] != (payload[0] == 1) || - op == 0x51 && actual.brightness != payload[0] || - op == 0x52 && actual.effect != values['value'] || - op == 0x4b && actual.mode != values['value'] || - op == 0x5c && !commandReadbackMatches(actual, path, values) || - op == 0x62 && + op == PakarOpcode.cellLock && actual.json['red_lock'] != (payload[0] == 1) || + op == PakarOpcode.setBrightness && actual.brightness != payload[0] || + op == PakarOpcode.setLedPattern && actual.effect != values['value'] || + op == PakarOpcode.setMode && actual.mode != values['value'] || + op == PakarOpcode.setLedOutput && !commandReadbackMatches(actual, path, values) || + op == PakarOpcode.cellAssignments && CellAssignments.fromRows(jsonDecode(values['assignments']!)) .values .entries @@ -1445,7 +1450,10 @@ class PakarUsbTransport { if (!ready) { throw const FormatException('USB board not ready'); } - return _exchange(0x56, [opcode, ...payload], {0xb0}); + if (!ControllerOpcode.requests.contains(opcode)) { + throw const FormatException('Unknown controller request; no dialect fallback'); + } + return _exchange(PakarOpcode.pcContract, [opcode, ...payload], {PakarOpcode.pcContractResponse}); }); Future cue(String cue) => _exclusive(() async { const names = [ @@ -1469,7 +1477,7 @@ class PakarUsbTransport { if (index < 0 || latest?.audioCues.contains(cue) != true) { throw const FormatException('Melody not acknowledged by this USB board'); } - await _ack(0x11, [index]); + await _ack(PakarOpcode.audioCue, [index]); }); Future boardSound({bool? silent}) => _exclusive(() async { if (latest?.avrOnline != true || @@ -1478,8 +1486,8 @@ class PakarUsbTransport { throw const FormatException('USB AVR sound settings unavailable'); } Future read() async { - final f = await _exchange(0x56, [4], {0xb0}); - if (f.payload.length != 23 || f.payload.first != 0x91) { + final f = await _exchange(PakarOpcode.pcContract, [ControllerOpcode.getSettings], {PakarOpcode.pcContractResponse}); + if (f.payload.length != 23 || f.payload.first != ControllerOpcode.settingsResponse) { throw const FormatException('USB AVR settings response does not match'); } return BoardSound.parse(BoardSound.encode(f.payload.skip(1))); @@ -1495,10 +1503,10 @@ class PakarUsbTransport { for (var i = 0; i < expected.length; i += 2) int.parse(expected.substring(i, i + 2), radix: 16), ]; - final reply = await _exchange(0x56, [5, ...bytes], {0xb0}); + final reply = await _exchange(PakarOpcode.pcContract, [ControllerOpcode.setSettings, ...bytes], {PakarOpcode.pcContractResponse}); if (reply.payload.length != 3 || - reply.payload[0] != 0x80 || - reply.payload[1] != 5 || + reply.payload[0] != ControllerOpcode.ack || + reply.payload[1] != ControllerOpcode.setSettings || reply.payload[2] != 0) { throw const FormatException('USB AVR settings ACK mismatch; no replay'); } @@ -1540,7 +1548,7 @@ class PakarUsbTransport { repeat < 0) { throw const FormatException('Invalid display timing'); } - await _ack(0x38, [ + await _ack(PakarOpcode.displayText, [ 5, ..._u16(speed), text.length, diff --git a/mobile/test/usb_transport_test.dart b/mobile/test/usb_transport_test.dart index 78298e1..f831f8e 100644 --- a/mobile/test/usb_transport_test.dart +++ b/mobile/test/usb_transport_test.dart @@ -10,6 +10,7 @@ import 'package:pakarcontroller/usb_transport.dart'; import 'package:pakarcontroller/lan_resolver.dart'; import 'package:pakarcontroller/pixel_diagnostic.dart'; import 'package:pakarcontroller/models.dart' show audioCueNames; +import 'package:pakarcontroller/protocol_opcodes.dart'; class UsbFixture { UsbFixture() { @@ -197,6 +198,29 @@ class UsbFixture { } void main() { + test('opcode namespaces never fall back across valid-CRC frames', () { + List encoded(List raw) { + raw.add(UsbFrame.crc(raw)); + final out = [0]; + var at = 0, code = 1; + for (final value in raw) { + if (value == 0) { out[at] = code; at = out.length; out.add(0); code = 1; } + else { out.add(value); code++; } + } + out[at] = code; + return out; + } + for (var discriminator = 1; discriminator < 256; discriminator++) { + expect(UsbFrame.decode(encoded([165, discriminator, 0x11, 7, 1, 4])), isNull); + } + final current = UsbFrame(PakarOpcode.audioCue, 7, [4]).encode(); + expect(UsbFrame.decode(current.sublist(0, current.length-1))!.opcode, PakarOpcode.audioCue); + expect(() => UsbFrame(0x111, 7, []).encode(), throwsFormatException); + final optional = UsbFrame(0xfc, 7, []).encode(); + expect(UsbFrame.decode(optional.sublist(0, optional.length-1))!.opcode, 0xfc); + expect(ControllerOpcode.requests.contains(ControllerOpcode.pwmSet), isTrue); + expect(ControllerOpcode.requests.contains(ControllerOpcode.ack), isFalse); + }); test('COBS rejects embedded delimiters even with a valid envelope CRC', () { final raw = [165, 0, 1, 1, 0]; raw.add(UsbFrame.crc(raw)); diff --git a/tests/device_network_script_test.ps1 b/tests/device_network_script_test.ps1 index 7223e31..787f285 100644 --- a/tests/device_network_script_test.ps1 +++ b/tests/device_network_script_test.ps1 @@ -80,5 +80,19 @@ $taskText=Get-Content -LiteralPath $taskSource -Raw Assert ($taskText -match 'SecureStringToBSTR' -and $taskText -match 'ZeroFreeBSTR' -and $taskText -notmatch 'PtrToStringBSTR') 'Secret copied into an immutable managed string' Assert ($taskText -match 'DtrEnable=\$false;\$serial.RtsEnable=\$false') 'DTR/RTS reset safety missing' Assert ($taskText -match '\[Array\]::Clear\(\$passwordBytes') 'Secret buffer clearing missing' -Assert ($taskText.IndexOf('Assert-PakarNetworkEspHello $hello') -lt $taskText.IndexOf('$null=Send-PakarNetworkRequest $serial 0x53')) 'Mutation preceded peer verification' +$taskMutations=@($taskAst.FindAll({param($node) + $node -is [Management.Automation.Language.CommandAst] -and + $node.GetCommandName() -eq 'Send-PakarNetworkRequest' -and + $node.Extent.Text.Contains('[PakarOpcode]::NetworkConfig') +},$true)) +Assert ($taskMutations.Count -gt 0) 'Network mutation AST was not found' +foreach($taskGate in @('Assert-PakarNetworkEspHello','Assert-PakarToolUsbHello')){ + $taskChecks=@($taskAst.FindAll({param($node) + $node -is [Management.Automation.Language.CommandAst] -and $node.GetCommandName() -eq $taskGate + },$true)) + Assert ($taskChecks.Count -eq 1) 'Missing or ambiguous commissioning peer gate' + foreach($taskMutation in $taskMutations){ + Assert ($taskChecks[0].Extent.EndOffset -lt $taskMutation.Extent.StartOffset) 'Mutation preceded peer verification' + } +} Write-Output 'USB network commissioning host contracts pass: COBS/CRC, role, strict ACK, overlength drop, uncertainty no-replay, mode readback and buffer hygiene; no serial device was opened.' diff --git a/tests/host_demand_source_test.mjs b/tests/host_demand_source_test.mjs index 03ade13..9910f74 100644 --- a/tests/host_demand_source_test.mjs +++ b/tests/host_demand_source_test.mjs @@ -16,7 +16,11 @@ assert(disconnected.includes('hostFrameIngress.discard()')); assert(disconnected.includes('hostLink.discardInput();hostLink.begin(115200,onHostFrameIngress)')); assert(disconnected.indexOf('hostLink.discardInput()')=0,'Snapshot definition missing'); +const snapshotEnd=main.indexOf('void configureNtp()',snapshotStart); +assert(snapshotEnd>snapshotStart,'Snapshot boundary missing; do not match an earlier forward declaration'); +const snapshot=main.slice(snapshotStart,snapshotEnd); assert(snapshot.includes('if(includePixels)suffix+=grid.pixelFrameJson();else suffix+=F("null")')); assert(main.includes('(capturedPixels&&!hostDemand.wants(UsbDemand::Pixels,millis()))')); assert(main.includes('offset+count==total)'),'last chunk retires the retained capture'); diff --git a/tests/opcode_registry_test.mjs b/tests/opcode_registry_test.mjs new file mode 100644 index 0000000..282da08 --- /dev/null +++ b/tests/opcode_registry_test.mjs @@ -0,0 +1,20 @@ +import assert from 'node:assert/strict'; +import {readFileSync} from 'node:fs'; +const read = path => readFileSync(new URL('../'+path, import.meta.url),'utf8'); +const protocol = read('libraries/BoardCore/src/Protocol.h'); +assert(protocol.includes('#include "ProtocolOpcodes.h"')); +assert(!/enum\s+(Opcode|Error)\s*:/.test(protocol), 'Do not recreate an independent firmware registry'); +const native = ['main','cell_batch','panel_event','peer_identity','usb_api','usb_demand','usb_table']; +for (const module of native) { + const source = read('desktop/src/'+module+'.rs'); + assert(!/(?:pub )?const\s+(?:OP_\w+|OPCODE|USB_OPCODE|USB_REPORT|READ|RESPONSE|COMMAND|COMMAND_STATE|REQUEST):\s*u8\s*=\s*(?:0x|\d)/.test(source), + module+': numeric opcode definitions must be generated references'); +} +const dart = read('mobile/lib/usb_transport.dart'); +assert(dart.includes("import 'protocol_opcodes.dart'")); +assert(!/_(?:ack|exchange)\(\s*(?:0x|\d)/.test(dart), 'USB commands cannot use inline numbers'); +assert(!/frame\.opcode\s*==\s*(?:0x|\d)/.test(dart), 'USB responses cannot use inline numbers'); +assert(dart.includes('ControllerOpcode.requests.contains(opcode)'), 'Explicit tunnel must reject non-request values'); +assert(dart.includes('raw[1] != PakarOpcode.reserved')); +assert(read('desktop/src/main.rs').includes('raw[1] != wire::RESERVED')); +console.log('Firmware, Rust and Flutter opcode bindings have one generated owner; explicit namespace admission retained.'); diff --git a/tests/protocol_test.cpp b/tests/protocol_test.cpp index aa249cc..aa92618 100644 --- a/tests/protocol_test.cpp +++ b/tests/protocol_test.cpp @@ -12,6 +12,14 @@ using namespace BoardCore::Protocol; int main() { + // Every other namespace is rejected even with a valid CRC and colliding0x11. + for (unsigned discriminator = 1; discriminator < 256; ++discriminator) { + uint8_t raw[] = {kMagic, static_cast(discriminator), 0x11, 7, 1, 4, 0}; + raw[6] = BoardCore::WireCodec::crc8(raw, 6); + uint8_t encoded[kMaximumEncoded]; Frame foreign{}; + const auto size = BoardCore::WireCodec::cobsEncode(raw, sizeof(raw), encoded, sizeof(encoded)); + assert(size && !decode(encoded, size, foreign)); + } // Same malformed COBS vectors as PCController. Rejected before frame/CRC // dispatch; in-place decoding must retain the existing bounded ownership. uint8_t decodedScratch[3] = {}; diff --git a/tests/tool_peer_identity_test.ps1 b/tests/tool_peer_identity_test.ps1 index ac657ed..d005995 100644 --- a/tests/tool_peer_identity_test.ps1 +++ b/tests/tool_peer_identity_test.ps1 @@ -34,9 +34,9 @@ Assert-PakarToolUsbHello $reply $reply[13]=7;$rejected=$false;try{Assert-PakarToolUsbHello $reply}catch{$rejected=$true};Assert $rejected 'USB old board release admitted' foreach($path in @('set-device-name.ps1','set-device-access.ps1','set-device-network.ps1')){ $source=Get-Content -LiteralPath (Join-Path $PSScriptRoot ('../tools/'+$path)) -Raw - Assert ($source -match 'Send-PakarNetworkRequest \$serial 0x01 .*New-PakarToolUsbHello') 'Provisioner lacks controller release introduction' + Assert ($source -match 'Send-PakarNetworkRequest \$serial \(\[byte\]\[PakarOpcode\]::Hello\).*New-PakarToolUsbHello') 'Provisioner lacks controller release introduction' $check=$source.IndexOf('Assert-PakarToolUsbHello $hello') - $firstMutation=if($path -eq 'set-device-name.ps1'){$source.IndexOf('Send-NameChunk ([byte[]] @(0))')}elseif($path -eq 'set-device-access.ps1'){$source.IndexOf('Send-AccessChunk ([byte[]] @(0))')}else{$source.IndexOf('$null=Send-PakarNetworkRequest $serial 0x53')} + $firstMutation=if($path -eq 'set-device-name.ps1'){$source.IndexOf('Send-NameChunk ([byte[]] @(0))')}elseif($path -eq 'set-device-access.ps1'){$source.IndexOf('Send-AccessChunk ([byte[]] @(0))')}else{$source.IndexOf('$null=Send-PakarNetworkRequest $serial ([byte][PakarOpcode]::NetworkConfig)')} Assert ($check -ge 0 -and $firstMutation -gt $check) 'Provisioner writes before reciprocal compatibility check' } # Execute the actual provisioning request functions against a byte queue. Never diff --git a/tools/ProtocolOpcodes.ps1 b/tools/ProtocolOpcodes.ps1 new file mode 100644 index 0000000..47a6f67 --- /dev/null +++ b/tools/ProtocolOpcodes.ps1 @@ -0,0 +1,137 @@ +# Generated from PCController Project/ProtocolContract.json; DO NOT EDIT. +enum PakarEnvelope { Magic = 165; Reserved = 0; MaximumPayload = 48 } +enum PakarOpcode { + Hello = 1 + GetStatus = 2 + SetStreamPeriod = 3 + Buzzer = 16 + AudioCue = 17 + AudioStream = 18 + DisplayText = 56 + SetMode = 75 + CellAction = 76 + GameReset = 77 + OutputMask = 78 + Ping = 79 + ProgrammingState = 80 + SetBrightness = 81 + SetLedPattern = 82 + NetworkConfig = 83 + AccessConfig = 84 + DeviceName = 85 + PcContract = 86 + PcContractChunk = 87 + GetTelemetry = 88 + GetIdentity = 89 + EspPanel = 90 + AvrRxDiagnostic = 91 + SetLedOutput = 92 + GetTableSnapshot = 93 + TableCommand = 94 + CellsAction = 95 + ShellRequest = 96 + PeerReport = 97 + CellAssignments = 98 + CellLock = 99 + HostDemand = 100 + PixelDiagnostic = 101 + KeyMask = 102 + KeySettings = 103 + GamePress = 104 + KeyPresentation = 105 + UsbApi = 106 + Ack = 128 + HelloResponse = 129 + ErrorResponse = 130 + StatusResponse = 144 + GameState = 163 + InputEvent = 164 + CellEvent = 165 + Pong = 166 + PcContractResponse = 176 + TelemetryResponse = 177 + IdentityResponse = 178 + EspPanelResponse = 179 + AvrRxDiagnosticResponse = 180 + ResetTelemetryResponse = 181 + TableSnapshotResponse = 182 + TableCommandState = 183 + PanelEvent = 184 + ShellResponse = 185 + HostDemandResponse = 186 + AudioStreamResponse = 188 + UsbApiResponse = 189 +} + +enum ControllerEnvelope { Magic = 165; Reserved = 1; MaximumPayload = 48 } +enum ControllerOpcode { + Hello = 1 + GetStatus = 2 + SetStreamPeriod = 3 + GetSettings = 4 + SetSettings = 5 + TemperatureList = 6 + Buzzer = 16 + PwmSet = 17 + PwmAllOff = 18 + StatusRgb = 20 + PwmGet = 21 + AddressableLed = 22 + StatusEffect = 23 + StatusProfileGet = 24 + StatusProfileSet = 25 + RadioTransmit = 32 + RadioLearnStart = 33 + RadioLearnCancel = 34 + RadioLearnClear = 35 + RadioLearnList = 36 + RadioLearnRemove = 37 + MenuAction = 48 + RelaySet = 49 + RelaySide = 50 + RelayAllOff = 51 + RelayTest = 52 + Reset = 53 + I2cTransfer = 54 + MenuSetPage = 55 + DisplayText = 56 + MacroStart = 57 + MacroCancel = 58 + MacroStep = 59 + FrontPanelGet = 60 + RemoteKeyGesture = 61 + MenuList = 62 + RadioLearnReplace = 63 + MenuLayoutGet = 64 + MenuLayoutSet = 65 + HostMenuDirectory = 66 + HostMenuContent = 67 + HostMenuStateGet = 68 + ProgramState = 69 + AutomationList = 70 + AutomationPut = 71 + AutomationRemove = 72 + AutomationClear = 73 + Ack = 128 + HelloResponse = 129 + ErrorResponse = 130 + StatusResponse = 144 + SettingsResponse = 145 + PwmValuesResponse = 146 + I2cTransferResponse = 147 + RadioLearnListResponse = 148 + TemperatureListResponse = 149 + FrontPanelResponse = 150 + MenuListResponse = 151 + MacroStatusResponse = 152 + MenuLayoutResponse = 153 + HostMenuContentRequest = 154 + HostMenuStateResponse = 155 + SegmentChanged = 156 + BuzzerChanged = 157 + StatusLedChanged = 158 + StatusProfileResponse = 159 + Event = 160 + AutomationListResponse = 161 + AutomationRecordResponse = 162 +} diff --git a/tools/build-desktop.ps1 b/tools/build-desktop.ps1 index 9a64bfe..3100af6 100644 --- a/tools/build-desktop.ps1 +++ b/tools/build-desktop.ps1 @@ -11,6 +11,8 @@ param( [switch] $Plan ) $ErrorActionPreference = 'Stop' +& node (Join-Path $PSScriptRoot '../interfaces/controller-wire/consumer.mjs') --pakar --check | ForEach-Object { Write-Host $_ } +if ($LASTEXITCODE -ne 0) { throw 'Canonical opcode bindings are stale.' } . (Join-Path $PSScriptRoot 'script-runtime.ps1') if ($TestFilter -and $Mode -ne 'Test') { throw 'TestFilter requires Test mode.' } & (Join-Path $PSScriptRoot 'consult-reuse.ps1') -Concern api-contract -Gate | Out-Null diff --git a/tools/build-firmware.ps1 b/tools/build-firmware.ps1 index ef8ab47..8991b60 100644 --- a/tools/build-firmware.ps1 +++ b/tools/build-firmware.ps1 @@ -50,6 +50,8 @@ param( ) $ErrorActionPreference = 'Stop' +& node (Join-Path $PSScriptRoot '../interfaces/controller-wire/consumer.mjs') --pakar --check | ForEach-Object { Write-Host $_ } +if ($LASTEXITCODE -ne 0) { throw 'Canonical opcode bindings are stale.' } if($PSBoundParameters.ContainsKey('KeyMiniGames') -and ($Target -ne 'esp32s3' -or $GameMode -ne 'first-wins')){throw 'Key mini-game inclusion flags require the ESP32-S3 keycontroller role.'} if($GameMode -eq 'first-wins' -and -not $KeyMiniGames.Count){throw 'Include at least one key minigame.'} if($BoardSnake -and ($Target -ne 'esp32s3' -or $GameMode -ne 'table-selection')) { throw 'Board Snake is opt-in for ESP32-S3 table builds only.' } diff --git a/tools/build-mobile.ps1 b/tools/build-mobile.ps1 index 77c1cc3..923e1b6 100644 --- a/tools/build-mobile.ps1 +++ b/tools/build-mobile.ps1 @@ -14,6 +14,8 @@ param( [switch]$Plan ) $ErrorActionPreference='Stop' +& node (Join-Path $PSScriptRoot '../interfaces/controller-wire/consumer.mjs') --pakar --check | ForEach-Object { Write-Host $_ } +if ($LASTEXITCODE -ne 0) { throw 'Canonical opcode bindings are stale.' } . (Join-Path $PSScriptRoot 'script-runtime.ps1') & (Join-Path $PSScriptRoot 'verify-versions.ps1') & (Join-Path $PSScriptRoot 'consult-reuse.ps1') -Concern api-contract -Gate | Out-Null diff --git a/tools/capture-avr-rx.ps1 b/tools/capture-avr-rx.ps1 index 59f2282..12e5382 100644 --- a/tools/capture-avr-rx.ps1 +++ b/tools/capture-avr-rx.ps1 @@ -17,8 +17,8 @@ function Read-PakarAvrRxUint32([byte[]]$Bytes,[int]$Offset) { return [uint32]$value } function Assert-PakarAvrRxPrefix([byte[]]$Reply,[byte]$Action) { - if($Reply.Length -lt 8 -or $Reply[0] -ne 0xa5 -or $Reply[1] -ne 0 -or - $Reply[2] -ne 0xb4 -or $Reply[4] -gt 48 -or $Reply.Length -ne $Reply[4]+6 -or + if($Reply.Length -lt 8 -or $Reply[0] -ne ([byte][PakarEnvelope]::Magic) -or $Reply[1] -ne ([byte][PakarEnvelope]::Reserved) -or + $Reply[2] -ne ([byte][PakarOpcode]::AvrRxDiagnosticResponse) -or $Reply[4] -gt 48 -or $Reply.Length -ne $Reply[4]+6 -or $Reply[5] -ne $Action){throw 'Invalid or mismatched passive-capture response; no diagnostic success is assumed.'} if($Reply[6] -ne 0){throw "ESP rejected passive-capture action (error code $($Reply[6])); no automatic start retry was attempted."} } @@ -56,7 +56,7 @@ function Read-PakarAvrRxChunk([byte[]]$Reply,[byte]$Offset,[int]$Remaining) { return ,$bytes } function Assert-PakarAvrRxPaused([byte[]]$Reply) { - if($Reply.Length -lt 48 -or $Reply[2] -ne 0x90 -or $Reply[4] -lt 42 -or + if($Reply.Length -lt 48 -or $Reply[2] -ne ([byte][PakarOpcode]::StatusResponse) -or $Reply[4] -lt 42 -or $Reply.Length -ne $Reply[4]+6 -or $Reply[46] -ne 0){ throw 'Normal AVR link is not explicitly acknowledged paused; passive capture was not started. Use the reviewed quiet commissioning firmware.' } @@ -65,13 +65,13 @@ function Invoke-PakarAvrRxCapture($Serial,[ValidateSet(38400,115200)][int]$Captu [ValidateRange(100,7500)][int]$CaptureWindowMs,[int]$DeadlineMs, [scriptblock]$Wait={param($Milliseconds)Start-Sleep -Milliseconds $Milliseconds}) { [byte]$sequence=1 - $hello=Send-PakarNetworkRequest $Serial 0x01 $sequence ([byte[]]@()) 0x81 $DeadlineMs + $hello=Send-PakarNetworkRequest $Serial ([byte][PakarOpcode]::Hello) $sequence ([byte[]]@()) ([byte][PakarOpcode]::HelloResponse) $DeadlineMs Assert-PakarNetworkEspHello $hello $sequence++ - $status=Send-PakarNetworkRequest $Serial 0x02 $sequence ([byte[]]@()) 0x90 $DeadlineMs + $status=Send-PakarNetworkRequest $Serial ([byte][PakarOpcode]::GetStatus) $sequence ([byte[]]@()) ([byte][PakarOpcode]::StatusResponse) $DeadlineMs Assert-PakarAvrRxPaused $status $sequence++ - $reply=Send-PakarNetworkRequest $Serial 0x5b $sequence ([byte[]]@(0)) 0xb4 $DeadlineMs + $reply=Send-PakarNetworkRequest $Serial ([byte][PakarOpcode]::AvrRxDiagnostic) $sequence ([byte[]]@(0)) ([byte][PakarOpcode]::AvrRxDiagnosticResponse) $DeadlineMs $before=Read-PakarAvrRxSnapshot $reply 0 if($before.Active -or -not $before.PinsSafe -or -not $before.Reset10OutputKnown -or $before.Reset10OutputEnabled){throw 'Existing capture or unsafe/unknown pad ownership; no passive capture was started.'} @@ -79,7 +79,7 @@ function Invoke-PakarAvrRxCapture($Serial,[ValidateSet(38400,115200)][int]$Captu try { $sequence++;$startAttempted=$true [byte]$baudCode=if($CaptureBaud -eq 38400){0}else{1} - $reply=Send-PakarNetworkRequest $Serial 0x5b $sequence ([byte[]]@(1,$baudCode)) 0xb4 $DeadlineMs + $reply=Send-PakarNetworkRequest $Serial ([byte][PakarOpcode]::AvrRxDiagnostic) $sequence ([byte[]]@(1,$baudCode)) ([byte][PakarOpcode]::AvrRxDiagnosticResponse) $DeadlineMs $start=Read-PakarAvrRxSnapshot $reply 1 if(-not $start.Active -or -not $start.PinsSafe -or $start.Baud -ne $CaptureBaud -or -not $start.Reset10OutputKnown -or $start.Reset10OutputEnabled){ @@ -87,16 +87,16 @@ function Invoke-PakarAvrRxCapture($Serial,[ValidateSet(38400,115200)][int]$Captu } & $Wait $CaptureWindowMs $sequence++ - $reply=Send-PakarNetworkRequest $Serial 0x5b $sequence ([byte[]]@(0)) 0xb4 $DeadlineMs + $reply=Send-PakarNetworkRequest $Serial ([byte][PakarOpcode]::AvrRxDiagnostic) $sequence ([byte[]]@(0)) ([byte][PakarOpcode]::AvrRxDiagnosticResponse) $DeadlineMs $observed=Read-PakarAvrRxSnapshot $reply 0 $sequence++;$stopAttempted=$true - $reply=Send-PakarNetworkRequest $Serial 0x5b $sequence ([byte[]]@(2)) 0xb4 $DeadlineMs + $reply=Send-PakarNetworkRequest $Serial ([byte][PakarOpcode]::AvrRxDiagnostic) $sequence ([byte[]]@(2)) ([byte][PakarOpcode]::AvrRxDiagnosticResponse) $DeadlineMs $stop=Read-PakarAvrRxSnapshot $reply 2 if($stop.Active){throw 'Passive capture stop was not confirmed; do not retry blindly. Firmware has an eight-second auto-stop.'} [byte[]]$captured=[byte[]]::new($stop.Stored) for($offset=0;$offset -lt $captured.Length;$offset+=32){ $sequence++ - $reply=Send-PakarNetworkRequest $Serial 0x5b $sequence ([byte[]]@(3,[byte]$offset)) 0xb4 $DeadlineMs + $reply=Send-PakarNetworkRequest $Serial ([byte][PakarOpcode]::AvrRxDiagnostic) $sequence ([byte[]]@(3,[byte]$offset)) ([byte][PakarOpcode]::AvrRxDiagnosticResponse) $DeadlineMs [byte[]]$chunk=Read-PakarAvrRxChunk $reply ([byte]$offset) ($captured.Length-$offset) [Array]::Copy($chunk,0,$captured,$offset,$chunk.Length) } @@ -114,7 +114,7 @@ function Invoke-PakarAvrRxCapture($Serial,[ValidateSet(38400,115200)][int]$Captu # exclusively owned by this call. Never replay start or retry stop. $stopAttempted=$true;$sequence++ try { - $reply=Send-PakarNetworkRequest $Serial 0x5b $sequence ([byte[]]@(2)) 0xb4 $DeadlineMs + $reply=Send-PakarNetworkRequest $Serial ([byte][PakarOpcode]::AvrRxDiagnostic) $sequence ([byte[]]@(2)) ([byte][PakarOpcode]::AvrRxDiagnosticResponse) $DeadlineMs $cleanup=Read-PakarAvrRxSnapshot $reply 2 if($cleanup.Active){Write-Warning 'Capture stop not confirmed; firmware auto-stop is eight seconds. No stop retry was attempted.'} } catch {Write-Warning 'Capture cleanup stop outcome is uncertain; firmware auto-stop is eight seconds. No stop retry was attempted.'} diff --git a/tools/ci-checks.mjs b/tools/ci-checks.mjs index 6dec0d1..22af289 100644 --- a/tools/ci-checks.mjs +++ b/tools/ci-checks.mjs @@ -5,6 +5,8 @@ import {fileURLToPath} from 'node:url'; import {createLogger} from './script-console.mjs'; export const phases={ "quality": [ + ["node", "interfaces/controller-wire/consumer.mjs", "--pakar", "--check"], + ["node", "tests/opcode_registry_test.mjs"], ["python", "-B", "tests/mqtt_provisioning_test.py"], ["pwsh", "-NoProfile", "-File", "tools/test-cloud-services.ps1"], ["pwsh", "-NoProfile", "-File", "tools/test-tls-memory.ps1"], diff --git a/tools/invoke-usb-api.ps1 b/tools/invoke-usb-api.ps1 index 2c2fd8a..77725cf 100644 --- a/tools/invoke-usb-api.ps1 +++ b/tools/invoke-usb-api.ps1 @@ -25,12 +25,12 @@ try { $serial.Open() $release=Get-Content -LiteralPath (Join-Path $PSScriptRoot '../interfaces/client-release.json') -Raw | ConvertFrom-Json $version=([string]$release.version -split '[-+]')[0] -split '\.' - $hello=Send-ApiFrame 1 ([byte[]]@(3,[byte]$version[0],[byte]$version[1],[byte]$version[2])) 0x81 + $hello=Send-ApiFrame ([byte][PakarOpcode]::Hello) ([byte[]]@(3,[byte]$version[0],[byte]$version[1],[byte]$version[2])) ([byte][PakarOpcode]::HelloResponse) Assert-PakarNetworkEspHello $hello $identityBytes=[Collections.Generic.List[byte]]::new();$identityTotal=0;$identityRevision=$null do { $offset=$identityBytes.Count - $frame=Send-ApiFrame 0x59 ([byte[]]@(37,($offset -band 255),($offset -shr 8))) 0xB2 + $frame=Send-ApiFrame ([byte][PakarOpcode]::GetIdentity) ([byte[]]@(37,($offset -band 255),($offset -shr 8))) ([byte][PakarOpcode]::IdentityResponse) if($frame[4] -le 9 -or $frame[5] -ne 37){throw 'Invalid identity chunk'} $revision=[BitConverter]::ToUInt32($frame,6);$total=[BitConverter]::ToUInt16($frame,10) if($total -gt 8192 -or [BitConverter]::ToUInt16($frame,12) -ne $offset){throw 'Invalid identity range'} @@ -50,24 +50,24 @@ try { [byte[]]$open=[byte[]]::new(19) for($i=0;$i -lt 16;$i++){$open[$i+1]=[Convert]::ToByte($identity.boot_id.Substring($i*2,2),16)} $open[17]=$bytes.Length -band 255;$open[18]=$bytes.Length -shr 8 - $reply=Send-ApiFrame 0x6A $open 0xBD + $reply=Send-ApiFrame ([byte][PakarOpcode]::UsbApi) $open ([byte][PakarOpcode]::UsbApiResponse) if($reply[4] -ne 9 -or $reply[5] -ne 0){throw 'Invalid API open response'} [byte[]]$token=$reply[6..9] for($offset=0;$offset -lt $bytes.Length;) { $count=[Math]::Min(41,$bytes.Length-$offset) [byte[]]$chunk=@(1)+$token+@(($offset -band 255),($offset -shr 8))+$bytes[$offset..($offset+$count-1)] - $reply=Send-ApiFrame 0x6A $chunk 0xBD + $reply=Send-ApiFrame ([byte][PakarOpcode]::UsbApi) $chunk ([byte][PakarOpcode]::UsbApiResponse) if($reply[4] -ne 9 -or $reply[5] -ne 1 -or [BitConverter]::ToUInt32($reply,6) -ne [BitConverter]::ToUInt32($token,0)){throw 'Invalid API chunk receipt'} $offset+=$count } - $reply=Send-ApiFrame 0x6A ([byte[]](@(2)+$token)) 0xBD + $reply=Send-ApiFrame ([byte][PakarOpcode]::UsbApi) ([byte[]](@(2)+$token)) ([byte][PakarOpcode]::UsbApiResponse) if($reply[4] -ne 9 -or $reply[5] -ne 2 -or [BitConverter]::ToUInt32($reply,6) -ne [BitConverter]::ToUInt32($token,0)){throw 'Invalid API execution receipt; do not replay'} $total=[BitConverter]::ToUInt16($reply,10) if(-not $total -or $total -gt 8192){throw 'Invalid response length; outcome uncertain'} $result=[Collections.Generic.List[byte]]::new() while($result.Count -lt $total) { $offset=$result.Count - $reply=Send-ApiFrame 0x6A ([byte[]](@(3)+$token+@(($offset -band 255),($offset -shr 8)))) 0xBD + $reply=Send-ApiFrame ([byte][PakarOpcode]::UsbApi) ([byte[]](@(3)+$token+@(($offset -band 255),($offset -shr 8)))) ([byte][PakarOpcode]::UsbApiResponse) if($reply[4] -le 9 -or $reply[5] -ne 3 -or [BitConverter]::ToUInt32($reply,6) -ne [BitConverter]::ToUInt32($token,0) -or [BitConverter]::ToUInt16($reply,10) -ne $total -or [BitConverter]::ToUInt16($reply,12) -ne $offset){throw 'Invalid response chunk; do not replay'} @@ -76,7 +76,7 @@ try { } [Text.Encoding]::UTF8.GetString($result.ToArray()) | ConvertFrom-Json # Closing is optional cleanup, not success evidence and never a mutation retry. - try {$null=Send-ApiFrame 0x6A ([byte[]](@(4)+$token)) 0x80} catch {Write-Warning 'Response received; USB session will expire automatically'} + try {$null=Send-ApiFrame ([byte][PakarOpcode]::UsbApi) ([byte[]](@(4)+$token)) ([byte][PakarOpcode]::Ack)} catch {Write-Warning 'Response received; USB session will expire automatically'} } finally { if($null -ne $bytes){[Array]::Clear($bytes,0,$bytes.Length)} if($serial){$serial.Dispose()} diff --git a/tools/serial-wire.ps1 b/tools/serial-wire.ps1 index d82f2dc..8bd0e2f 100644 --- a/tools/serial-wire.ps1 +++ b/tools/serial-wire.ps1 @@ -1,6 +1,7 @@ # Shared bounded USB wire transport extracted verbatim from set-device-network.ps1. -# Loading this file only defines functions; it never opens a port or sends frames. +# Loading this file defines generated types/functions; never opens a port or sends frames. # Existing PakarNetwork function names remain stable for reviewed callers/tests. +if (-not ('PakarOpcode' -as [type])) { . (Join-Path $PSScriptRoot 'ProtocolOpcodes.ps1') } function Get-PakarNetworkCrc8([byte[]]$Bytes,[int]$Count=-1) { [int]$crc=0 if($Count -lt 0){$Count=$Bytes.Length} @@ -53,15 +54,15 @@ function Receive-PakarNetworkReply($Serial,[byte]$Sequence,[byte]$ResponseOpcode } if($dropping){$dropping=$false;$received.Clear();continue} [byte[]]$reply=ConvertFrom-PakarNetworkCobs $received.ToArray();$received.Clear() - if(-not $reply -or $reply.Length -lt 6 -or $reply[0] -ne 0xa5 -or - $reply[1] -ne 0 -or $reply[3] -ne $Sequence -or $reply[4] -gt 48){continue} + if(-not $reply -or $reply.Length -lt 6 -or $reply[0] -ne ([byte][PakarEnvelope]::Magic) -or + $reply[1] -ne ([byte][PakarEnvelope]::Reserved) -or $reply[3] -ne $Sequence -or $reply[4] -gt 48){continue} if($reply.Length -ne $reply[4]+6 -or (Get-PakarNetworkCrc8 $reply[0..($reply.Length-2)]) -ne $reply[-1]){continue} - if($reply[2] -eq 0x82 -and $reply[4] -eq 2 -and $reply[5] -eq $RequestOpcode) { + if($reply[2] -eq ([byte][PakarOpcode]::ErrorResponse) -and $reply[4] -eq 2 -and $reply[5] -eq $RequestOpcode) { throw "ESP rejected USB request (error code $($reply[6])); no automatic mutation retry was attempted." } if($reply[2] -ne $ResponseOpcode){continue} - if($ResponseOpcode -eq 0x80 -and + if($ResponseOpcode -eq ([byte][PakarOpcode]::Ack) -and ($reply[4] -ne 2 -or $reply[5] -ne $RequestOpcode -or $reply[6] -ne 0)){continue} return ,$reply } @@ -71,7 +72,7 @@ function Send-PakarNetworkRequest($Serial,[byte]$Opcode,[byte]$Sequence, [byte[]]$Payload,[byte]$ResponseOpcode,[int]$DeadlineMs) { if($Payload.Length -gt 48){throw 'USB payload exceeds its bounded contract'} [byte[]]$raw=[byte[]]::new($Payload.Length+6) - $raw[0]=0xa5;$raw[1]=0;$raw[2]=$Opcode;$raw[3]=$Sequence;$raw[4]=$Payload.Length + $raw[0]=([byte][PakarEnvelope]::Magic);$raw[1]=([byte][PakarEnvelope]::Reserved);$raw[2]=$Opcode;$raw[3]=$Sequence;$raw[4]=$Payload.Length [Array]::Copy($Payload,0,$raw,5,$Payload.Length) [byte[]]$wire=@() try { @@ -85,7 +86,7 @@ function Send-PakarNetworkRequest($Serial,[byte]$Opcode,[byte]$Sequence, } } function Assert-PakarNetworkEspHello([byte[]]$Reply) { - if($Reply.Length -lt 15 -or $Reply[2] -ne 0x81 -or + if($Reply.Length -lt 15 -or $Reply[2] -ne ([byte][PakarOpcode]::HelloResponse) -or $Reply[5] -ne 0 -or $Reply[6] -ne 2 -or (($Reply[7] -bor ([int]$Reply[8] -shl 8)) -band 0x2000) -eq 0) { throw 'USB peer did not acknowledge ESP role and host-serial capability; no network settings were changed.' diff --git a/tools/set-device-access.ps1 b/tools/set-device-access.ps1 index 7fa29e9..9685b12 100644 --- a/tools/set-device-access.ps1 +++ b/tools/set-device-access.ps1 @@ -14,59 +14,16 @@ finally { [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($secretPointer) } if ($secret.Length -lt 8 -or $secret.Length -gt 64 -or $secret -match '[^\x20-\x7e]') { $secret = $null; throw 'Password must be 8..64 printable ASCII characters' } -function Get-Crc8([byte[]] $Bytes) { - [int] $crc = 0 - foreach ($value in $Bytes) { - $crc = $crc -bxor $value - for ($bit = 0; $bit -lt 8; $bit++) { - $crc = if ($crc -band 128) { (($crc -shl 1) -bxor 7) -band 255 } else { ($crc -shl 1) -band 255 } - } - } - return [byte] $crc -} -function Encode-Cobs([byte[]] $Bytes) { - $encoded = [Collections.Generic.List[byte]]::new(); $encoded.Add(0) - $position = 0; $code = 1 - foreach ($value in $Bytes) { - if ($value -eq 0) { $encoded[$position] = $code; $position = $encoded.Count; $encoded.Add(0); $code = 1 } - else { $encoded.Add($value); $code++ } - } - $encoded[$position] = $code; $encoded.Add(0) - return ,$encoded.ToArray() -} -function Decode-Cobs([byte[]] $Bytes) { - $decoded = [Collections.Generic.List[byte]]::new(); $at = 0 - while ($at -lt $Bytes.Length) { - $code = [int] $Bytes[$at++]; if ($code -eq 0 -or $at + $code - 1 -gt $Bytes.Length) { return $null } - for ($i = 1; $i -lt $code; $i++) { $decoded.Add($Bytes[$at++]) } - if ($code -ne 255 -and $at -lt $Bytes.Length) { $decoded.Add(0) } - } - return ,$decoded.ToArray() -} $serial = [IO.Ports.SerialPort]::new($Port, 115200, 'None', 8, 'One') $serial.DtrEnable = $false; $serial.RtsEnable = $false; $serial.ReadTimeout = 100 $script:accessSequence = 0 function Send-AccessChunk([byte[]] $Payload) { - $script:accessSequence++; $sequence = [byte] $script:accessSequence - [byte[]] $raw = @(0xa5, 0, 0x54, $sequence, $Payload.Length) + $Payload - $raw += Get-Crc8 $raw - [byte[]] $wire = Encode-Cobs $raw - $serial.Write($wire, 0, $wire.Length) - $received = [Collections.Generic.List[byte]]::new(); $timer = [Diagnostics.Stopwatch]::StartNew() - while ($timer.ElapsedMilliseconds -lt 5000) { - try { $value = $serial.ReadByte() } catch [TimeoutException] { continue } - if ($value -ne 0) { if ($received.Count -lt 60) { $received.Add([byte] $value) }; continue } - [byte[]] $reply = Decode-Cobs $received.ToArray(); $received.Clear() - if (-not $reply -or $reply.Length -lt 6 -or $reply[0] -ne 0xa5 -or $reply[1] -ne 0 -or $reply[3] -ne $sequence) { continue } - if ($reply.Length -ne $reply[4] + 6 -or (Get-Crc8 $reply[0..($reply.Length - 2)]) -ne $reply[-1]) { continue } - if ($reply[2] -eq 0x80 -and $reply[4] -ge 1 -and $reply[5] -eq 0x54) { return } - if ($reply[2] -eq 0x82) { throw 'Device rejected access provisioning. Check firmware version, password rules and ongoing updates.' } - } - throw 'No matching USB acknowledgment. No success is assumed; stop other serial clients and check ESP USB/firmware.' + $script:accessSequence++ + $null = Send-PakarNetworkRequest $serial ([byte][PakarOpcode]::AccessConfig) ([byte]$script:accessSequence) $Payload ([byte][PakarOpcode]::Ack) 5000 } try { $serial.Open(); Start-Sleep -Milliseconds 250; $serial.DiscardInBuffer() - $hello=Send-PakarNetworkRequest $serial 0x01 1 (New-PakarToolUsbHello) 0x81 5000 + $hello=Send-PakarNetworkRequest $serial ([byte][PakarOpcode]::Hello) 1 (New-PakarToolUsbHello) ([byte][PakarOpcode]::HelloResponse) 5000 Assert-PakarToolUsbHello $hello $script:accessSequence=1 Send-AccessChunk ([byte[]] @(0)) diff --git a/tools/set-device-name.ps1 b/tools/set-device-name.ps1 index 7275d49..3fa2111 100644 --- a/tools/set-device-name.ps1 +++ b/tools/set-device-name.ps1 @@ -11,59 +11,16 @@ if ($label.EndsWith('.local')) { $label = $label.Substring(0, $label.Length - 6) if ($label -notmatch '^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$' -or $label -in @('local','localhost')) { throw 'Use 1..63 letters/digits/hyphens, no leading/trailing hyphen; optional .local suffix' } -function Get-Crc8([byte[]] $Bytes) { - [int] $crc = 0 - foreach ($value in $Bytes) { - $crc = $crc -bxor $value - for ($bit = 0; $bit -lt 8; $bit++) { - $crc = if ($crc -band 128) { (($crc -shl 1) -bxor 7) -band 255 } else { ($crc -shl 1) -band 255 } - } - } - return [byte] $crc -} -function Encode-Cobs([byte[]] $Bytes) { - $encoded = [Collections.Generic.List[byte]]::new(); $encoded.Add(0) - $position = 0; $code = 1 - foreach ($value in $Bytes) { - if ($value -eq 0) { $encoded[$position] = $code; $position = $encoded.Count; $encoded.Add(0); $code = 1 } - else { $encoded.Add($value); $code++ } - } - $encoded[$position] = $code; $encoded.Add(0) - return ,$encoded.ToArray() -} -function Decode-Cobs([byte[]] $Bytes) { - $decoded = [Collections.Generic.List[byte]]::new(); $at = 0 - while ($at -lt $Bytes.Length) { - $code = [int] $Bytes[$at++]; if ($code -eq 0 -or $at + $code - 1 -gt $Bytes.Length) { return $null } - for ($i = 1; $i -lt $code; $i++) { $decoded.Add($Bytes[$at++]) } - if ($code -ne 255 -and $at -lt $Bytes.Length) { $decoded.Add(0) } - } - return ,$decoded.ToArray() -} $serial = [IO.Ports.SerialPort]::new($Port, 115200, 'None', 8, 'One') $serial.DtrEnable = $false; $serial.RtsEnable = $false; $serial.ReadTimeout = 100 $script:nameSequence = 0 function Send-NameChunk([byte[]] $Payload) { - $script:nameSequence++; $sequence = [byte] $script:nameSequence - [byte[]] $raw = @(0xa5, 0, 0x55, $sequence, $Payload.Length) + $Payload - $raw += Get-Crc8 $raw - [byte[]] $wire = Encode-Cobs $raw - $serial.Write($wire, 0, $wire.Length) - $received = [Collections.Generic.List[byte]]::new(); $timer = [Diagnostics.Stopwatch]::StartNew() - while ($timer.ElapsedMilliseconds -lt 5000) { - try { $value = $serial.ReadByte() } catch [TimeoutException] { continue } - if ($value -ne 0) { if ($received.Count -lt 60) { $received.Add([byte] $value) }; continue } - [byte[]] $reply = Decode-Cobs $received.ToArray(); $received.Clear() - if (-not $reply -or $reply.Length -lt 6 -or $reply[0] -ne 0xa5 -or $reply[1] -ne 0 -or $reply[3] -ne $sequence) { continue } - if ($reply.Length -ne $reply[4] + 6 -or (Get-Crc8 $reply[0..($reply.Length - 2)]) -ne $reply[-1]) { continue } - if ($reply[2] -eq 0x80 -and $reply[4] -ge 1 -and $reply[5] -eq 0x55) { return } - if ($reply[2] -eq 0x82) { throw 'Device rejected device naming. Check firmware version, hostname rules and ongoing updates.' } - } - throw 'No matching USB acknowledgment. No success is assumed; stop other serial clients and check ESP USB/firmware.' + $script:nameSequence++ + $null = Send-PakarNetworkRequest $serial ([byte][PakarOpcode]::DeviceName) ([byte]$script:nameSequence) $Payload ([byte][PakarOpcode]::Ack) 5000 } try { $serial.Open(); Start-Sleep -Milliseconds 250; $serial.DiscardInBuffer() - $hello=Send-PakarNetworkRequest $serial 0x01 1 (New-PakarToolUsbHello) 0x81 5000 + $hello=Send-PakarNetworkRequest $serial ([byte][PakarOpcode]::Hello) 1 (New-PakarToolUsbHello) ([byte][PakarOpcode]::HelloResponse) 5000 Assert-PakarToolUsbHello $hello $script:nameSequence=1 Send-NameChunk ([byte[]] @(0)) diff --git a/tools/set-device-network.ps1 b/tools/set-device-network.ps1 index 6ef738a..9db03eb 100644 --- a/tools/set-device-network.ps1 +++ b/tools/set-device-network.ps1 @@ -14,7 +14,7 @@ $ErrorActionPreference='Stop' . (Join-Path $PSScriptRoot 'serial-wire.ps1') . (Join-Path $PSScriptRoot 'peer-identity.ps1') function Read-PakarNetworkStatus([byte[]]$Reply,[bool]$StationEnabled,[bool]$ApEnabled) { - if($Reply[2] -ne 0x90 -or $Reply[4] -lt 19 -or $Reply[20] -gt 1 -or $Reply[21] -gt 1) { + if($Reply[2] -ne ([byte][PakarOpcode]::StatusResponse) -or $Reply[4] -lt 19 -or $Reply[20] -gt 1 -or $Reply[21] -gt 1) { throw 'ESP returned an invalid status observation after save; do not automatically repeat provisioning.' } # Payload15 is station CONNECTED; payload16 is AP started. Neither is a @@ -59,28 +59,28 @@ try { $serial.DtrEnable=$false;$serial.RtsEnable=$false;$serial.ReadTimeout=100 $serial.Open();Start-Sleep -Milliseconds 250;$serial.DiscardInBuffer() [byte]$sequence=1 - $hello=Send-PakarNetworkRequest $serial 0x01 $sequence (New-PakarToolUsbHello) 0x81 $TimeoutMs + $hello=Send-PakarNetworkRequest $serial ([byte][PakarOpcode]::Hello) $sequence (New-PakarToolUsbHello) ([byte][PakarOpcode]::HelloResponse) $TimeoutMs Assert-PakarNetworkEspHello $hello # Premutation role/capability/read integrity gate. Assert-PakarToolUsbHello $hello # Mutual release policy before any staged setting. $sequence++ - $null=Send-PakarNetworkRequest $serial 0x53 $sequence ([byte[]]@(0)) 0x80 $TimeoutMs + $null=Send-PakarNetworkRequest $serial ([byte][PakarOpcode]::NetworkConfig) $sequence ([byte[]]@(0)) ([byte][PakarOpcode]::Ack) $TimeoutMs foreach($entry in @(@{Kind=1;Bytes=$ssidBytes},@{Kind=2;Bytes=$passwordBytes})){ for($offset=0;$offset -lt $entry.Bytes.Length;$offset+=47){ $length=[Math]::Min(47,$entry.Bytes.Length-$offset) $chunk=[byte[]]::new($length+1);$chunk[0]=$entry.Kind [Array]::Copy($entry.Bytes,$offset,$chunk,1,$length) $sequence++ - try{$null=Send-PakarNetworkRequest $serial 0x53 $sequence $chunk 0x80 $TimeoutMs} + try{$null=Send-PakarNetworkRequest $serial ([byte][PakarOpcode]::NetworkConfig) $sequence $chunk ([byte][PakarOpcode]::Ack) $TimeoutMs} finally{[Array]::Clear($chunk,0,$chunk.Length)} } } $sequence++ - $null=Send-PakarNetworkRequest $serial 0x53 $sequence ([byte[]]@(3,[byte]$stationEnabled,[byte]$apEnabled)) 0x80 $TimeoutMs + $null=Send-PakarNetworkRequest $serial ([byte][PakarOpcode]::NetworkConfig) $sequence ([byte[]]@(3,[byte]$stationEnabled,[byte]$apEnabled)) ([byte][PakarOpcode]::Ack) $TimeoutMs # Commit ACK is not connected. Give the scheduled interface apply time, then # perform one read-only query; the script does not retry any stage/commit. Start-Sleep -Milliseconds 750 $sequence++ - $status=Send-PakarNetworkRequest $serial 0x02 $sequence ([byte[]]@()) 0x90 $TimeoutMs + $status=Send-PakarNetworkRequest $serial ([byte][PakarOpcode]::GetStatus) $sequence ([byte[]]@()) ([byte][PakarOpcode]::StatusResponse) $TimeoutMs Read-PakarNetworkStatus $status $stationEnabled $apEnabled } finally { if($secretPointer -ne [IntPtr]::Zero){[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($secretPointer)}