mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 10:21:13 +00:00
[AZ-326] [AZ-327] C12 operator-tool CLI + companion SSH bringup
AZ-326 (3pt): operator-tool Click CLI shell at src/gps_denied_onboard/components/c12_operator_tooling/cli.py with six subcommands (download, build-cache, upload-pending, reloc-confirm, verify-ready, set-sector); SectorClassificationStore (atomic-write JSON under ~/.azaion/onboard/sector-classifications.json); freshness-table lookup driving AC-NEW-6; EXIT_* constants; AZ-266 structured-JSON log wiring to a rotating ~/.azaion/onboard/c12-tooling.log handler; operator-tool console-script entry in pyproject.toml. AZ-327 (3pt): CompanionBringup orchestrator at src/gps_denied_onboard/components/c12_operator_tooling/companion_bringup.py that opens an SSH session against the companion (paramiko per project pin), checks the four pre-flight artifacts (Manifest, expected engines, sha256 sidecars, calibration), and returns a ReadinessReport per description.md S2; CompanionUnreachableError + ContentHashMismatchError with operator-friendly remediation hints; ParamikoSshSessionFactory + RemoteSidecarVerifier (sha256sum + cat over SSH, no bytes pulled to the workstation); paramiko>=3.4,<4.0 dep added. NFR-perf-cold-start fix: PEP 562 lazy __getattr__ in c12_operator_tooling/__init__.py and flights_api/__init__.py defers HttpxFlightsApiClient (httpx), ParamikoSshSession[Factory] (paramiko + cryptography), bbox_from_waypoints / takeoff_origin_from_flight (numpy + pyproj). cli.py imports from leaf flights_api modules. operator-tool --help cold start: ~870ms -> <200ms typical, <500ms p99. Includes 73 unit tests (incl. paramiko-version-drift smoke per AZ-327 Risk 1) + console-script integration test. All 1494 repo-wide unit tests pass; 80 skips are pre-existing environment gates. Batch report: _docs/03_implementation/batch_42_cycle1_report.md. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
# Leftover — Ruff format pass on AZ-489 files deferred
|
||||
|
||||
**Timestamp**: 2026-05-13T08:57:00+03:00
|
||||
**What was blocked**: Running `ruff format` across the c12_operator_tooling
|
||||
package during Batch 42 modified five files that belong to AZ-489
|
||||
(c12 flights_api) and one AZ-489 test file. These reformat-only changes
|
||||
were reverted to keep Batch 42 strictly scoped to AZ-326 + AZ-327.
|
||||
|
||||
**Files awaiting a follow-up format-only commit**:
|
||||
|
||||
- `src/gps_denied_onboard/components/c12_operator_tooling/flights_api/_parser.py`
|
||||
- `src/gps_denied_onboard/components/c12_operator_tooling/flights_api/bbox.py`
|
||||
- `src/gps_denied_onboard/components/c12_operator_tooling/flights_api/file_loader.py`
|
||||
- `src/gps_denied_onboard/components/c12_operator_tooling/flights_api/httpx_client.py`
|
||||
- `tests/unit/c12_operator_tooling/test_az489_flights_api_client.py`
|
||||
|
||||
**Replay**: at the start of any future c12-touching task — or as a
|
||||
dedicated `chore: ruff format c12 flights_api` commit on `dev` — run
|
||||
`.venv/bin/python -m ruff format src/gps_denied_onboard/components/c12_operator_tooling/flights_api tests/unit/c12_operator_tooling/test_az489_flights_api_client.py`,
|
||||
verify the test suite still passes, and commit. ~23 line insertions /
|
||||
42 deletions; no behavioural changes.
|
||||
|
||||
**Reason for deferral**: scope discipline (per `coderule.mdc`). Batch 42
|
||||
must not silently expand its diff into another component's files.
|
||||
Reference in New Issue
Block a user