mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-26 06:11:14 +00:00
7ed780b063
Resolve F-AZ1074-1/2 (collection caps, generic gRPC internal errors). Standalone integration compose stack, docs, security audit, perf and retro. Co-authored-by: Cursor <cursoragent@cursor.com>
74 lines
3.3 KiB
Markdown
74 lines
3.3 KiB
Markdown
# Deploy Report — Cycle 9 (AZ-1074 + AZ-1075)
|
|
|
|
**Date**: 2026-06-25
|
|
**Cycle**: 9
|
|
**Scope**: gRPC RouteTileDelivery streaming service (AZ-1074) + integration test coverage (AZ-1075).
|
|
|
|
## What is shipping
|
|
|
|
### Code changes (uncommitted on `dev` at report time)
|
|
|
|
| Area | Change |
|
|
|------|--------|
|
|
| `SatelliteProvider.GrpcContracts/` | New shared project — `tile_provision.proto`, GrpcServices=Both |
|
|
| `SatelliteProvider.Api/Grpc/RouteTileDeliveryGrpcService.cs` | `[Authorize]` streaming RPC; generic internal error to client |
|
|
| `SatelliteProvider.Api/Program.cs` | `AddGrpc` (16 MiB recv / 64 MiB send); `MapGrpcService` after auth |
|
|
| `RouteTileDeliveryOrchestrator` | Collection caps (500/50/5000); lat/lon validation |
|
|
| Integration tests | `RouteTileDeliveryGrpcTests`, `GrpcTestHelpers`; standalone `docker-compose.tests.yml` |
|
|
| Docs / security | Cycle-9 module docs, traceability, security reports + hardening |
|
|
|
|
### Database migrations
|
|
|
|
**None.**
|
|
|
|
### Configuration changes
|
|
|
|
| Setting | Change |
|
|
|---------|--------|
|
|
| New env vars | **None** — gRPC uses existing JWT auth |
|
|
| `docker-compose.tests.yml` | Self-contained test stack (no host port publish) |
|
|
| Container image | Same base `mcr.microsoft.com/dotnet/aspnet:10.0`; Dockerfile copies GrpcContracts |
|
|
|
|
### Contract changes (consumer-visible)
|
|
|
|
| Contract | Change | Consumer action |
|
|
|----------|--------|-----------------|
|
|
| gRPC `RouteTileDelivery.DeliverRouteTiles` | **New** — server-streaming tile delivery | Clients import `SatelliteProvider.GrpcContracts`; Bearer/metadata auth required |
|
|
| REST endpoints | Unchanged wire shape | No action |
|
|
|
|
## Verification gates passed in this cycle
|
|
|
|
| Gate | Result | Evidence |
|
|
|------|--------|----------|
|
|
| Step 11 — Functional tests | **PASS** | 448 unit + integration exit 0 (`scripts/run-tests.sh --full`) |
|
|
| Step 12 — Test-Spec Sync | **PASS** | BT-32 gRPC scenarios; traceability matrix updated |
|
|
| Step 13 — Update Docs | **PASS** | `api_program.md`, `tests_integration.md`, `module-layout.md`, ripple log |
|
|
| Step 14 — Security Audit | **PASS** (delta) | `security_report_cycle9.md`; F-AZ1074-1/2 resolved in follow-up |
|
|
| Step 15 — Performance Test | **PASS** | `perf_2026-06-25_cycle9.md` — 8/8 REST scenarios, exit 0 |
|
|
|
|
## Outstanding carry-overs (unchanged)
|
|
|
|
- F-AZ795-1, F-AZ795-2 — REST error message sanitization
|
|
- D-AZ795-1 — FluentValidation 12.0.0 → 12.1.1
|
|
- D2-cy4 — test SDK transitive advisory
|
|
|
|
## Operator runbook
|
|
|
|
1. **Commit and push** cycle-9 changes to `origin/dev`; confirm Woodpecker `01-test` green.
|
|
2. **No migration** — deploy new image only.
|
|
3. **Smoke-test** after deploy:
|
|
- REST: existing endpoints (401 without JWT, 200 with JWT)
|
|
- gRPC: `DeliverRouteTiles` with valid JWT — expect manifest + tile chunks or InvalidArgument on bad input
|
|
4. **Ingress**: ensure HTTP/2 (gRPC) is forwarded if clients connect through ingress; dev stack uses TLS on 18980.
|
|
|
|
## Recommended follow-up PBIs
|
|
|
|
| Estimate | Title |
|
|
|----------|-------|
|
|
| 3 SP | PT-10 gRPC stream latency / backpressure perf scenario |
|
|
| 2 SP | REST error sanitizer pass (F-AZ795-1/2) |
|
|
| 1 SP | FluentValidation 12.0.0 → 12.1.1 (D-AZ795-1) |
|
|
| 1 SP | Document postgres port conflict workaround for parallel dev stacks |
|
|
|
|
**Verdict**: Cleared for Step 16.5 (Release) pending operator commit/push and environment selection.
|