also looking at this
feat: add bounded TCP transport for autopilot drivers
#71
22 files
+1798
-154
Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.
| @@ -1,6 +1,6 @@ | ||
| 1 | 1 | { |
| 2 | 2 | "schemaVersion": 1, |
| 3 | "reviewedAt": "2026-10-20", | |
| 3 | "reviewedAt": "2026-10-22", | |
| 4 | 4 | "assignments": [ |
| 5 | 5 | { |
| 6 | 6 | "entry": "px4:src/modules/airship_att_control", |
| @@ -2372,15 +2372,15 @@ | ||
| 2372 | 2372 | { |
| 2373 | 2373 | "entry": "ardupilot:libraries/AP_HAL_Linux", |
| 2374 | 2374 | "issueKey": "runtime", |
| 2375 | "unclassified": [ | |
| 2375 | "unclassified": [], | |
| 2376 | "reviewed": [ | |
| 2376 | 2377 | "parameters", |
| 2377 | 2378 | "modes", |
| 2378 | 2379 | "protocols", |
| 2379 | 2380 | "hardware", |
| 2380 | 2381 | "failures" |
| 2381 | 2382 | ], |
| 2382 | "reviewed": [], | |
| 2383 | "remaining": "Additional parameters, modes, protocol variants, hardware branches and failure paths require source review and independent evidence. Reviewed dimensions contain sampled behavior cases, not exhaustive equivalence." | |
| 2383 | "remaining": "Sampled UART baud/buffer, device-mode, byte-protocol, hardware-flow and failure cases are reviewed gaps, not exhaustive HAL equivalence. Device subclasses, scheduling, console/stdio, parity/stop bits, port ownership, flush/receive-time bounds, reconnect, platform variants and every remaining library subsystem require deeper review and executable evidence." | |
| 2384 | 2384 | }, |
| 2385 | 2385 | { |
| 2386 | 2386 | "entry": "ardupilot:libraries/AP_HAL_QURT", |
| @@ -2398,15 +2398,15 @@ | ||
| 2398 | 2398 | { |
| 2399 | 2399 | "entry": "ardupilot:libraries/AP_HAL_SITL", |
| 2400 | 2400 | "issueKey": "runtime", |
| 2401 | "unclassified": [ | |
| 2401 | "unclassified": [], | |
| 2402 | "reviewed": [ | |
| 2402 | 2403 | "parameters", |
| 2403 | 2404 | "modes", |
| 2404 | 2405 | "protocols", |
| 2405 | 2406 | "hardware", |
| 2406 | 2407 | "failures" |
| 2407 | 2408 | ], |
| 2408 | "reviewed": [], | |
| 2409 | "remaining": "Additional parameters, modes, protocol variants, hardware branches and failure paths require source review and independent evidence. Reviewed dimensions contain sampled behavior cases, not exhaustive equivalence." | |
| 2409 | "remaining": "Sampled UART baud/buffer, device-mode, byte-protocol, hardware-flow and failure cases are reviewed gaps, not exhaustive HAL equivalence. Device subclasses, scheduling, console/stdio, parity/stop bits, port ownership, flush/receive-time bounds, reconnect, platform variants and every remaining library subsystem require deeper review and executable evidence." | |
| 2410 | 2410 | }, |
| 2411 | 2411 | { |
| 2412 | 2412 | "entry": "ardupilot:libraries/AP_Hott_Telem", |
| @@ -4307,6 +4307,54 @@ | ||
| 4307 | 4307 | "url": "https://github.com/PX4/PX4-Autopilot/blob/ddcaad6601be20453ec6acd0f08e567af3a7e1bb/src/drivers/camera_capture/camera_capture_params.yaml", |
| 4308 | 4308 | "license": "BSD-3-Clause", |
| 4309 | 4309 | "licenseSource": "https://github.com/PX4/PX4-Autopilot/blob/ddcaad6601be20453ec6acd0f08e567af3a7e1bb/LICENSE" |
| 4310 | }, | |
| 4311 | { | |
| 4312 | "id": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 4313 | "upstream": "ardupilot", | |
| 4314 | "path": "libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 4315 | "revision": "afeb9c4941543d97f3e04fecf257b8f598f49a6a", | |
| 4316 | "blobSha": "f253eb8a0881069d281f51e607fed449b764acae", | |
| 4317 | "sha256": "c2c98f36c32d5425860e665fe3fb44586f3c2e7fd9eccfbdc52b0ef78bb84bbe", | |
| 4318 | "lines": 452, | |
| 4319 | "url": "https://github.com/ArduPilot/ardupilot/blob/afeb9c4941543d97f3e04fecf257b8f598f49a6a/libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 4320 | "license": "GPL-3.0-or-later", | |
| 4321 | "licenseSource": "https://github.com/ArduPilot/ardupilot/blob/afeb9c4941543d97f3e04fecf257b8f598f49a6a/COPYING.txt" | |
| 4322 | }, | |
| 4323 | { | |
| 4324 | "id": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.h", | |
| 4325 | "upstream": "ardupilot", | |
| 4326 | "path": "libraries/AP_HAL_Linux/UARTDriver.h", | |
| 4327 | "revision": "afeb9c4941543d97f3e04fecf257b8f598f49a6a", | |
| 4328 | "blobSha": "02a1afba7b88e923ce8fa5e4d6c08f85ad42b714", | |
| 4329 | "sha256": "f2ac2f2b9966d016621971fcf401820dd49e40f459f40e2a7a55323e6746a6de", | |
| 4330 | "lines": 105, | |
| 4331 | "url": "https://github.com/ArduPilot/ardupilot/blob/afeb9c4941543d97f3e04fecf257b8f598f49a6a/libraries/AP_HAL_Linux/UARTDriver.h", | |
| 4332 | "license": "GPL-3.0-or-later", | |
| 4333 | "licenseSource": "https://github.com/ArduPilot/ardupilot/blob/afeb9c4941543d97f3e04fecf257b8f598f49a6a/COPYING.txt" | |
| 4334 | }, | |
| 4335 | { | |
| 4336 | "id": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 4337 | "upstream": "ardupilot", | |
| 4338 | "path": "libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 4339 | "revision": "afeb9c4941543d97f3e04fecf257b8f598f49a6a", | |
| 4340 | "blobSha": "25dd3c45de9f84425e1f6d999f2273a6057032e3", | |
| 4341 | "sha256": "5a435adbb2c03526aa8746ed53ddf6494edb90f1646d2b0458aa9e832f0577ec", | |
| 4342 | "lines": 1382, | |
| 4343 | "url": "https://github.com/ArduPilot/ardupilot/blob/afeb9c4941543d97f3e04fecf257b8f598f49a6a/libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 4344 | "license": "GPL-3.0-or-later", | |
| 4345 | "licenseSource": "https://github.com/ArduPilot/ardupilot/blob/afeb9c4941543d97f3e04fecf257b8f598f49a6a/COPYING.txt" | |
| 4346 | }, | |
| 4347 | { | |
| 4348 | "id": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.h", | |
| 4349 | "upstream": "ardupilot", | |
| 4350 | "path": "libraries/AP_HAL_SITL/UARTDriver.h", | |
| 4351 | "revision": "afeb9c4941543d97f3e04fecf257b8f598f49a6a", | |
| 4352 | "blobSha": "222e63cae9833c1a40cd841b650f4e8ac58804dc", | |
| 4353 | "sha256": "1ce5a1a8cb8fd86ffb5ebb6e593854915c0768872a61d2581d4d385d40c5bb29", | |
| 4354 | "lines": 184, | |
| 4355 | "url": "https://github.com/ArduPilot/ardupilot/blob/afeb9c4941543d97f3e04fecf257b8f598f49a6a/libraries/AP_HAL_SITL/UARTDriver.h", | |
| 4356 | "license": "GPL-3.0-or-later", | |
| 4357 | "licenseSource": "https://github.com/ArduPilot/ardupilot/blob/afeb9c4941543d97f3e04fecf257b8f598f49a6a/COPYING.txt" | |
| 4310 | 4358 | } |
| 4311 | 4359 | ], |
| 4312 | 4360 | "cases": [ |
| @@ -6337,6 +6385,331 @@ | ||
| 6337 | 6385 | "The counter decreases on acceptable intervals, so this is not described as 101 consecutive events. This is the input-capture callback path, not a demonstrated guard on the separate GPIO interrupt routine. Owned capture timeouts/lost-ACK models do not establish this interrupt-rate fuse.", |
| 6338 | 6386 | "No upstream firmware execution, SITL, HIL, physical exposure feedback or executable parity evidence is retained for this gap." |
| 6339 | 6387 | ] |
| 6388 | }, | |
| 6389 | { | |
| 6390 | "id": "linux-uart-baud-buffer-configuration", | |
| 6391 | "entry": "ardupilot:libraries/AP_HAL_Linux", | |
| 6392 | "dimension": "parameters", | |
| 6393 | "behavior": "Linux HAL baud changes and UART RX/TX ring allocation with 8192-byte RX and 32000-byte TX minimums are not exposed by the owned companion-driver options.", | |
| 6394 | "support": "unsupported", | |
| 6395 | "sources": [ | |
| 6396 | { | |
| 6397 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6398 | "line": 82, | |
| 6399 | "symbol": "_baudrate != b" | |
| 6400 | }, | |
| 6401 | { | |
| 6402 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6403 | "line": 105, | |
| 6404 | "symbol": "rxS < 8192" | |
| 6405 | }, | |
| 6406 | { | |
| 6407 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6408 | "line": 108, | |
| 6409 | "symbol": "txS < 32000" | |
| 6410 | } | |
| 6411 | ], | |
| 6412 | "evidence": [], | |
| 6413 | "limitations": [ | |
| 6414 | "Our fixed pending-write capacity does not provide configurable HAL RX/TX rings, baud changes or their clear-buffer semantics.", | |
| 6415 | "The companion UDP/TCP adapter and scripted peer are not implementations of the upstream HAL UART backend or its raw-byte device contract.", | |
| 6416 | "This is a sampled source-backed gap, not exhaustive review of this dimension. No upstream firmware SITL, hardware, HIL or vehicle execution is claimed." | |
| 6417 | ] | |
| 6418 | }, | |
| 6419 | { | |
| 6420 | "id": "linux-uart-device-path-server-mode", | |
| 6421 | "entry": "ardupilot:libraries/AP_HAL_Linux", | |
| 6422 | "dimension": "modes", | |
| 6423 | "behavior": "Linux HAL TCP-server wait mode and serial device-path selection are not provided by the companion TCP-client factory.", | |
| 6424 | "support": "unsupported", | |
| 6425 | "sources": [ | |
| 6426 | { | |
| 6427 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6428 | "line": 129, | |
| 6429 | "symbol": "_parseDevicePath" | |
| 6430 | }, | |
| 6431 | { | |
| 6432 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6433 | "line": 195, | |
| 6434 | "symbol": "bool wait" | |
| 6435 | }, | |
| 6436 | { | |
| 6437 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6438 | "line": 196, | |
| 6439 | "symbol": "TCPServerDevice" | |
| 6440 | } | |
| 6441 | ], | |
| 6442 | "evidence": [], | |
| 6443 | "limitations": [ | |
| 6444 | "The bench owns a local server as a test peer; that does not expose a vehicle HAL TCP-listener/wait mode. Invalid-path console fallback is not adopted as an owned safety policy.", | |
| 6445 | "The companion UDP/TCP adapter and scripted peer are not implementations of the upstream HAL UART backend or its raw-byte device contract.", | |
| 6446 | "This is a sampled source-backed gap, not exhaustive review of this dimension. No upstream firmware SITL, hardware, HIL or vehicle execution is claimed." | |
| 6447 | ] | |
| 6448 | }, | |
| 6449 | { | |
| 6450 | "id": "linux-uart-queued-mavlink-packetisation", | |
| 6451 | "entry": "ardupilot:libraries/AP_HAL_Linux", | |
| 6452 | "dimension": "protocols", | |
| 6453 | "behavior": "MAVLink packetisation of an arbitrary Linux HAL UART write ring into UDP datagrams is not implemented by the companion packet adapter.", | |
| 6454 | "support": "unsupported", | |
| 6455 | "sources": [ | |
| 6456 | { | |
| 6457 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6458 | "line": 183, | |
| 6459 | "symbol": "_packetise = true" | |
| 6460 | }, | |
| 6461 | { | |
| 6462 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6463 | "line": 341, | |
| 6464 | "symbol": "mavlink_packetise" | |
| 6465 | }, | |
| 6466 | { | |
| 6467 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6468 | "line": 351, | |
| 6469 | "symbol": "_writebuf.peekbytes" | |
| 6470 | } | |
| 6471 | ], | |
| 6472 | "evidence": [], | |
| 6473 | "limitations": [ | |
| 6474 | "Encoding one bounded MAVLink frame per companion datagram is narrower than packetising and advancing a HAL byte ring with compile-conditional GCS support.", | |
| 6475 | "The companion UDP/TCP adapter and scripted peer are not implementations of the upstream HAL UART backend or its raw-byte device contract.", | |
| 6476 | "This is a sampled source-backed gap, not exhaustive review of this dimension. No upstream firmware SITL, hardware, HIL or vehicle execution is claimed." | |
| 6477 | ] | |
| 6478 | }, | |
| 6479 | { | |
| 6480 | "id": "linux-uart-physical-parity-flow-control", | |
| 6481 | "entry": "ardupilot:libraries/AP_HAL_Linux", | |
| 6482 | "dimension": "hardware", | |
| 6483 | "behavior": "Configurable Linux HAL character-device UART parity and hardware flow-control APIs are not exposed by the owned packet-driver factories.", | |
| 6484 | "support": "unsupported", | |
| 6485 | "sources": [ | |
| 6486 | { | |
| 6487 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6488 | "line": 133, | |
| 6489 | "symbol": "S_ISCHR" | |
| 6490 | }, | |
| 6491 | { | |
| 6492 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6493 | "line": 417, | |
| 6494 | "symbol": "configure_parity" | |
| 6495 | }, | |
| 6496 | { | |
| 6497 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.h", | |
| 6498 | "line": 37, | |
| 6499 | "symbol": "set_flow_control" | |
| 6500 | } | |
| 6501 | ], | |
| 6502 | "evidence": [], | |
| 6503 | "limitations": [ | |
| 6504 | "No tty wiring, RTS/CTS electrical behavior, kernel termios configuration or hardware parity evidence is established by loopback TCP tests.", | |
| 6505 | "The companion UDP/TCP adapter and scripted peer are not implementations of the upstream HAL UART backend or its raw-byte device contract.", | |
| 6506 | "This is a sampled source-backed gap, not exhaustive review of this dimension. No upstream firmware SITL, hardware, HIL or vehicle execution is claimed." | |
| 6507 | ] | |
| 6508 | }, | |
| 6509 | { | |
| 6510 | "id": "linux-uart-deferred-open-byte-continuation", | |
| 6511 | "entry": "ardupilot:libraries/AP_HAL_Linux", | |
| 6512 | "dimension": "failures", | |
| 6513 | "behavior": "Linux HAL deferred device open and scheduled continuation of queued raw UART bytes after zero or short writes are not implemented as a companion-driver lifecycle.", | |
| 6514 | "support": "unsupported", | |
| 6515 | "sources": [ | |
| 6516 | { | |
| 6517 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6518 | "line": 309, | |
| 6519 | "symbol": "if (!_connected)" | |
| 6520 | }, | |
| 6521 | { | |
| 6522 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6523 | "line": 310, | |
| 6524 | "symbol": "_device->open" | |
| 6525 | }, | |
| 6526 | { | |
| 6527 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6528 | "line": 363, | |
| 6529 | "symbol": "_writebuf.advance" | |
| 6530 | }, | |
| 6531 | { | |
| 6532 | "source": "ardupilot:libraries/AP_HAL_Linux/UARTDriver.cpp", | |
| 6533 | "line": 366, | |
| 6534 | "symbol": "ret != vec[i].len" | |
| 6535 | } | |
| 6536 | ], | |
| 6537 | "evidence": [], | |
| 6538 | "limitations": [ | |
| 6539 | "The owned TCP adapter fails the session on loss or output pressure and requires deliberate reconciliation before a fresh connection. That is not upstream HAL queued-byte continuation and must not silently replay commands.", | |
| 6540 | "The companion UDP/TCP adapter and scripted peer are not implementations of the upstream HAL UART backend or its raw-byte device contract.", | |
| 6541 | "This is a sampled source-backed gap, not exhaustive review of this dimension. No upstream firmware SITL, hardware, HIL or vehicle execution is claimed." | |
| 6542 | ] | |
| 6543 | }, | |
| 6544 | { | |
| 6545 | "id": "sitl-uart-configured-baud-budget", | |
| 6546 | "entry": "ardupilot:libraries/AP_HAL_SITL", | |
| 6547 | "dimension": "parameters", | |
| 6548 | "behavior": "SITL telemetry baud-limit enablement with independent byte budgets for UART reads and writes is not provided by the companion protocol bench.", | |
| 6549 | "support": "unsupported", | |
| 6550 | "sources": [ | |
| 6551 | { | |
| 6552 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6553 | "line": 1043, | |
| 6554 | "symbol": "telem_baudlimit_enable" | |
| 6555 | }, | |
| 6556 | { | |
| 6557 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6558 | "line": 1046, | |
| 6559 | "symbol": "baud_limits.write.max_bytes" | |
| 6560 | }, | |
| 6561 | { | |
| 6562 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6563 | "line": 1149, | |
| 6564 | "symbol": "baud_limits.read.max_bytes" | |
| 6565 | } | |
| 6566 | ], | |
| 6567 | "evidence": [], | |
| 6568 | "limitations": [ | |
| 6569 | "A 25 ms protocol poll and requested MAVLink message interval are not UART baud emulation, serial throughput identification or delivery-rate evidence.", | |
| 6570 | "The companion UDP/TCP adapter and scripted peer are not implementations of the upstream HAL UART backend or its raw-byte device contract.", | |
| 6571 | "This is a sampled source-backed gap, not exhaustive review of this dimension. No upstream firmware SITL, hardware, HIL or vehicle execution is claimed." | |
| 6572 | ] | |
| 6573 | }, | |
| 6574 | { | |
| 6575 | "id": "sitl-uart-timestamped-csv-mode", | |
| 6576 | "entry": "ardupilot:libraries/AP_HAL_SITL", | |
| 6577 | "dimension": "modes", | |
| 6578 | "behavior": "The SITL logic_async_csv raw serial-byte replay mode with capture-time scheduling is not implemented by owned sensor or diagnostic replay.", | |
| 6579 | "support": "unsupported", | |
| 6580 | "sources": [ | |
| 6581 | { | |
| 6582 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6583 | "line": 198, | |
| 6584 | "symbol": "logic_async_csv" | |
| 6585 | }, | |
| 6586 | { | |
| 6587 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6588 | "line": 935, | |
| 6589 | "symbol": "read_from_async_csv" | |
| 6590 | }, | |
| 6591 | { | |
| 6592 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6593 | "line": 951, | |
| 6594 | "symbol": "data_timestamp_us > emit_timestamp_us" | |
| 6595 | } | |
| 6596 | ], | |
| 6597 | "evidence": [], | |
| 6598 | "limitations": [ | |
| 6599 | "Existing owned structured sensor/journal replays do not consume this UART CSV format, its startup delay or its malformed-record behavior.", | |
| 6600 | "The companion UDP/TCP adapter and scripted peer are not implementations of the upstream HAL UART backend or its raw-byte device contract.", | |
| 6601 | "This is a sampled source-backed gap, not exhaustive review of this dimension. No upstream firmware SITL, hardware, HIL or vehicle execution is claimed." | |
| 6602 | ] | |
| 6603 | }, | |
| 6604 | { | |
| 6605 | "id": "sitl-uart-simulated-serial-device-dispatch", | |
| 6606 | "entry": "ardupilot:libraries/AP_HAL_SITL", | |
| 6607 | "dimension": "protocols", | |
| 6608 | "behavior": "SITL UART dispatch to GPS1/GPS2, ADSB and selected simulated serial devices is not implemented by the companion MAVLink transport.", | |
| 6609 | "support": "unsupported", | |
| 6610 | "sources": [ | |
| 6611 | { | |
| 6612 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6613 | "line": 87, | |
| 6614 | "symbol": "create_serial_sim" | |
| 6615 | }, | |
| 6616 | { | |
| 6617 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6618 | "line": 121, | |
| 6619 | "symbol": "create_serial_sim" | |
| 6620 | }, | |
| 6621 | { | |
| 6622 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6623 | "line": 152, | |
| 6624 | "symbol": "create_serial_sim" | |
| 6625 | } | |
| 6626 | ], | |
| 6627 | "evidence": [], | |
| 6628 | "limitations": [ | |
| 6629 | "The cited lines establish device dispatch, not a reviewed inventory of each generated GPS or sensor wire dialect. Those simulator implementations require deeper review.", | |
| 6630 | "The companion UDP/TCP adapter and scripted peer are not implementations of the upstream HAL UART backend or its raw-byte device contract.", | |
| 6631 | "This is a sampled source-backed gap, not exhaustive review of this dimension. No upstream firmware SITL, hardware, HIL or vehicle execution is claimed." | |
| 6632 | ] | |
| 6633 | }, | |
| 6634 | { | |
| 6635 | "id": "sitl-uart-cts-auto-flow-control", | |
| 6636 | "entry": "ardupilot:libraries/AP_HAL_SITL", | |
| 6637 | "dimension": "hardware", | |
| 6638 | "behavior": "SITL real-UART CTS checking and AUTO hardware-flow-control detection/fallback are not exposed by the companion TCP adapter.", | |
| 6639 | "support": "unsupported", | |
| 6640 | "sources": [ | |
| 6641 | { | |
| 6642 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6643 | "line": 262, | |
| 6644 | "symbol": "CRTSCTS" | |
| 6645 | }, | |
| 6646 | { | |
| 6647 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6648 | "line": 1085, | |
| 6649 | "symbol": "TIOCMGET" | |
| 6650 | }, | |
| 6651 | { | |
| 6652 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6653 | "line": 1086, | |
| 6654 | "symbol": "TIOCM_CTS" | |
| 6655 | }, | |
| 6656 | { | |
| 6657 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6658 | "line": 1108, | |
| 6659 | "symbol": "500U" | |
| 6660 | }, | |
| 6661 | { | |
| 6662 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6663 | "line": 1111, | |
| 6664 | "symbol": "FLOW_CONTROL_DISABLE" | |
| 6665 | } | |
| 6666 | ], | |
| 6667 | "evidence": [], | |
| 6668 | "limitations": [ | |
| 6669 | "Software socket pressure is distinct from serial RTS/CTS electrical state. Upstream AUTO can disable flow control after its 500 ms detection condition; our TCP pressure deadline does not reproduce this policy.", | |
| 6670 | "The companion UDP/TCP adapter and scripted peer are not implementations of the upstream HAL UART backend or its raw-byte device contract.", | |
| 6671 | "This is a sampled source-backed gap, not exhaustive review of this dimension. No upstream firmware SITL, hardware, HIL or vehicle execution is claimed." | |
| 6672 | ] | |
| 6673 | }, | |
| 6674 | { | |
| 6675 | "id": "sitl-uart-hidden-byte-loss-injection", | |
| 6676 | "entry": "ardupilot:libraries/AP_HAL_SITL", | |
| 6677 | "dimension": "failures", | |
| 6678 | "behavior": "SITL UART can omit at most one byte per write under its configured loss test while counting that byte as transmitted; the companion bench has no equivalent raw-byte loss injector.", | |
| 6679 | "support": "unsupported", | |
| 6680 | "sources": [ | |
| 6681 | { | |
| 6682 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6683 | "line": 335, | |
| 6684 | "symbol": "lost_byte = 0" | |
| 6685 | }, | |
| 6686 | { | |
| 6687 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6688 | "line": 340, | |
| 6689 | "symbol": "uart_byte_loss_pct" | |
| 6690 | }, | |
| 6691 | { | |
| 6692 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6693 | "line": 341, | |
| 6694 | "symbol": "lost_byte = 1" | |
| 6695 | }, | |
| 6696 | { | |
| 6697 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6698 | "line": 347, | |
| 6699 | "symbol": "_tx_stats_bytes += lost_byte" | |
| 6700 | }, | |
| 6701 | { | |
| 6702 | "source": "ardupilot:libraries/AP_HAL_SITL/UARTDriver.cpp", | |
| 6703 | "line": 349, | |
| 6704 | "symbol": "size - lost_byte" | |
| 6705 | } | |
| 6706 | ], | |
| 6707 | "evidence": [], | |
| 6708 | "limitations": [ | |
| 6709 | "Dropping one whole COMMAND_ACK and corrupting framing fixtures do not reproduce the upstream per-write loss probability, raw-byte removal or transmitted-byte accounting. This source does not establish independent loss sampling for every byte.", | |
| 6710 | "The companion UDP/TCP adapter and scripted peer are not implementations of the upstream HAL UART backend or its raw-byte device contract.", | |
| 6711 | "This is a sampled source-backed gap, not exhaustive review of this dimension. No upstream firmware SITL, hardware, HIL or vehicle execution is claimed." | |
| 6712 | ] | |
| 6340 | 6713 | } |
| 6341 | 6714 | ] |
| 6342 | 6715 | } |
| @@ -3,10 +3,10 @@ | ||
| 3 | 3 | The executable audit accounts for the 274 pinned PX4 module/driver and ArduPilot library directories |
| 4 | 4 | and six ArduPilot vehicle programs. Directory assignment is work ownership. It is not feature parity. |
| 5 | 5 | |
| 6 | The retained matrix is [parity-audit.json](https://github.com/stacksjs/drone/blob/main/docs/parity-audit.json). It currently contains **79 behavior | |
| 6 | The retained matrix is [parity-audit.json](https://github.com/stacksjs/drone/blob/main/docs/parity-audit.json). It currently contains **89 behavior | |
| 7 | 7 | cases**, including **26 bounded support claims** backed by **25 distinct executable test selectors** |
| 8 | and **53 explicitly unsupported cases**. There are **1,327 unclassified detail dimensions**. | |
| 9 | The audit retains **42 pinned source records**. No upstream firmware SITL, HIL or physical-vehicle | |
| 8 | and **63 explicitly unsupported cases**. There are **1,317 unclassified detail dimensions**. | |
| 9 | The audit retains **46 pinned source records**. No upstream firmware SITL, HIL or physical-vehicle | |
| 10 | 10 | validation is claimed by this audit. |
| 11 | 11 | |
| 12 | 12 | Every assignment classifies parameters, modes, protocols, hardware and failures separately. A |
| @@ -124,6 +124,21 @@ not prove hardware enablement. Board wiring, electrical/timing calibration, PPS/ | ||
| 124 | 124 | queue/restart behavior remain deeper work. The owned IMX500 first-row metadata, scoped capture |
| 125 | 125 | ACK/pose association and modeled shutter remain separate capabilities, with no new parity claim. |
| 126 | 126 | |
| 127 | Ten further unsupported cases sample pinned ArduPilot Linux and SITL HAL UART behavior. They cover | |
| 128 | baud and buffer budgets, TCP server and CSV replay modes, raw-byte packetisation and simulated-device | |
| 129 | dispatch, parity and CTS/AUTO flow control, deferred open/short-write continuation, and hidden byte-loss | |
| 130 | injection. Four new source records retain 35 exact line/symbol anchors. The prior 79 cases, 42 sources, | |
| 131 | 26 bounded claims and 25 selectors remain unchanged. Both HAL directories remain owned by runtime | |
| 132 | issue #2 and retain deeper review work in all five sampled dimensions. | |
| 133 | ||
| 134 | The companion TCP client is distinct from those HAL backends. Its 4 KiB stream watermark and 16 KiB | |
| 135 | outstanding-write cap do not implement configurable UART rings, hardware parity, electrical RTS/CTS, | |
| 136 | raw serial replay or automatic queued-byte continuation. Upstream's SITL loss injector can omit at | |
| 137 | most one byte per write while counting it as transmitted; this is distinct from dropping an entire | |
| 138 | ACK or independently sampling every byte. The reviewed source establishes dispatch to simulated | |
| 139 | serial devices, not full review of each generated sensor dialect. No new executable support or | |
| 140 | upstream firmware execution is claimed by these ten cases. | |
| 141 | ||
| 127 | 142 | Unreviewed parameters, full firmware mode sets, serial/CAN/electrical variants, redundant estimators, |
| 128 | 143 | real output paths, simulator campaigns and hardware evidence remain visible gaps owned by their |
| 129 | 144 | implementation issues. |
| @@ -865,7 +865,7 @@ | ||
| 865 | 865 | "implementationStatus": "behavior-audit-in-progress", |
| 866 | 866 | "implemented": [ |
| 867 | 867 | "Pinned directory and six-vehicle-family assignments with per-dimension reviewed/unclassified status", |
| 868 | "59 source-backed behavior cases, bounded subset claims and explicit unsupported behaviors", | |
| 868 | "89 source-backed behavior cases, bounded subset claims and explicit unsupported behaviors", | |
| 869 | 869 | "Executable evidence selectors, pinned source hash/license/citation verification, issue link checks and upstream snapshot refresh/diff gates" |
| 870 | 870 | ], |
| 871 | 871 | "evidence": [ |
| @@ -876,7 +876,7 @@ | ||
| 876 | 876 | "docs/parity.md" |
| 877 | 877 | ], |
| 878 | 878 | "remaining": [ |
| 879 | "Complete 1,347 currently unclassified parameter/mode/protocol/hardware/failure dimensions and deeper review inside sampled dimensions", | |
| 879 | "Complete 1,317 currently unclassified parameter/mode/protocol/hardware/failure dimensions and deeper review inside sampled dimensions", | |
| 880 | 880 | "Expand executable coverage from bounded subsets to behavior-level parity with retained firmware/SITL/HIL/vehicle evidence" |
| 881 | 881 | ] |
| 882 | 882 | }, |