Oleksandr Bezdieniezhnykh
|
5fe67023b2
|
[AZ-329] [AZ-330] [AZ-523] [AZ-524] Batch 44 atomic refactor
Implements two new C12 services and rebalances the C11/C12 boundary
in one atomic commit:
* AZ-329 PostLandingUploadOrchestrator — gates C11 upload on the
`flight_footer` FDR record's `clean_shutdown` field; 4 refusal
modes; new FdrFooterReader Protocol + LocalFdrFooterReader.
* AZ-330 OperatorReLocService — AC-3.4 visual-loss re-localization
hint; reuses shared LatLonAlt; OperatorCommandTransport Protocol
cut (E-C8 owns the future pymavlink concrete); new FDR record
kind `c12.reloc.requested`; log redaction (lat/lon 5 decimals,
reason 200 chars).
* AZ-523 C11 internal flight-state gate removed (SRP refactor):
`confirm_flight_state` / `FlightStateSignal` use /
`FlightStateNotOnGroundError` deleted from C11; TileUploader
contract bumped to v2.0.0 (frozen) with migration note; AZ-317
superseded.
* AZ-524 Package rename `c12_operator_tooling` →
`c12_operator_orchestrator` across source, tests, pyproject,
CMake, Dockerfile, compose, CI, runtime-root services class
(`OperatorOrchestratorServices`) + factory function
(`build_operator_orchestrator`), logger namespaces, config slug,
docs, and the E-C12 epic title.
Tests: 1543 passed, 80 skipped (all environment gates). Targeted
AC suite (AZ-329 + AZ-330 + FdrFooterReader): 37 passed. Cold-start
NFR-perf still ≤ 500 ms p99.
Tracker: AZ-317 → Done (superseded); AZ-319 v2.0.0 contract bump
comment; AZ-329/AZ-330 → In Testing; AZ-253 epic renamed; AZ-523
+ AZ-524 created and closed as audit-trail tickets.
See `_docs/03_implementation/batch_44_cycle1_report.md`.
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-13 19:42:46 +03:00 |
|
Oleksandr Bezdieniezhnykh
|
91ce1c2047
|
[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>
|
2026-05-13 09:34:14 +03:00 |
|