[{"url":"https://api.github.com/repos/commaai/openpilot/issues/38169","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38169/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38169/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38169/events","html_url":"https://github.com/commaai/openpilot/pull/38169","id":4637789799,"node_id":"PR_kwDOBHK6Ic7lLoDR","number":38169,"title":"modeld: simple usbgpu fallback","user":{"login":"Armandpl","id":14967758,"node_id":"MDQ6VXNlcjE0OTY3NzU4","avatar_url":"https://avatars.githubusercontent.com/u/14967758?v=4","gravatar_id":"","url":"https://api.github.com/users/Armandpl","html_url":"https://github.com/Armandpl","followers_url":"https://api.github.com/users/Armandpl/followers","following_url":"https://api.github.com/users/Armandpl/following{/other_user}","gists_url":"https://api.github.com/users/Armandpl/gists{/gist_id}","starred_url":"https://api.github.com/users/Armandpl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Armandpl/subscriptions","organizations_url":"https://api.github.com/users/Armandpl/orgs","repos_url":"https://api.github.com/users/Armandpl/repos","events_url":"https://api.github.com/users/Armandpl/events{/privacy}","received_events_url":"https://api.github.com/users/Armandpl/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-06-11T06:23:04Z","updated_at":"2026-06-11T06:27:02Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38169","html_url":"https://github.com/commaai/openpilot/pull/38169","diff_url":"https://github.com/commaai/openpilot/pull/38169.diff","patch_url":"https://github.com/commaai/openpilot/pull/38169.patch","merged_at":null},"body":"<!-- Please copy and paste the relevant template -->\r\n\r\n<!--- ***** Template: Fingerprint *****\r\n\r\n**Car**\r\nWhich car (make, model, year) this fingerprint is for\r\n\r\n**Route**\r\nA route with the fingerprint\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n**Route**\r\n\r\nRoute: [a route with the bug fix]\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Port *****\r\n\r\n**Checklist**\r\n\r\n- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs\r\n- [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py)\r\n- [ ] route with openpilot:\r\n- [ ] route with stock system:\r\n- [ ] car harness used (if comma doesn't sell it, put N/A):\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Refactor *****\r\n\r\n**Description**\r\n\r\nA description of the refactor, including the goals it accomplishes. \r\n\r\n**Verification**\r\n\r\nExplain how you tested the refactor for regressions. \r\n\r\n\r\n-->\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38169/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38169/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38166","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38166/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38166/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38166/events","html_url":"https://github.com/commaai/openpilot/pull/38166","id":4636392244,"node_id":"PR_kwDOBHK6Ic7lHPPQ","number":38166,"title":"Revert \"Op model16 deep (#38073)\"","user":{"login":"haraschax","id":6804392,"node_id":"MDQ6VXNlcjY4MDQzOTI=","avatar_url":"https://avatars.githubusercontent.com/u/6804392?v=4","gravatar_id":"","url":"https://api.github.com/users/haraschax","html_url":"https://github.com/haraschax","followers_url":"https://api.github.com/users/haraschax/followers","following_url":"https://api.github.com/users/haraschax/following{/other_user}","gists_url":"https://api.github.com/users/haraschax/gists{/gist_id}","starred_url":"https://api.github.com/users/haraschax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haraschax/subscriptions","organizations_url":"https://api.github.com/users/haraschax/orgs","repos_url":"https://api.github.com/users/haraschax/repos","events_url":"https://api.github.com/users/haraschax/events{/privacy}","received_events_url":"https://api.github.com/users/haraschax/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-06-11T01:30:09Z","updated_at":"2026-06-11T01:32:35Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38166","html_url":"https://github.com/commaai/openpilot/pull/38166","diff_url":"https://github.com/commaai/openpilot/pull/38166.diff","patch_url":"https://github.com/commaai/openpilot/pull/38166.patch","merged_at":null},"body":"This reverts commit f02d134f40f5e7be22b182af21b438915a47600e.\r\n\r\n<!-- Please copy and paste the relevant template -->\r\n\r\n<!--- ***** Template: Fingerprint *****\r\n\r\n**Car**\r\nWhich car (make, model, year) this fingerprint is for\r\n\r\n**Route**\r\nA route with the fingerprint\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n**Route**\r\n\r\nRoute: [a route with the bug fix]\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Port *****\r\n\r\n**Checklist**\r\n\r\n- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs\r\n- [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py)\r\n- [ ] route with openpilot:\r\n- [ ] route with stock system:\r\n- [ ] car harness used (if comma doesn't sell it, put N/A):\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Refactor *****\r\n\r\n**Description**\r\n\r\nA description of the refactor, including the goals it accomplishes. \r\n\r\n**Verification**\r\n\r\nExplain how you tested the refactor for regressions. \r\n\r\n\r\n-->\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38166/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38166/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38164","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38164/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38164/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38164/events","html_url":"https://github.com/commaai/openpilot/pull/38164","id":4635156341,"node_id":"PR_kwDOBHK6Ic7lDNOY","number":38164,"title":"Full RL","user":{"login":"haraschax","id":6804392,"node_id":"MDQ6VXNlcjY4MDQzOTI=","avatar_url":"https://avatars.githubusercontent.com/u/6804392?v=4","gravatar_id":"","url":"https://api.github.com/users/haraschax","html_url":"https://github.com/haraschax","followers_url":"https://api.github.com/users/haraschax/followers","following_url":"https://api.github.com/users/haraschax/following{/other_user}","gists_url":"https://api.github.com/users/haraschax/gists{/gist_id}","starred_url":"https://api.github.com/users/haraschax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haraschax/subscriptions","organizations_url":"https://api.github.com/users/haraschax/orgs","repos_url":"https://api.github.com/users/haraschax/repos","events_url":"https://api.github.com/users/haraschax/events{/privacy}","received_events_url":"https://api.github.com/users/haraschax/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":3792665757,"node_id":"LA_kwDOBHK6Ic7iD3yd","url":"https://api.github.com/repos/commaai/openpilot/labels/autonomy","name":"autonomy","color":"d4c5f9","default":false,"description":""}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-06-10T21:35:17Z","updated_at":"2026-06-10T21:37:43Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38164","html_url":"https://github.com/commaai/openpilot/pull/38164","diff_url":"https://github.com/commaai/openpilot/pull/38164.diff","patch_url":"https://github.com/commaai/openpilot/pull/38164.patch","merged_at":null},"body":"<!-- Please copy and paste the relevant template -->\r\n\r\n<!--- ***** Template: Fingerprint *****\r\n\r\n**Car**\r\nWhich car (make, model, year) this fingerprint is for\r\n\r\n**Route**\r\nA route with the fingerprint\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n**Route**\r\n\r\nRoute: [a route with the bug fix]\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Port *****\r\n\r\n**Checklist**\r\n\r\n- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs\r\n- [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py)\r\n- [ ] route with openpilot:\r\n- [ ] route with stock system:\r\n- [ ] car harness used (if comma doesn't sell it, put N/A):\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Refactor *****\r\n\r\n**Description**\r\n\r\nA description of the refactor, including the goals it accomplishes. \r\n\r\n**Verification**\r\n\r\nExplain how you tested the refactor for regressions. \r\n\r\n\r\n-->\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38164/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38164/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38163","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38163/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38163/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38163/events","html_url":"https://github.com/commaai/openpilot/pull/38163","id":4635105844,"node_id":"PR_kwDOBHK6Ic7lDC8G","number":38163,"title":"webrtc: speed ups","user":{"login":"stefpi","id":19478336,"node_id":"MDQ6VXNlcjE5NDc4MzM2","avatar_url":"https://avatars.githubusercontent.com/u/19478336?v=4","gravatar_id":"","url":"https://api.github.com/users/stefpi","html_url":"https://github.com/stefpi","followers_url":"https://api.github.com/users/stefpi/followers","following_url":"https://api.github.com/users/stefpi/following{/other_user}","gists_url":"https://api.github.com/users/stefpi/gists{/gist_id}","starred_url":"https://api.github.com/users/stefpi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stefpi/subscriptions","organizations_url":"https://api.github.com/users/stefpi/orgs","repos_url":"https://api.github.com/users/stefpi/repos","events_url":"https://api.github.com/users/stefpi/events{/privacy}","received_events_url":"https://api.github.com/users/stefpi/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-06-10T21:26:37Z","updated_at":"2026-06-11T02:38:47Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38163","html_url":"https://github.com/commaai/openpilot/pull/38163","diff_url":"https://github.com/commaai/openpilot/pull/38163.diff","patch_url":"https://github.com/commaai/openpilot/pull/38163.patch","merged_at":null},"body":"- patch `aioice` to only get host address of active network interface (wlan0 when on wifi, ppp0 when not)\r\n- use common webrtc session between `startStream` and `addIceCandidates`\r\n- (first time connection speed up): move imports to top of file to move delay to webrtcd server start up not first connection","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38163/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38163/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38161","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38161/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38161/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38161/events","html_url":"https://github.com/commaai/openpilot/pull/38161","id":4627174996,"node_id":"PR_kwDOBHK6Ic7kpBee","number":38161,"title":"feat(webrtc): addIceCandidate dispatcher","user":{"login":"stefpi","id":19478336,"node_id":"MDQ6VXNlcjE5NDc4MzM2","avatar_url":"https://avatars.githubusercontent.com/u/19478336?v=4","gravatar_id":"","url":"https://api.github.com/users/stefpi","html_url":"https://github.com/stefpi","followers_url":"https://api.github.com/users/stefpi/followers","following_url":"https://api.github.com/users/stefpi/following{/other_user}","gists_url":"https://api.github.com/users/stefpi/gists{/gist_id}","starred_url":"https://api.github.com/users/stefpi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stefpi/subscriptions","organizations_url":"https://api.github.com/users/stefpi/orgs","repos_url":"https://api.github.com/users/stefpi/repos","events_url":"https://api.github.com/users/stefpi/events{/privacy}","received_events_url":"https://api.github.com/users/stefpi/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-06-10T01:51:43Z","updated_at":"2026-06-11T02:41:15Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38161","html_url":"https://github.com/commaai/openpilot/pull/38161","diff_url":"https://github.com/commaai/openpilot/pull/38161.diff","patch_url":"https://github.com/commaai/openpilot/pull/38161.patch","merged_at":null},"body":"inbound ice trickling through athenad","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38161/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38161/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38159","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38159/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38159/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38159/events","html_url":"https://github.com/commaai/openpilot/pull/38159","id":4627055393,"node_id":"PR_kwDOBHK6Ic7kooHp","number":38159,"title":"Improve lateral maneuvers","user":{"login":"elkoled","id":29231988,"node_id":"MDQ6VXNlcjI5MjMxOTg4","avatar_url":"https://avatars.githubusercontent.com/u/29231988?v=4","gravatar_id":"","url":"https://api.github.com/users/elkoled","html_url":"https://github.com/elkoled","followers_url":"https://api.github.com/users/elkoled/followers","following_url":"https://api.github.com/users/elkoled/following{/other_user}","gists_url":"https://api.github.com/users/elkoled/gists{/gist_id}","starred_url":"https://api.github.com/users/elkoled/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elkoled/subscriptions","organizations_url":"https://api.github.com/users/elkoled/orgs","repos_url":"https://api.github.com/users/elkoled/repos","events_url":"https://api.github.com/users/elkoled/events{/privacy}","received_events_url":"https://api.github.com/users/elkoled/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-06-10T01:29:13Z","updated_at":"2026-06-11T01:14:38Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38159","html_url":"https://github.com/commaai/openpilot/pull/38159","diff_url":"https://github.com/commaai/openpilot/pull/38159.diff","patch_url":"https://github.com/commaai/openpilot/pull/38159.patch","merged_at":null},"body":"New report example:\r\n[VOLKSWAGEN_ID4_MK1_aebd8f1d4ea16066_00000011--43d0c4fc2c.html](https://github.com/user-attachments/files/28776678/VOLKSWAGEN_ID4_MK1_aebd8f1d4ea16066_00000011--43d0c4fc2c.html)\r\n\r\nNew Jitter maneuver, the frequency could be reduced a little:\r\n<img width=\"838\" height=\"1128\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d7447fae-d960-45b9-a170-9e3107764b56\" />\r\n\r\n\r\nAdds #38102\r\nClosing #38107 \r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38159/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38159/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38158","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38158/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38158/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38158/events","html_url":"https://github.com/commaai/openpilot/pull/38158","id":4626985014,"node_id":"PR_kwDOBHK6Ic7koZRk","number":38158,"title":"CI: incremental device checkout","user":{"login":"adeebshihadeh","id":8762862,"node_id":"MDQ6VXNlcjg3NjI4NjI=","avatar_url":"https://avatars.githubusercontent.com/u/8762862?v=4","gravatar_id":"","url":"https://api.github.com/users/adeebshihadeh","html_url":"https://github.com/adeebshihadeh","followers_url":"https://api.github.com/users/adeebshihadeh/followers","following_url":"https://api.github.com/users/adeebshihadeh/following{/other_user}","gists_url":"https://api.github.com/users/adeebshihadeh/gists{/gist_id}","starred_url":"https://api.github.com/users/adeebshihadeh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adeebshihadeh/subscriptions","organizations_url":"https://api.github.com/users/adeebshihadeh/orgs","repos_url":"https://api.github.com/users/adeebshihadeh/repos","events_url":"https://api.github.com/users/adeebshihadeh/events{/privacy}","received_events_url":"https://api.github.com/users/adeebshihadeh/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":1799164541,"node_id":"MDU6TGFiZWwxNzk5MTY0NTQx","url":"https://api.github.com/repos/commaai/openpilot/labels/CI%20/%20testing","name":"CI / testing","color":"23eacc","default":false,"description":""}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-06-10T01:15:04Z","updated_at":"2026-06-10T01:17:34Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38158","html_url":"https://github.com/commaai/openpilot/pull/38158","diff_url":"https://github.com/commaai/openpilot/pull/38158.diff","patch_url":"https://github.com/commaai/openpilot/pull/38158.patch","merged_at":null},"body":"Make the device checkout incremental for both variants. Measured on a CI device with a tiny diff:\n\n| | before | after |\n|---|---|---|\n| safe checkout | 33s warm, 90-180s on stale fleet devices | **3-4s** |\n| unsafe checkout | 3-8s, 20-55s tail on branch switches | **2-3s** |\n| corrupted-repo recovery | 90-180s | ~3s (fallback), ~90s full re-clone |\n\nValidated through 10 builds on this branch; typical `git checkout` step is now 3-6s wall with no outliers, and `check dirty` stays <1s.\n\n### what changed\n- safe no longer wipes the worktree: fetch + `checkout --force` + `clean -xdff` in `SOURCE_DIR`, then a delta rsync to `TEST_DIR`. Pack files are synced by name (`--ignore-existing`) because git freshens pack mtimes on object reuse, which made a plain rsync re-copy the ~850MB base pack every run.\n- one shared `sync_repo` for both variants: parallel checkout workers + parallel submodule update, `submodule update --force` replaces the duplicate pre-update foreach, redundant `reset --hard` dropped, LFS smudge skipped during checkout and batch-downloaded in `git lfs pull`.\n- `unsafe || safe || nuke` ladder: bash ignores `set -e` inside functions invoked on the left of `||`, so the bodies are `&&` chains ending in a HEAD assertion (the old safe fallback ran under `set +e` and could silently leave the wrong commit). nuke re-clones from scratch, gated on the commit being an advertised tip since nuking can't fix a network failure.\n- `git clean` choking on root-owned leftovers (e.g. `.venv` from release builds) chowns and retries instead of failing the checkout.\n\nnote: a device's first run after this merges pays a one-time conversion (~30-100s) to bring its stale `SOURCE_DIR` up to date, and devices bouncing between old-script and new-script branches occasionally re-pay a small conversion until this is everywhere.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38158/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38158/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38156","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38156/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38156/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38156/events","html_url":"https://github.com/commaai/openpilot/pull/38156","id":4625430906,"node_id":"PR_kwDOBHK6Ic7kjVjG","number":38156,"title":"fix: MetaDrive sim on macOS (#33207)","user":{"login":"imperatormk","id":23061008,"node_id":"MDQ6VXNlcjIzMDYxMDA4","avatar_url":"https://avatars.githubusercontent.com/u/23061008?v=4","gravatar_id":"","url":"https://api.github.com/users/imperatormk","html_url":"https://github.com/imperatormk","followers_url":"https://api.github.com/users/imperatormk/followers","following_url":"https://api.github.com/users/imperatormk/following{/other_user}","gists_url":"https://api.github.com/users/imperatormk/gists{/gist_id}","starred_url":"https://api.github.com/users/imperatormk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/imperatormk/subscriptions","organizations_url":"https://api.github.com/users/imperatormk/orgs","repos_url":"https://api.github.com/users/imperatormk/repos","events_url":"https://api.github.com/users/imperatormk/events{/privacy}","received_events_url":"https://api.github.com/users/imperatormk/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-06-09T20:38:39Z","updated_at":"2026-06-09T20:46:04Z","closed_at":null,"assignee":null,"author_association":"NONE","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38156","html_url":"https://github.com/commaai/openpilot/pull/38156","diff_url":"https://github.com/commaai/openpilot/pull/38156.diff","patch_url":"https://github.com/commaai/openpilot/pull/38156.patch","merged_at":null},"body":"Makes `pytest tools/sim/tests/test_metadrive_bridge.py` pass on macOS, no test changes. Fixes #33207. Requires commaai/metadrive#15 (without it the road is invisible to the model on macOS and the car won't drive).\r\n\r\nThree points worked on:\r\n\r\n- manager dies silently at startup: `prepare()` pre-imports the ui module (pyray -> Cocoa) inside the forkpty child, which aborts on macOS. Pre-importing only helps with fork start method, so skip it under spawn\r\n- locationd rejects every cameraOdometry, so openpilot never engages: sim camerad's synthetic `eof = frame_id * 0.05` is in a different clock domain than the IMU timestamps. Stamp eof from `time.monotonic_ns()`\r\n- modeld only hits 13Hz on plain `DEV=CPU`, starving locationd. Use `CPU:LLVM` like everywhere else, with a probe fallback since libLLVM isn't guaranteed on macOS (afaik but safer anyway)\r\n\r\n**Verification**\r\n\r\nVerified on M1 Pro (macOS 27 beta)\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38156/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38156/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38154","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38154/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38154/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38154/events","html_url":"https://github.com/commaai/openpilot/pull/38154","id":4624369651,"node_id":"PR_kwDOBHK6Ic7kf2X0","number":38154,"title":"New sounds","user":{"login":"elkoled","id":29231988,"node_id":"MDQ6VXNlcjI5MjMxOTg4","avatar_url":"https://avatars.githubusercontent.com/u/29231988?v=4","gravatar_id":"","url":"https://api.github.com/users/elkoled","html_url":"https://github.com/elkoled","followers_url":"https://api.github.com/users/elkoled/followers","following_url":"https://api.github.com/users/elkoled/following{/other_user}","gists_url":"https://api.github.com/users/elkoled/gists{/gist_id}","starred_url":"https://api.github.com/users/elkoled/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elkoled/subscriptions","organizations_url":"https://api.github.com/users/elkoled/orgs","repos_url":"https://api.github.com/users/elkoled/repos","events_url":"https://api.github.com/users/elkoled/events{/privacy}","received_events_url":"https://api.github.com/users/elkoled/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":3,"created_at":"2026-06-09T18:01:42Z","updated_at":"2026-06-11T01:37:02Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38154","html_url":"https://github.com/commaai/openpilot/pull/38154","diff_url":"https://github.com/commaai/openpilot/pull/38154.diff","patch_url":"https://github.com/commaai/openpilot/pull/38154.patch","merged_at":null},"body":"Soundd behavior change:\r\nLooped sounds complete instead of being cut off when there is no pending alert.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38154/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38154/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38153","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38153/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38153/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38153/events","html_url":"https://github.com/commaai/openpilot/pull/38153","id":4624289342,"node_id":"PR_kwDOBHK6Ic7kflXw","number":38153,"title":"mici ui: add branch switcher","user":{"login":"adeebshihadeh","id":8762862,"node_id":"MDQ6VXNlcjg3NjI4NjI=","avatar_url":"https://avatars.githubusercontent.com/u/8762862?v=4","gravatar_id":"","url":"https://api.github.com/users/adeebshihadeh","html_url":"https://github.com/adeebshihadeh","followers_url":"https://api.github.com/users/adeebshihadeh/followers","following_url":"https://api.github.com/users/adeebshihadeh/following{/other_user}","gists_url":"https://api.github.com/users/adeebshihadeh/gists{/gist_id}","starred_url":"https://api.github.com/users/adeebshihadeh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adeebshihadeh/subscriptions","organizations_url":"https://api.github.com/users/adeebshihadeh/orgs","repos_url":"https://api.github.com/users/adeebshihadeh/repos","events_url":"https://api.github.com/users/adeebshihadeh/events{/privacy}","received_events_url":"https://api.github.com/users/adeebshihadeh/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":4253734485,"node_id":"LA_kwDOBHK6Ic79itZV","url":"https://api.github.com/repos/commaai/openpilot/labels/ui","name":"ui","color":"d9570b","default":false,"description":""}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-06-09T17:49:04Z","updated_at":"2026-06-09T17:54:06Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38153","html_url":"https://github.com/commaai/openpilot/pull/38153","diff_url":"https://github.com/commaai/openpilot/pull/38153.diff","patch_url":"https://github.com/commaai/openpilot/pull/38153.patch","merged_at":null},"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38153/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38153/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38151","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38151/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38151/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38151/events","html_url":"https://github.com/commaai/openpilot/pull/38151","id":4618271194,"node_id":"PR_kwDOBHK6Ic7kLpnq","number":38151,"title":"sim: use wall-clock time for IMU timestamps","user":{"login":"sushantlokhande14","id":102607295,"node_id":"U_kgDOBh2pvw","avatar_url":"https://avatars.githubusercontent.com/u/102607295?v=4","gravatar_id":"","url":"https://api.github.com/users/sushantlokhande14","html_url":"https://github.com/sushantlokhande14","followers_url":"https://api.github.com/users/sushantlokhande14/followers","following_url":"https://api.github.com/users/sushantlokhande14/following{/other_user}","gists_url":"https://api.github.com/users/sushantlokhande14/gists{/gist_id}","starred_url":"https://api.github.com/users/sushantlokhande14/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sushantlokhande14/subscriptions","organizations_url":"https://api.github.com/users/sushantlokhande14/orgs","repos_url":"https://api.github.com/users/sushantlokhande14/repos","events_url":"https://api.github.com/users/sushantlokhande14/events{/privacy}","received_events_url":"https://api.github.com/users/sushantlokhande14/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":2148617273,"node_id":"MDU6TGFiZWwyMTQ4NjE3Mjcz","url":"https://api.github.com/repos/commaai/openpilot/labels/simulation","name":"simulation","color":"0e8a16","default":false,"description":"running openpilot in environments like CARLA"},{"id":2735599878,"node_id":"MDU6TGFiZWwyNzM1NTk5ODc4","url":"https://api.github.com/repos/commaai/openpilot/labels/tools","name":"tools","color":"bfd4f2","default":false,"description":""}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-06-09T02:35:57Z","updated_at":"2026-06-09T02:42:47Z","closed_at":null,"assignee":null,"author_association":"NONE","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38151","html_url":"https://github.com/commaai/openpilot/pull/38151","diff_url":"https://github.com/commaai/openpilot/pull/38151.diff","patch_url":"https://github.com/commaai/openpilot/pull/38151.patch","merged_at":null},"body":"Replace logMonoTime with time.time() for accelerometer and gyroscope timestamps, matching the approach used by GPS messages and ensuring consistent timing across simulated sensors.\n\nThis resolves the TODO comment in the code and improves consistency across simulated sensor implementations.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38151/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38151/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38138","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38138/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38138/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38138/events","html_url":"https://github.com/commaai/openpilot/pull/38138","id":4592966560,"node_id":"PR_kwDOBHK6Ic7i5Yl1","number":38138,"title":"prereq for bigger usbgpu models","user":{"login":"Armandpl","id":14967758,"node_id":"MDQ6VXNlcjE0OTY3NzU4","avatar_url":"https://avatars.githubusercontent.com/u/14967758?v=4","gravatar_id":"","url":"https://api.github.com/users/Armandpl","html_url":"https://github.com/Armandpl","followers_url":"https://api.github.com/users/Armandpl/followers","following_url":"https://api.github.com/users/Armandpl/following{/other_user}","gists_url":"https://api.github.com/users/Armandpl/gists{/gist_id}","starred_url":"https://api.github.com/users/Armandpl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Armandpl/subscriptions","organizations_url":"https://api.github.com/users/Armandpl/orgs","repos_url":"https://api.github.com/users/Armandpl/repos","events_url":"https://api.github.com/users/Armandpl/events{/privacy}","received_events_url":"https://api.github.com/users/Armandpl/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-06-04T23:52:22Z","updated_at":"2026-06-05T22:22:52Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38138","html_url":"https://github.com/commaai/openpilot/pull/38138","diff_url":"https://github.com/commaai/openpilot/pull/38138.diff","patch_url":"https://github.com/commaai/openpilot/pull/38138.patch","merged_at":null},"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38138/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38138/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38134","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38134/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38134/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38134/events","html_url":"https://github.com/commaai/openpilot/pull/38134","id":4586238840,"node_id":"PR_kwDOBHK6Ic7ijJqA","number":38134,"title":"move conditions for belowEngageSpeed into opendbc","user":{"login":"belm0","id":1708631,"node_id":"MDQ6VXNlcjE3MDg2MzE=","avatar_url":"https://avatars.githubusercontent.com/u/1708631?v=4","gravatar_id":"","url":"https://api.github.com/users/belm0","html_url":"https://github.com/belm0","followers_url":"https://api.github.com/users/belm0/followers","following_url":"https://api.github.com/users/belm0/following{/other_user}","gists_url":"https://api.github.com/users/belm0/gists{/gist_id}","starred_url":"https://api.github.com/users/belm0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/belm0/subscriptions","organizations_url":"https://api.github.com/users/belm0/orgs","repos_url":"https://api.github.com/users/belm0/repos","events_url":"https://api.github.com/users/belm0/events{/privacy}","received_events_url":"https://api.github.com/users/belm0/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":4067014917,"node_id":"LA_kwDOBHK6Ic7yabkF","url":"https://api.github.com/repos/commaai/openpilot/labels/car","name":"car","color":"d44211","default":false,"description":"vehicle-specific"}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-06-04T05:58:36Z","updated_at":"2026-06-04T06:05:29Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38134","html_url":"https://github.com/commaai/openpilot/pull/38134","diff_url":"https://github.com/commaai/openpilot/pull/38134.diff","patch_url":"https://github.com/commaai/openpilot/pull/38134.patch","merged_at":null},"body":"Previously belowEngageSpeed conditions where calculated by car_specific.py.\r\n\r\nAdded CarState.belowEngageSpeed and moved conditions into carstate logic, see https://github.com/commaai/opendbc/pull/3435\r\n\r\nFixes GM regression in brake threshold for standstill engage caused by #37857.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38134/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38134/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38131","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38131/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38131/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38131/events","html_url":"https://github.com/commaai/openpilot/pull/38131","id":4584017793,"node_id":"PR_kwDOBHK6Ic7ibz-E","number":38131,"title":"Use single driving ONNX for modeld","user":{"login":"haraschax","id":6804392,"node_id":"MDQ6VXNlcjY4MDQzOTI=","avatar_url":"https://avatars.githubusercontent.com/u/6804392?v=4","gravatar_id":"","url":"https://api.github.com/users/haraschax","html_url":"https://github.com/haraschax","followers_url":"https://api.github.com/users/haraschax/followers","following_url":"https://api.github.com/users/haraschax/following{/other_user}","gists_url":"https://api.github.com/users/haraschax/gists{/gist_id}","starred_url":"https://api.github.com/users/haraschax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haraschax/subscriptions","organizations_url":"https://api.github.com/users/haraschax/orgs","repos_url":"https://api.github.com/users/haraschax/repos","events_url":"https://api.github.com/users/haraschax/events{/privacy}","received_events_url":"https://api.github.com/users/haraschax/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-06-03T22:06:53Z","updated_at":"2026-06-03T22:09:25Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38131","html_url":"https://github.com/commaai/openpilot/pull/38131","diff_url":"https://github.com/commaai/openpilot/pull/38131.diff","patch_url":"https://github.com/commaai/openpilot/pull/38131.patch","merged_at":null},"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38131/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38131/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38130","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38130/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38130/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38130/events","html_url":"https://github.com/commaai/openpilot/pull/38130","id":4576014065,"node_id":"PR_kwDOBHK6Ic7iBdWN","number":38130,"title":"fix: webjoystick connection from firefox","user":{"login":"stefpi","id":19478336,"node_id":"MDQ6VXNlcjE5NDc4MzM2","avatar_url":"https://avatars.githubusercontent.com/u/19478336?v=4","gravatar_id":"","url":"https://api.github.com/users/stefpi","html_url":"https://github.com/stefpi","followers_url":"https://api.github.com/users/stefpi/followers","following_url":"https://api.github.com/users/stefpi/following{/other_user}","gists_url":"https://api.github.com/users/stefpi/gists{/gist_id}","starred_url":"https://api.github.com/users/stefpi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stefpi/subscriptions","organizations_url":"https://api.github.com/users/stefpi/orgs","repos_url":"https://api.github.com/users/stefpi/repos","events_url":"https://api.github.com/users/stefpi/events{/privacy}","received_events_url":"https://api.github.com/users/stefpi/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":2735599878,"node_id":"MDU6TGFiZWwyNzM1NTk5ODc4","url":"https://api.github.com/repos/commaai/openpilot/labels/tools","name":"tools","color":"bfd4f2","default":false,"description":""}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-06-03T00:51:28Z","updated_at":"2026-06-03T16:13:18Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38130","html_url":"https://github.com/commaai/openpilot/pull/38130","diff_url":"https://github.com/commaai/openpilot/pull/38130.diff","patch_url":"https://github.com/commaai/openpilot/pull/38130.patch","merged_at":null},"body":"- add STUN server to resolve mDNS issues on firefox\r\n- flip camera to wideRoad (and controls)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38130/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38130/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38107","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38107/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38107/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38107/events","html_url":"https://github.com/commaai/openpilot/issues/38107","id":4552189638,"node_id":"I_kwDOBHK6Ic8AAAABD1Tmxg","number":38107,"title":"lateral maneuver runner bugs","user":{"login":"sshane","id":25857203,"node_id":"MDQ6VXNlcjI1ODU3MjAz","avatar_url":"https://avatars.githubusercontent.com/u/25857203?v=4","gravatar_id":"","url":"https://api.github.com/users/sshane","html_url":"https://github.com/sshane","followers_url":"https://api.github.com/users/sshane/followers","following_url":"https://api.github.com/users/sshane/following{/other_user}","gists_url":"https://api.github.com/users/sshane/gists{/gist_id}","starred_url":"https://api.github.com/users/sshane/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sshane/subscriptions","organizations_url":"https://api.github.com/users/sshane/orgs","repos_url":"https://api.github.com/users/sshane/repos","events_url":"https://api.github.com/users/sshane/events{/privacy}","received_events_url":"https://api.github.com/users/sshane/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[{"login":"elkoled","id":29231988,"node_id":"MDQ6VXNlcjI5MjMxOTg4","avatar_url":"https://avatars.githubusercontent.com/u/29231988?v=4","gravatar_id":"","url":"https://api.github.com/users/elkoled","html_url":"https://github.com/elkoled","followers_url":"https://api.github.com/users/elkoled/followers","following_url":"https://api.github.com/users/elkoled/following{/other_user}","gists_url":"https://api.github.com/users/elkoled/gists{/gist_id}","starred_url":"https://api.github.com/users/elkoled/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elkoled/subscriptions","organizations_url":"https://api.github.com/users/elkoled/orgs","repos_url":"https://api.github.com/users/elkoled/repos","events_url":"https://api.github.com/users/elkoled/events{/privacy}","received_events_url":"https://api.github.com/users/elkoled/received_events","type":"User","user_view_type":"public","site_admin":false}],"milestone":null,"comments":2,"created_at":"2026-05-29T23:14:34Z","updated_at":"2026-06-10T20:42:45Z","closed_at":null,"assignee":{"login":"elkoled","id":29231988,"node_id":"MDQ6VXNlcjI5MjMxOTg4","avatar_url":"https://avatars.githubusercontent.com/u/29231988?v=4","gravatar_id":"","url":"https://api.github.com/users/elkoled","html_url":"https://github.com/elkoled","followers_url":"https://api.github.com/users/elkoled/followers","following_url":"https://api.github.com/users/elkoled/following{/other_user}","gists_url":"https://api.github.com/users/elkoled/gists{/gist_id}","starred_url":"https://api.github.com/users/elkoled/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elkoled/subscriptions","organizations_url":"https://api.github.com/users/elkoled/orgs","repos_url":"https://api.github.com/users/elkoled/repos","events_url":"https://api.github.com/users/elkoled/events{/privacy}","received_events_url":"https://api.github.com/users/elkoled/received_events","type":"User","user_view_type":"public","site_admin":false},"author_association":"COLLABORATOR","issue_field_values":[],"type":null,"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"Tried it on the Altima, but it wasn't usable. It usually aborted maneuvers saying road not straight.\n\n### Bugs\n\n- [x] Add gasPressed like steeringPressed as criteria to not start, often I would tap gas slightly but it didn't prevent it from starting and it would abort because speed was slightly above 20 mph\n- [x] This maneuver *always* said road not straight a few hundred ms after starting: https://github.com/commaai/openpilot/pull/38102 (https://connect.comma.ai/33bca2f726ee226b/00000042--ea5ceda8fd and https://connect.comma.ai/33bca2f726ee226b/00000044--bf871d52cf). \n- [x] The other maneuvers reported road not straight the majority of the time, I couldn't get past the sine maneuver at 20 mph. Here's a route with no jitter maneuver where it got stuck: https://connect.comma.ai/33bca2f726ee226b/00000046--6d9ffa5af5\n   - Only check on entrance of maneuver?\n- [x] It would start the maneuvers silently. Parked cars would have been hit had I not overrode in some cases. Is there no beep to warn when it starts or did I just miss it? I would quickly check if the model's road edges describe this, if not a beep is fine.\n- [x] You can press the lateral maneuvers button while onroad, but it doesn't do anything\n\n\n### Report notes\n\n- [x] idk if just me, but this is hard to parse. Which lines correspond to the y axis values on the right vs. left? Should be color coded or do what is generally recognized in the plotting world\n       <img width=\"817\" height=\"1020\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/afd18a62-9ede-45a8-8041-1c2b788c6cc1\" />\n\n- [x] what is desired and actual lat accel? is it roll compensated? use real log.capnp signal names like long report, which is unambiguous and requires no thought:\n   <img width=\"474\" height=\"190\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4ea11497-7c86-48a0-9997-99a94c72e932\" />\n- [x] we mainly care about two things: how is the response from our final request to the car vs. what the car actuates? and how is openpilot's limiting interfering with what we actually desire? you'll want to plot both `carControl` and `carOutput` signals. It's unclear which we're plotting. If it's just `carControl` I don't think you can gain anything useful from the plots, say if the angle or torque limiting is super severe\n- [x] in our plots green is usually actual and orange is usually desired, so it's flipped for lateral plots, but this is debatable. at least match longitudinal report","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38107/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38107/timeline","performed_via_github_app":null,"state_reason":null,"pinned_comment":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38103","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38103/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38103/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38103/events","html_url":"https://github.com/commaai/openpilot/pull/38103","id":4546024882,"node_id":"PR_kwDOBHK6Ic7ghK1C","number":38103,"title":"tools/lib: add auto_camera_source for multi-source camera file resolution","user":{"login":"Ininsico","id":157946121,"node_id":"U_kgDOCWoRCQ","avatar_url":"https://avatars.githubusercontent.com/u/157946121?v=4","gravatar_id":"","url":"https://api.github.com/users/Ininsico","html_url":"https://github.com/Ininsico","followers_url":"https://api.github.com/users/Ininsico/followers","following_url":"https://api.github.com/users/Ininsico/following{/other_user}","gists_url":"https://api.github.com/users/Ininsico/gists{/gist_id}","starred_url":"https://api.github.com/users/Ininsico/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ininsico/subscriptions","organizations_url":"https://api.github.com/users/Ininsico/orgs","repos_url":"https://api.github.com/users/Ininsico/repos","events_url":"https://api.github.com/users/Ininsico/events{/privacy}","received_events_url":"https://api.github.com/users/Ininsico/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":2735599878,"node_id":"MDU6TGFiZWwyNzM1NTk5ODc4","url":"https://api.github.com/repos/commaai/openpilot/labels/tools","name":"tools","color":"bfd4f2","default":false,"description":""}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-05-29T05:47:29Z","updated_at":"2026-05-29T06:21:30Z","closed_at":null,"assignee":null,"author_association":"NONE","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38103","html_url":"https://github.com/commaai/openpilot/pull/38103","diff_url":"https://github.com/commaai/openpilot/pull/38103.diff","patch_url":"https://github.com/commaai/openpilot/pull/38103.patch","merged_at":null},"body":"## Summary\n\nAdds `auto_camera_source()` â€” the camera equivalent of the existing `auto_source()` for logs â€” enabling smart multi-source resolution of camera files (fcamera, dcamera, ecamera, qcamera) across all data sources.\n\n## Motivation\n\nResolves the TODO at `tools/lib/logreader.py:149`:\n```\n# TODO this should apply to camera files as well\n```\n\nPreviously, camera file resolution had no multi-source fallback mechanism. Tools like `replay`, `clip`, and `cabana` had to construct camera file URLs manually through `Route`, without any of the smart fallback behavior that logs already enjoyed (rlog â†’ qlog across internal API, comma API, openpilot CI, commaCarSegments).\n\n## Changes\n\n### `tools/lib/file_sources.py`\nExtended `comma_api_source()` to serve all four camera file types through the Route API:\n- `FileName.FCAMERA` â†’ `route.camera_paths()`\n- `FileName.DCAMERA` â†’ `route.dcamera_paths()`\n- `FileName.ECAMERA` â†’ `route.ecamera_paths()`\n- `FileName.QCAMERA` â†’ `route.qcamera_paths()`\n\nThe previous `else` branch (which handled both QLOG and unknown types) is now explicit per type, with a `ValueError` raised for truly unknown file types.\n\n### `tools/lib/logreader.py`\nAdded `auto_camera_source(identifier, sources, camera_type)` function that:\n1. Parses route identifiers (supporting all existing formats: `/slice`, `--segment`, pipe `|`, etc.)\n2. Iterates through provided sources in order, collecting camera file URLs\n3. Falls back across sources when a source only partially covers the requested segments\n4. Returns a flat list of resolved file URLs\n5. Raises `LogsUnavailable` with a descriptive error (including per-source exception details) when files can't be found\n\n### `tools/lib/tests/test_logreader.py`\nAdded `TestCameraSource` class with 12 test cases:\n\n| Test | What it covers |\n|------|---------------|\n| `test_auto_camera_source_no_source` | Empty source list raises LogsUnavailable |\n| `test_auto_camera_source_no_source_default_camera` | Default camera type (FCAMERA) |\n| `test_auto_camera_source_found` | Single segment, single source |\n| `test_auto_camera_source_multiple_segments` | Multiple segments resolved at once |\n| `test_auto_camera_source_source_fallback` | First source empty, second succeeds |\n| `test_auto_camera_source_partial_fallback` | Each source provides some segments |\n| `test_auto_camera_source_error_then_success` | Source raises exception, fallback succeeds |\n| `test_auto_camera_source_all_fail` | All sources fail â†’ LogsUnavailable |\n| `test_auto_camera_source_route_with_slash` | Pipe-separated route name |\n| `test_auto_camera_source_route_with_segment` | `--N` segment notation |\n| `test_comma_api_source_extended` | All 6 file types work through comma_api_source |\n| `test_comma_api_source_unknown_type` | Unknown type raises ValueError |\n\n## Compatibility\n\n- `auto_camera_source()` works with all existing sources (`comma_api_source`, `openpilotci_source`, `internal_source`) â€” they already construct URLs from the `FileNames` tuple parameter\n- `comma_car_segments_source` is unaffected (it doesn't use the `fns` parameter)\n- Backwards compatible: existing `comma_api_source` callers passing RLOG/QLOG see zero behavior change\n\n## Usage Example\n\n```python\nfrom openpilot.tools.lib.logreader import auto_camera_source\nfrom openpilot.tools.lib.file_sources import comma_api_source, openpilotci_source\n\n# Resolve fcamera.hevc for segment 5 of a route\nurls = auto_camera_source(\n    a2a0ccea32023010/2023-07-27--13-01-19/5,\n    sources=[comma_api_source, openpilotci_source],\n    camera_type=FileName.FCAMERA,\n)\n# urls == [https://.../5/fcamera.hevc]\n```\n\n## Verification\n\nAll 12 new tests exercise the function logic through mocks. The `test_comma_api_source_extended` test validates that `comma_api_source` correctly dispatches to `Route.camera_paths()`, `Route.dcamera_paths()`, `Route.ecamera_paths()`, and `Route.qcamera_paths()`.\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38103/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38103/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38102","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38102/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38102/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38102/events","html_url":"https://github.com/commaai/openpilot/pull/38102","id":4545593436,"node_id":"PR_kwDOBHK6Ic7gfwKt","number":38102,"title":"lateral maneuvers: add jitter","user":{"login":"sshane","id":25857203,"node_id":"MDQ6VXNlcjI1ODU3MjAz","avatar_url":"https://avatars.githubusercontent.com/u/25857203?v=4","gravatar_id":"","url":"https://api.github.com/users/sshane","html_url":"https://github.com/sshane","followers_url":"https://api.github.com/users/sshane/followers","following_url":"https://api.github.com/users/sshane/following{/other_user}","gists_url":"https://api.github.com/users/sshane/gists{/gist_id}","starred_url":"https://api.github.com/users/sshane/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sshane/subscriptions","organizations_url":"https://api.github.com/users/sshane/orgs","repos_url":"https://api.github.com/users/sshane/repos","events_url":"https://api.github.com/users/sshane/events{/privacy}","received_events_url":"https://api.github.com/users/sshane/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":2735599878,"node_id":"MDU6TGFiZWwyNzM1NTk5ODc4","url":"https://api.github.com/repos/commaai/openpilot/labels/tools","name":"tools","color":"bfd4f2","default":false,"description":""}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":0,"created_at":"2026-05-29T04:08:48Z","updated_at":"2026-05-29T04:08:59Z","closed_at":null,"assignee":null,"author_association":"COLLABORATOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38102","html_url":"https://github.com/commaai/openpilot/pull/38102","diff_url":"https://github.com/commaai/openpilot/pull/38102.diff","patch_url":"https://github.com/commaai/openpilot/pull/38102.patch","merged_at":null},"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38102/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38102/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38098","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38098/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38098/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38098/events","html_url":"https://github.com/commaai/openpilot/pull/38098","id":4537926204,"node_id":"PR_kwDOBHK6Ic7gGsiR","number":38098,"title":"usbgpu: fallback on small model","user":{"login":"Armandpl","id":14967758,"node_id":"MDQ6VXNlcjE0OTY3NzU4","avatar_url":"https://avatars.githubusercontent.com/u/14967758?v=4","gravatar_id":"","url":"https://api.github.com/users/Armandpl","html_url":"https://github.com/Armandpl","followers_url":"https://api.github.com/users/Armandpl/followers","following_url":"https://api.github.com/users/Armandpl/following{/other_user}","gists_url":"https://api.github.com/users/Armandpl/gists{/gist_id}","starred_url":"https://api.github.com/users/Armandpl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Armandpl/subscriptions","organizations_url":"https://api.github.com/users/Armandpl/orgs","repos_url":"https://api.github.com/users/Armandpl/repos","events_url":"https://api.github.com/users/Armandpl/events{/privacy}","received_events_url":"https://api.github.com/users/Armandpl/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-05-28T05:21:07Z","updated_at":"2026-06-11T05:58:56Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38098","html_url":"https://github.com/commaai/openpilot/pull/38098","diff_url":"https://github.com/commaai/openpilot/pull/38098.diff","patch_url":"https://github.com/commaai/openpilot/pull/38098.patch","merged_at":null},"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38098/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38098/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38097","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38097/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38097/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38097/events","html_url":"https://github.com/commaai/openpilot/pull/38097","id":4537330974,"node_id":"PR_kwDOBHK6Ic7gExJN","number":38097,"title":"modeld: always build big model for release","user":{"login":"Armandpl","id":14967758,"node_id":"MDQ6VXNlcjE0OTY3NzU4","avatar_url":"https://avatars.githubusercontent.com/u/14967758?v=4","gravatar_id":"","url":"https://api.github.com/users/Armandpl","html_url":"https://github.com/Armandpl","followers_url":"https://api.github.com/users/Armandpl/followers","following_url":"https://api.github.com/users/Armandpl/following{/other_user}","gists_url":"https://api.github.com/users/Armandpl/gists{/gist_id}","starred_url":"https://api.github.com/users/Armandpl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Armandpl/subscriptions","organizations_url":"https://api.github.com/users/Armandpl/orgs","repos_url":"https://api.github.com/users/Armandpl/repos","events_url":"https://api.github.com/users/Armandpl/events{/privacy}","received_events_url":"https://api.github.com/users/Armandpl/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-05-28T02:51:03Z","updated_at":"2026-05-28T20:01:17Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38097","html_url":"https://github.com/commaai/openpilot/pull/38097","diff_url":"https://github.com/commaai/openpilot/pull/38097.diff","patch_url":"https://github.com/commaai/openpilot/pull/38097.patch","merged_at":null},"body":"- [ ] if usbgpu plugged into ci build devices, they'll default to running test_onroad.py and model_replay.py with usbgpu, need so way to make them run both with and without usbgpu?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38097/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38097/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38094","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38094/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38094/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38094/events","html_url":"https://github.com/commaai/openpilot/pull/38094","id":4529022753,"node_id":"PR_kwDOBHK6Ic7fptgR","number":38094,"title":"modeld/SConscript: depend on tg HEAD + git status","user":{"login":"Armandpl","id":14967758,"node_id":"MDQ6VXNlcjE0OTY3NzU4","avatar_url":"https://avatars.githubusercontent.com/u/14967758?v=4","gravatar_id":"","url":"https://api.github.com/users/Armandpl","html_url":"https://github.com/Armandpl","followers_url":"https://api.github.com/users/Armandpl/followers","following_url":"https://api.github.com/users/Armandpl/following{/other_user}","gists_url":"https://api.github.com/users/Armandpl/gists{/gist_id}","starred_url":"https://api.github.com/users/Armandpl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Armandpl/subscriptions","organizations_url":"https://api.github.com/users/Armandpl/orgs","repos_url":"https://api.github.com/users/Armandpl/repos","events_url":"https://api.github.com/users/Armandpl/events{/privacy}","received_events_url":"https://api.github.com/users/Armandpl/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-05-27T02:39:24Z","updated_at":"2026-05-27T22:45:47Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38094","html_url":"https://github.com/commaai/openpilot/pull/38094","diff_url":"https://github.com/commaai/openpilot/pull/38094.diff","patch_url":"https://github.com/commaai/openpilot/pull/38094.patch","merged_at":null},"body":"this makes the output of `scons --tree` readable by not depending on all tg files\r\nuseful to know what gets built, what it depends on and what will be ran:\r\n`scons -c selfdrive/modeld/ && scons -n --no-cache selfdrive/modeld/ --tree=all,status,linedraw 2>/dev/null`\r\n```\r\n[  B      ]    ├─┬selfdrive/modeld/models/driving_tinygrad.pkl.chunkmanifest\r\n[E     C  ]    │ ├─tinygrad@eecd4706fffe3ad8bdd7350e8db52d86d7214be2-f6129298473b164e65cb2745bf8accc96a0439c3ce77eb54432e75d4270a90ed\r\n[E     C  ]    │ ├─selfdrive/modeld/compile_modeld.py\r\n[E     C  ]    │ ├─selfdrive/modeld/get_model_metadata.py\r\n[E     C  ]    │ ├─system/camerad/cameras/nv12_info.py\r\n[E     C  ]    │ ├─system/hardware/hw.py\r\n[E     C  ]    │ ├─selfdrive/modeld/models/driving_vision.onnx\r\n[E     C  ]    │ ├─selfdrive/modeld/models/driving_policy.onnx\r\n[E     C  ]    │ ├─['/home/batman/Dev/openpilot/selfdrive/modeld/models/driving_tinygrad.pkl.chunkmanifest', '/home/batman/Dev/openpilot/selfdrive/modeld/models/driving_tinygrad.pkl.chunk01of02', '/home/batman/Dev/openpilot/selfdrive/modeld/models/driving_tinygrad.pkl.chunk02of02']\r\n[E     C  ]    │ └─common/file_chunker.py\r\n```\r\n\r\n- [ ] manually hash all the files and use that instead? do we care about git dep at build time?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38094/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38094/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38092","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38092/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38092/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38092/events","html_url":"https://github.com/commaai/openpilot/pull/38092","id":4528331828,"node_id":"PR_kwDOBHK6Ic7fnh5E","number":38092,"title":"frame drops are never ok","user":{"login":"haraschax","id":6804392,"node_id":"MDQ6VXNlcjY4MDQzOTI=","avatar_url":"https://avatars.githubusercontent.com/u/6804392?v=4","gravatar_id":"","url":"https://api.github.com/users/haraschax","html_url":"https://github.com/haraschax","followers_url":"https://api.github.com/users/haraschax/followers","following_url":"https://api.github.com/users/haraschax/following{/other_user}","gists_url":"https://api.github.com/users/haraschax/gists{/gist_id}","starred_url":"https://api.github.com/users/haraschax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haraschax/subscriptions","organizations_url":"https://api.github.com/users/haraschax/orgs","repos_url":"https://api.github.com/users/haraschax/repos","events_url":"https://api.github.com/users/haraschax/events{/privacy}","received_events_url":"https://api.github.com/users/haraschax/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-05-26T23:58:15Z","updated_at":"2026-06-07T17:01:25Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38092","html_url":"https://github.com/commaai/openpilot/pull/38092","diff_url":"https://github.com/commaai/openpilot/pull/38092.diff","patch_url":"https://github.com/commaai/openpilot/pull/38092.patch","merged_at":null},"body":"<!-- Please copy and paste the relevant template -->\r\n\r\n<!--- ***** Template: Fingerprint *****\r\n\r\n**Car**\r\nWhich car (make, model, year) this fingerprint is for\r\n\r\n**Route**\r\nA route with the fingerprint\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n**Route**\r\n\r\nRoute: [a route with the bug fix]\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Port *****\r\n\r\n**Checklist**\r\n\r\n- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs\r\n- [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py)\r\n- [ ] route with openpilot:\r\n- [ ] route with stock system:\r\n- [ ] car harness used (if comma doesn't sell it, put N/A):\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Refactor *****\r\n\r\n**Description**\r\n\r\nA description of the refactor, including the goals it accomplishes. \r\n\r\n**Verification**\r\n\r\nExplain how you tested the refactor for regressions. \r\n\r\n\r\n-->\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38092/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38092/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38083","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38083/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38083/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38083/events","html_url":"https://github.com/commaai/openpilot/pull/38083","id":4506842626,"node_id":"PR_kwDOBHK6Ic7ejhwD","number":38083,"title":"test_onroad.py: test time to first modelV2 on onroad transition","user":{"login":"Armandpl","id":14967758,"node_id":"MDQ6VXNlcjE0OTY3NzU4","avatar_url":"https://avatars.githubusercontent.com/u/14967758?v=4","gravatar_id":"","url":"https://api.github.com/users/Armandpl","html_url":"https://github.com/Armandpl","followers_url":"https://api.github.com/users/Armandpl/followers","following_url":"https://api.github.com/users/Armandpl/following{/other_user}","gists_url":"https://api.github.com/users/Armandpl/gists{/gist_id}","starred_url":"https://api.github.com/users/Armandpl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Armandpl/subscriptions","organizations_url":"https://api.github.com/users/Armandpl/orgs","repos_url":"https://api.github.com/users/Armandpl/repos","events_url":"https://api.github.com/users/Armandpl/events{/privacy}","received_events_url":"https://api.github.com/users/Armandpl/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":3,"created_at":"2026-05-23T04:38:02Z","updated_at":"2026-06-04T22:33:12Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38083","html_url":"https://github.com/commaai/openpilot/pull/38083","diff_url":"https://github.com/commaai/openpilot/pull/38083.diff","patch_url":"https://github.com/commaai/openpilot/pull/38083.patch","merged_at":null},"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38083/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38083/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38082","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38082/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38082/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38082/events","html_url":"https://github.com/commaai/openpilot/pull/38082","id":4505932121,"node_id":"PR_kwDOBHK6Ic7egu7c","number":38082,"title":"degrade stream on metered connections","user":{"login":"stefpi","id":19478336,"node_id":"MDQ6VXNlcjE5NDc4MzM2","avatar_url":"https://avatars.githubusercontent.com/u/19478336?v=4","gravatar_id":"","url":"https://api.github.com/users/stefpi","html_url":"https://github.com/stefpi","followers_url":"https://api.github.com/users/stefpi/followers","following_url":"https://api.github.com/users/stefpi/following{/other_user}","gists_url":"https://api.github.com/users/stefpi/gists{/gist_id}","starred_url":"https://api.github.com/users/stefpi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stefpi/subscriptions","organizations_url":"https://api.github.com/users/stefpi/orgs","repos_url":"https://api.github.com/users/stefpi/repos","events_url":"https://api.github.com/users/stefpi/events{/privacy}","received_events_url":"https://api.github.com/users/stefpi/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":3,"created_at":"2026-05-22T22:34:19Z","updated_at":"2026-05-23T02:20:24Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38082","html_url":"https://github.com/commaai/openpilot/pull/38082","diff_url":"https://github.com/commaai/openpilot/pull/38082.diff","patch_url":"https://github.com/commaai/openpilot/pull/38082.patch","merged_at":null},"body":"lower resolution and bitrate of livestream based on if we are on a metered network connection","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38082/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38082/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38080","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38080/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38080/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38080/events","html_url":"https://github.com/commaai/openpilot/pull/38080","id":4498267460,"node_id":"PR_kwDOBHK6Ic7eH9i9","number":38080,"title":"[experiment] simple updater","user":{"login":"adeebshihadeh","id":8762862,"node_id":"MDQ6VXNlcjg3NjI4NjI=","avatar_url":"https://avatars.githubusercontent.com/u/8762862?v=4","gravatar_id":"","url":"https://api.github.com/users/adeebshihadeh","html_url":"https://github.com/adeebshihadeh","followers_url":"https://api.github.com/users/adeebshihadeh/followers","following_url":"https://api.github.com/users/adeebshihadeh/following{/other_user}","gists_url":"https://api.github.com/users/adeebshihadeh/gists{/gist_id}","starred_url":"https://api.github.com/users/adeebshihadeh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adeebshihadeh/subscriptions","organizations_url":"https://api.github.com/users/adeebshihadeh/orgs","repos_url":"https://api.github.com/users/adeebshihadeh/repos","events_url":"https://api.github.com/users/adeebshihadeh/events{/privacy}","received_events_url":"https://api.github.com/users/adeebshihadeh/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-05-21T22:16:18Z","updated_at":"2026-05-21T22:19:25Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38080","html_url":"https://github.com/commaai/openpilot/pull/38080","diff_url":"https://github.com/commaai/openpilot/pull/38080.diff","patch_url":"https://github.com/commaai/openpilot/pull/38080.patch","merged_at":null},"body":"No more updater ABI beyond A/B slots + a manifest API endpoint","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38080/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38080/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38078","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38078/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38078/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38078/events","html_url":"https://github.com/commaai/openpilot/pull/38078","id":4497987278,"node_id":"PR_kwDOBHK6Ic7eHCtc","number":38078,"title":"Compile modeld warps with symbolic camera sizes","user":{"login":"haraschax","id":6804392,"node_id":"MDQ6VXNlcjY4MDQzOTI=","avatar_url":"https://avatars.githubusercontent.com/u/6804392?v=4","gravatar_id":"","url":"https://api.github.com/users/haraschax","html_url":"https://github.com/haraschax","followers_url":"https://api.github.com/users/haraschax/followers","following_url":"https://api.github.com/users/haraschax/following{/other_user}","gists_url":"https://api.github.com/users/haraschax/gists{/gist_id}","starred_url":"https://api.github.com/users/haraschax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haraschax/subscriptions","organizations_url":"https://api.github.com/users/haraschax/orgs","repos_url":"https://api.github.com/users/haraschax/repos","events_url":"https://api.github.com/users/haraschax/events{/privacy}","received_events_url":"https://api.github.com/users/haraschax/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-05-21T21:19:32Z","updated_at":"2026-05-22T23:28:12Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38078","html_url":"https://github.com/commaai/openpilot/pull/38078","diff_url":"https://github.com/commaai/openpilot/pull/38078.diff","patch_url":"https://github.com/commaai/openpilot/pull/38078.patch","merged_at":null},"body":"<!-- Please copy and paste the relevant template -->\r\n\r\n<!--- ***** Template: Fingerprint *****\r\n\r\n**Car**\r\nWhich car (make, model, year) this fingerprint is for\r\n\r\n**Route**\r\nA route with the fingerprint\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n**Route**\r\n\r\nRoute: [a route with the bug fix]\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Port *****\r\n\r\n**Checklist**\r\n\r\n- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs\r\n- [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py)\r\n- [ ] route with openpilot:\r\n- [ ] route with stock system:\r\n- [ ] car harness used (if comma doesn't sell it, put N/A):\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Refactor *****\r\n\r\n**Description**\r\n\r\nA description of the refactor, including the goals it accomplishes. \r\n\r\n**Verification**\r\n\r\nExplain how you tested the refactor for regressions. \r\n\r\n\r\n-->\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38078/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38078/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38077","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38077/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38077/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38077/events","html_url":"https://github.com/commaai/openpilot/pull/38077","id":4496713836,"node_id":"PR_kwDOBHK6Ic7eC2dx","number":38077,"title":"scons: enforce max file size for build products","user":{"login":"adeebshihadeh","id":8762862,"node_id":"MDQ6VXNlcjg3NjI4NjI=","avatar_url":"https://avatars.githubusercontent.com/u/8762862?v=4","gravatar_id":"","url":"https://api.github.com/users/adeebshihadeh","html_url":"https://github.com/adeebshihadeh","followers_url":"https://api.github.com/users/adeebshihadeh/followers","following_url":"https://api.github.com/users/adeebshihadeh/following{/other_user}","gists_url":"https://api.github.com/users/adeebshihadeh/gists{/gist_id}","starred_url":"https://api.github.com/users/adeebshihadeh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adeebshihadeh/subscriptions","organizations_url":"https://api.github.com/users/adeebshihadeh/orgs","repos_url":"https://api.github.com/users/adeebshihadeh/repos","events_url":"https://api.github.com/users/adeebshihadeh/events{/privacy}","received_events_url":"https://api.github.com/users/adeebshihadeh/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":0,"created_at":"2026-05-21T17:40:34Z","updated_at":"2026-05-21T17:58:42Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38077","html_url":"https://github.com/commaai/openpilot/pull/38077","diff_url":"https://github.com/commaai/openpilot/pull/38077.diff","patch_url":"https://github.com/commaai/openpilot/pull/38077.patch","merged_at":null},"body":null,"closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38077/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38077/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38075","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38075/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38075/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38075/events","html_url":"https://github.com/commaai/openpilot/pull/38075","id":4491228330,"node_id":"PR_kwDOBHK6Ic7dw9YT","number":38075,"title":"modeld: zero copy npy inputs","user":{"login":"Armandpl","id":14967758,"node_id":"MDQ6VXNlcjE0OTY3NzU4","avatar_url":"https://avatars.githubusercontent.com/u/14967758?v=4","gravatar_id":"","url":"https://api.github.com/users/Armandpl","html_url":"https://github.com/Armandpl","followers_url":"https://api.github.com/users/Armandpl/followers","following_url":"https://api.github.com/users/Armandpl/following{/other_user}","gists_url":"https://api.github.com/users/Armandpl/gists{/gist_id}","starred_url":"https://api.github.com/users/Armandpl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Armandpl/subscriptions","organizations_url":"https://api.github.com/users/Armandpl/orgs","repos_url":"https://api.github.com/users/Armandpl/repos","events_url":"https://api.github.com/users/Armandpl/events{/privacy}","received_events_url":"https://api.github.com/users/Armandpl/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":3,"created_at":"2026-05-21T02:28:55Z","updated_at":"2026-05-29T05:32:07Z","closed_at":null,"assignee":null,"author_association":"CONTRIBUTOR","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38075","html_url":"https://github.com/commaai/openpilot/pull/38075","diff_url":"https://github.com/commaai/openpilot/pull/38075.diff","patch_url":"https://github.com/commaai/openpilot/pull/38075.patch","merged_at":null},"body":"<!-- Please copy and paste the relevant template -->\r\n\r\n<!--- ***** Template: Fingerprint *****\r\n\r\n**Car**\r\nWhich car (make, model, year) this fingerprint is for\r\n\r\n**Route**\r\nA route with the fingerprint\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n**Route**\r\n\r\nRoute: [a route with the bug fix]\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Bugfix *****\r\n\r\n**Description**\r\n\r\nA description of the bug and the fix. Also link the issue if it exists. \r\n\r\n**Verification**\r\n\r\nExplain how you tested this bug fix. \r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Car Port *****\r\n\r\n**Checklist**\r\n\r\n- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs\r\n- [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py)\r\n- [ ] route with openpilot:\r\n- [ ] route with stock system:\r\n- [ ] car harness used (if comma doesn't sell it, put N/A):\r\n\r\n\r\n-->\r\n\r\n<!--- ***** Template: Refactor *****\r\n\r\n**Description**\r\n\r\nA description of the refactor, including the goals it accomplishes. \r\n\r\n**Verification**\r\n\r\nExplain how you tested the refactor for regressions. \r\n\r\n\r\n-->\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38075/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38075/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38074","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38074/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38074/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38074/events","html_url":"https://github.com/commaai/openpilot/pull/38074","id":4489553752,"node_id":"PR_kwDOBHK6Ic7drrAX","number":38074,"title":"Use pandacan package for panda","user":{"login":"premkiran2","id":60691692,"node_id":"MDQ6VXNlcjYwNjkxNjky","avatar_url":"https://avatars.githubusercontent.com/u/60691692?v=4","gravatar_id":"","url":"https://api.github.com/users/premkiran2","html_url":"https://github.com/premkiran2","followers_url":"https://api.github.com/users/premkiran2/followers","following_url":"https://api.github.com/users/premkiran2/following{/other_user}","gists_url":"https://api.github.com/users/premkiran2/gists{/gist_id}","starred_url":"https://api.github.com/users/premkiran2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/premkiran2/subscriptions","organizations_url":"https://api.github.com/users/premkiran2/orgs","repos_url":"https://api.github.com/users/premkiran2/repos","events_url":"https://api.github.com/users/premkiran2/events{/privacy}","received_events_url":"https://api.github.com/users/premkiran2/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":0,"created_at":"2026-05-20T20:05:19Z","updated_at":"2026-05-20T20:17:57Z","closed_at":null,"assignee":null,"author_association":"NONE","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38074","html_url":"https://github.com/commaai/openpilot/pull/38074","diff_url":"https://github.com/commaai/openpilot/pull/38074.diff","patch_url":"https://github.com/commaai/openpilot/pull/38074.patch","merged_at":null},"body":"Validation PR for removing panda as an openpilot submodule and consuming it as a normal Python dependency.\n\nThis PR:\n- removes the panda submodule entry from `.gitmodules`\n- removes the panda gitlink\n- replaces direct panda transport deps with `pandacan` from `premkiran2/panda@proper-pip-package`\n- updates `SConstruct` to locate the installed `panda` package and run its packaged `SConscript` with a local `variant_dir`\n\nDepends on panda package PR: https://github.com/commaai/panda/pull/2403\n\nLocal validation:\n- `python3 -m py_compile SConstruct`\n- parsed `pyproject.toml` dependencies\n- `git diff --cached --check` before commit\n\nFull CI on this PR is the intended validation that openpilot can build without the panda submodule.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38074/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38074/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/commaai/openpilot/issues/38072","repository_url":"https://api.github.com/repos/commaai/openpilot","labels_url":"https://api.github.com/repos/commaai/openpilot/issues/38072/labels{/name}","comments_url":"https://api.github.com/repos/commaai/openpilot/issues/38072/comments","events_url":"https://api.github.com/repos/commaai/openpilot/issues/38072/events","html_url":"https://github.com/commaai/openpilot/pull/38072","id":4487209279,"node_id":"PR_kwDOBHK6Ic7dkGc4","number":38072,"title":"2026.05.20 fix compressed_vipc.py by using pyzmq as zmq client","user":{"login":"zhangxu1994ye","id":43943783,"node_id":"MDQ6VXNlcjQzOTQzNzgz","avatar_url":"https://avatars.githubusercontent.com/u/43943783?v=4","gravatar_id":"","url":"https://api.github.com/users/zhangxu1994ye","html_url":"https://github.com/zhangxu1994ye","followers_url":"https://api.github.com/users/zhangxu1994ye/followers","following_url":"https://api.github.com/users/zhangxu1994ye/following{/other_user}","gists_url":"https://api.github.com/users/zhangxu1994ye/gists{/gist_id}","starred_url":"https://api.github.com/users/zhangxu1994ye/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhangxu1994ye/subscriptions","organizations_url":"https://api.github.com/users/zhangxu1994ye/orgs","repos_url":"https://api.github.com/users/zhangxu1994ye/repos","events_url":"https://api.github.com/users/zhangxu1994ye/events{/privacy}","received_events_url":"https://api.github.com/users/zhangxu1994ye/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[{"id":2735599878,"node_id":"MDU6TGFiZWwyNzM1NTk5ODc4","url":"https://api.github.com/repos/commaai/openpilot/labels/tools","name":"tools","color":"bfd4f2","default":false,"description":""}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-05-20T14:13:09Z","updated_at":"2026-06-01T03:21:44Z","closed_at":null,"assignee":null,"author_association":"NONE","issue_field_values":[],"type":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/commaai/openpilot/pulls/38072","html_url":"https://github.com/commaai/openpilot/pull/38072","diff_url":"https://github.com/commaai/openpilot/pull/38072.diff","patch_url":"https://github.com/commaai/openpilot/pull/38072.patch","merged_at":null},"body":"Summary\r\n\r\nFix the runtime error in tools/compressed_vipc.py caused by the missing zmq implementation.\r\nProblem Description\r\n\r\nRunning tools/compressed_vipc.py results in an error (see attached screenshot below).\r\n<img width=\"1253\" height=\"90\" alt=\"Snipaste_2026-05-20_21-28-14\" src=\"https://github.com/user-attachments/assets/9d9aaa40-590a-4189-8a0b-3956c1bdfce2\" />\r\n\r\nAfter investigation, I found that the script imports cereal.messaging, which internally uses from msgq.ipc_pyx import SubSocket — a C++ implementation. However, the underlying zmq_impl has been removed. Checking the git history, it appears that the zmq integration was stripped out of msgq in pursuit of zero dependencies, which caused SubSocket to stop working.\r\nChanges Made\r\n\r\nModified the communication layer in tools/compressed_vipc.py:\r\n\r\n    Replaced the dependency on SubSocket (C++ implementation from cereal.messaging)\r\n\r\n    Used pyzmq directly to create a client that communicates with the running bridge\r\n\r\n    The decoding logic remains completely untouched — no changes were made to it.\r\n\r\nVerification Result\r\n\r\nThe modified script runs successfully, and all three camera feeds are now visible in watch3.py.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/commaai/openpilot/issues/38072/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/commaai/openpilot/issues/38072/timeline","performed_via_github_app":null,"state_reason":null}]