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
8171fcb29e
[AZ-263] [AZ-264] [AZ-265] Decompose: layout, helpers epic, replay epic
...
Decompose Step 1 + Step 1.5 + new cycle-1 epics:
- Step 1 (Bootstrap): AZ-263 spec at _docs/02_tasks/todo/. Single
top-level Python package src/gps_denied_onboard/ + nested
components/ subpackage per user feedback (replaces earlier
src/gps_denied/ + sibling src/components/ split).
- Step 1.5 (Module Layout): _docs/02_document/module-layout.md is
the file-ownership map consumed by /implement Step 4. Covers all
14 components + cross-cuttings (_types, config, logging,
fdr_client, helpers x8, frame_source, clock, runtime_root,
cli/replay, healthcheck), 5-layer layering, and the Build-Time
Exclusion Map for all 4 binaries (airborne, research,
operator-tooling, replay-cli).
- New epic AZ-264 (E-CC-HELPERS): re-homes the 8 shared helpers
from per-component child-issues into a single cross-cutting
epic per the decompose skill cross-cutting rule. R14
(LightGlue circular dep) is structurally prevented because
both C2.5 and C3 import gps_denied_onboard.helpers.lightglue_runtime.
- New epic AZ-265 (E-DEMO-REPLAY): offline replay mode (video +
tlog -> per-tick coordinate stream). 8 child tasks, 27-32 pts.
Reuses C8 FcAdapter via TlogReplayFcAdapter strategy + new
VideoFileFrameSource + JsonlReplaySink + compose_replay
composition root + gps-denied-replay CLI + auto-sync via IMU
take-off detection (per how_to_test.md). NO ROS dependency.
- Plan Final report at FINAL_report.md.
- _autodev_state.md updated with handoff notes for Step 2
execution in a fresh chat (~290 MCP calls expected; epic
ordering documented).
Step 2 task PLAN approved (97 implementation tasks across 18
epics) but EXECUTION deferred per user choice to a fresh chat.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-10 03:14:42 +03:00