diff --git a/docs/handoff/2026-09-25_ROVER_006_IMPLEMENTATION_CLOSEOUT.md b/docs/handoff/2026-09-25_ROVER_006_IMPLEMENTATION_CLOSEOUT.md new file mode 100644 index 0000000..485cf2f --- /dev/null +++ b/docs/handoff/2026-09-25_ROVER_006_IMPLEMENTATION_CLOSEOUT.md @@ -0,0 +1,92 @@ +# Rover 006 implementation closeout — 2026-09-25 + +This checkpoint joins the VESC development branch and the operator checkout. +Both source histories are retained. Earlier operator driver code is superseded +by the accepted Node 0.8.45-1 / VESC plugin 0.7.4 source; no new installation, +firmware write, calibration, motion command or service restart was performed. + +## Scope and repositories + +- Mission Core: native VESC Tool bridge, discovery by controller UUID, + configuration archive, calibration/Hall diagnostics, managed Linux startup, + bounded USB recovery, board layout, motor assignments, remote command + authority, 3D rover scene, telemetry, keyboard controls and lifecycle fixes. +- Design Guideline: canonical momentary KeyButton, registry, catalog and docs. + Dependency source commit: `a5a73c8753c2cdee42bee31e6ae50b6ece692d2d`. +- Existing operator work is separately committed: AI polygon runtime/navigation, + interface and evidence reports, plus launchd log-path recovery. NodeDC scene + donor and Blender source were read-only; scene provenance is shipped with + the renderer and exported model. No source changes in donor repositories. + +## Integration preservation + +The overlapping copies used different VESC driver generations. Conflicts were +reviewed per file. Shared App/router preserve both AI and rover composition. +All 127 AI/recovery/mixed files matched their preserved operator commit after +resolution. Final VESC-owned source matches the development branch, except the +intentional AI additions in App/router. One exact duplicate service-stop block +created by auto-merge was removed. Earlier versions remain in Git history; +private pre-commit file snapshots and a patch inventory remain outside Git. + +`outputs/` contains private experiment material and is ignored, not deleted. +The product rover GLB uses existing Git LFS; model SHA-256 is +`15f17f5b5b014e0f65273aa1565b7fb8e46381ca389a3c3d3ca89a32806bfb79`. +No raw controller configurations, serial inventories or credentials were added. + +## Verification + +- Design Guideline `npm run check` and registry validation pass. +- Integrated Control Station: 962 unit/architecture tests; production build + (including TypeScript) passes. +- Integrated Core/fleet/environment/AI/launchd selection: 225 pytest cases pass. +- VESC's declared unittest discovery: 144 cases pass. +- Node UI: its unit test and production build/typecheck pass. +- Earlier current-turn neutral-only startup acceptance remains: first-click + preparation reached ready; 307 telemetry samples, no movement or fault, + explicit stop with release confirmed. Focus-loss resume was accepted by the + owner in the preceding physical trial. See the control report for boundaries. +- Go/Linux native build qualification is inherited from the shipped release; + no new Linux native build or clean-host installation was attempted here. + +An initial mixed pytest invocation incorrectly collected an imported unittest +helper and hit the sandbox's loopback-bind restriction. Correct declared +unittest discovery plus permitted synthetic loopback pytest runs passed. +Large frontend bundle and Starlette deprecation warnings remain; no new test +failures. No live Worker simulation, physical motion or RC takeover test was +performed by this closeout. + +## Accepted and outstanding behavior + +Calibration and raised-rig forward/reverse/group rotation were previously +accepted. Keyboard movement/release, shared reversal neutral, focus pause with +session preservation, and first-entry preparation have bounded acceptance. +The left Hall electrical chain remains broken; it has not been repaired. +Manufacturer-approved hardware/power limits, loaded/field behavior, remaining +Tank/Stop/channel-loss checks and physical RC takeover remain open. Radio +one-stick mixing is deferred; this does not prevent software Arcade/Tank modes. + +Canonical configuration/evidence: [MISSIONCOR-85](https://ops.nodedc.ru/nodedc/browse/MISSIONCOR-85). +Historical integration: [MISSIONCOR-84](https://ops.nodedc.ru/nodedc/browse/MISSIONCOR-84). +AI polygon evidence: [MISSIONCOR-83](https://ops.nodedc.ru/nodedc/browse/MISSIONCOR-83). + +## Semantic commits + +```text +24bbaef chore(repo): keep private evidence local and version rover assets with LFS +45fb14b feat(vesc): integrate native calibration diagnostics and configuration archives +5381823 feat(node): ship managed environment startup and USB recovery +63cbb08 feat(rover): add drive profiles and leased remote command channel +6d772b2 feat(control-station): add rover scene telemetry and guarded keyboard control +bc55901 fix(core): serialize planning reports outside the control event loop +6bbbd5b docs(rover): record calibration control acceptance and operating boundaries +a7c64e0 fix(core): keep launchd service logs outside protected Downloads +f01bd39 feat(simulation): add Worker AI polygon runtime and terrain navigation +e627500 feat(control-station): add AI polygon setup streaming and mission controls +dad11b4 docs(simulation): record polygon experiments and bounded route acceptance +71a648f feat(fleet): preserve operator VESC integration before final driver merge +399af98 merge: integrate final rover control with operator simulation workspace +``` + +Remote push acknowledgements, final refs/clean-tree checks and log SHA-256 +receipts are kept in the private closeout directory and Ops; this report does +not claim a push before its receipt exists.