Files
satellite-provider/_docs/03_implementation/deploy_cycle9.md
T
Oleksandr Bezdieniezhnykh 7ed780b063
ci/woodpecker/push/01-test Pipeline failed
ci/woodpecker/push/02-build-push unknown status
[AZ-1074] [AZ-1075] Cycle 9 closeout: security, tests, metrics
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>
2026-06-25 17:32:14 +03:00

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.