mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-27 09:51:14 +00:00
[AZ-1126] Migrate capturedAt to DateTimeOffset
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# Batch Report
|
||||
|
||||
**Batch**: 1
|
||||
**Tasks**: AZ-1126_captured_at_datetimeoffset
|
||||
**Date**: 2026-06-26
|
||||
**Cycle**: 13
|
||||
|
||||
## Task Results
|
||||
|
||||
| Task | Status | Files Modified | Tests | AC Coverage | Issues |
|
||||
|------|--------|---------------|-------|-------------|--------|
|
||||
| AZ-1126 | Done | 12 files | pass | 4/4 ACs covered | None |
|
||||
|
||||
## AC Test Coverage: All covered
|
||||
|
||||
| AC | Evidence |
|
||||
|----|----------|
|
||||
| AC-1 | `UavTileMetadataValidatorTests`, `UavTileQualityGateTests`, `UavTileUploadHandlerTests` |
|
||||
| AC-2 | `UtcOffsetRequiredDateTimeOffsetConverterTests`, `UavUploadValidationTests.ItemCapturedAtOffsetLess_Returns400` |
|
||||
| AC-3 | `UavUploadValidationTests.HappyPath_Returns200`, existing `UavUploadTests` suite |
|
||||
| AC-4 | `uav-tile-upload.md` v1.2.1 change log |
|
||||
|
||||
## Code Review Verdict: PASS_WITH_WARNINGS
|
||||
|
||||
Self-review: type migration is localized; filter now surfaces `JsonException.Message` for metadata parse failures (improves flightId and capturedAt diagnostics). No architecture drift.
|
||||
|
||||
## Auto-Fix Attempts: 1
|
||||
|
||||
Integration test initially failed because `UavUploadValidationFilter` replaced all `JsonException` messages with a generic parse error; fixed by propagating the converter message.
|
||||
|
||||
## Stuck Agents: None
|
||||
|
||||
## Full Test Run
|
||||
|
||||
`./scripts/run-tests.sh` (mode=full) — all unit + integration tests passed after filter fix.
|
||||
|
||||
## Next Batch: All tasks complete
|
||||
@@ -0,0 +1,16 @@
|
||||
# Product Implementation Completeness — Cycle 13
|
||||
|
||||
**Date**: 2026-06-26
|
||||
**Cycle**: 13
|
||||
|
||||
## Per-Task Classification
|
||||
|
||||
| Task | Verdict | Evidence |
|
||||
|------|---------|----------|
|
||||
| AZ-1126 | PASS | `UavTileMetadata.CapturedAt` is `DateTimeOffset` with `UtcOffsetRequiredDateTimeOffsetConverter`; validator, quality gate, and upload handler compare via `UtcDateTime`; contract patched to 1.2.1; integration + unit tests green |
|
||||
|
||||
## System Pipeline Audit
|
||||
|
||||
No new end-to-end pipelines introduced. UAV upload pipeline remains WIRED (filter → handler → quality gate → repository).
|
||||
|
||||
## Gate Verdict: PASS
|
||||
@@ -0,0 +1,26 @@
|
||||
# Implementation Report — capturedAt DateTimeOffset (Cycle 13)
|
||||
|
||||
**Cycle**: 13
|
||||
**Tasks**: AZ-1126
|
||||
**Date**: 2026-06-26
|
||||
|
||||
## Summary
|
||||
|
||||
Migrated `UavTileMetadata.CapturedAt` from `DateTime` to `DateTimeOffset` with a strict JSON converter requiring explicit UTC offsets. Closes security finding F-AZ810-2.
|
||||
|
||||
## Changes
|
||||
|
||||
- `UtcOffsetRequiredDateTimeOffsetConverter` rejects offset-less ISO-8601 strings at deserialization
|
||||
- FluentValidation freshness rules and quality gate use `UtcDateTime` without `DateTimeKind` branching
|
||||
- `UavUploadValidationFilter` propagates `JsonException.Message` for metadata parse failures
|
||||
- Contract `uav-tile-upload.md` 1.2.0 → 1.2.1
|
||||
|
||||
## Test Evidence
|
||||
|
||||
- Unit: `UtcOffsetRequiredDateTimeOffsetConverterTests`, updated UAV validator/gate/handler tests
|
||||
- Integration: `UavUploadValidationTests.ItemCapturedAtOffsetLess_Returns400`
|
||||
- Full suite: `./scripts/run-tests.sh` passed (mode=full)
|
||||
|
||||
## Handoff
|
||||
|
||||
Full test suite already executed in Step 10; Step 11 (Run Tests) may treat this as pre-verified per implement skill Step 16 handoff.
|
||||
Reference in New Issue
Block a user