mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-27 11:01:16 +00:00
80ef5608f1
Co-authored-by: Cursor <cursoragent@cursor.com>
3.4 KiB
3.4 KiB
Deploy Report — Cycle 13 (AZ-1126)
Date: 2026-06-26
Cycle: 13
Scope: Migrate UAV upload capturedAt to DateTimeOffset (F-AZ810-2 closure).
What is shipping
Code changes
| Area | Change |
|---|---|
UavTileMetadata.CapturedAt |
DateTime → DateTimeOffset |
UtcOffsetRequiredDateTimeOffsetConverter |
New — rejects offset-less ISO-8601 at deserialization |
UavTileMetadataValidator |
Freshness rules use UtcDateTime without DateTimeKind branching |
UavTileQualityGate / UavTileUploadHandler |
UTC comparisons without manual kind normalization |
UavUploadValidationFilter |
Propagates converter JsonException.Message for metadata parse failures |
| Unit + integration tests | Offset-less rejection + backward-compatible Z / +00:00 happy paths |
uav-tile-upload.md |
v1.2.0 → v1.2.1 (offset requirement documented) |
Database migrations
None.
Configuration changes
| Setting | Change |
|---|---|
| New env vars | None |
| Container image | Rebuild only — same aspnet:10.0 base; no Dockerfile changes |
| Consumer contracts | uav-tile-upload.md patch bump — wire shape unchanged for offset-aware clients |
Contract changes (consumer-visible)
| Contract | Change | Consumer action |
|---|---|---|
uav-tile-upload.md v1.2.1 |
capturedAt must include explicit UTC offset (Z or +00:00); offset-less strings → HTTP 400 |
UAV upload clients sending "2026-06-26T12:00:00" without offset must add Z or +00:00 |
| REST / gRPC wire shapes (other) | Unchanged | No action |
Verification gates passed in this cycle
| Gate | Result | Evidence |
|---|---|---|
| Step 11 — Functional tests | PASS | Full suite via ./scripts/run-tests.sh (mode=full) |
| Step 12 — Test-Spec Sync | PASS | Traceability AZ-1126 AC-1..AC-4 |
| Step 13 — Update Docs | PASS | ripple_log_cycle13.md, module + contract docs |
| Step 14 — Security Audit | PASS (delta) | security_report_cycle13.md; F-AZ810-2 resolved |
| Step 15 — Performance Test | PASS | perf_2026-06-26_cycle13.md — 11/11 thresholds |
Security carry-overs (post-cycle-13)
| ID | Status |
|---|---|
| F-AZ810-2 | Resolved (AZ-1126) |
| D-AZ795-1 | Open — FluentValidation 12.0.0 → 12.1.1 |
| D2-cy4 | Open — test SDK JWT advisory (test-runtime only) |
Operator runbook
- Commit and push cycle-13 changes to
origin/dev; confirm Woodpecker01-test+02-build-pushgreen. - No migration — deploy new API image only.
- Smoke-test after deploy:
- POST
/api/satellite/uploadwith valid JPEG +capturedAtlacking offset → HTTP 400 referencingcapturedAt - POST with
capturedAtas ISO-8601 UTC (...Zor...+00:00) → HTTP 200 on otherwise valid payload - Region, route, inventory, gRPC tile delivery happy paths unchanged
- POST
- Notify UAV upload consumers (
gps-denied-onboard, mission planner) of the offset requirement per contract v1.2.1.
Release note
/release prerequisites (scripts/deploy.sh, _docs/04_release/) are not present in this repo — production promotion remains operator-driven (image build + compose on target host). Step 16.5 should be skipped unless release infrastructure is onboarded.
Verdict: Cleared for retrospective (Step 17). Release (16.5) skipped — no release execution harness.