mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-22 03:41:14 +00:00
[AZ-500] Cycle 4 Step 9: new-task .NET 10 migration
Closes Step 9 (New Task) of cycle 4. AZ-500 spec defines the .NET 8 -> .NET 10 migration (TFM bump on 9 csprojs, global.json SDK pin to 10.0.0, both Dockerfiles + run-tests.sh + woodpecker to mcr.microsoft.com/dotnet/*:10.0, Microsoft.AspNetCore.* and Microsoft.Extensions.* to the 10.x line, Serilog.AspNetCore to 10.x or documented 8.0.3 fallback, plus arch.md + AGENTS.md doc sync). Closes the cycle-3 perf-harness leftover via AC-5 (bootstrap smoke after migration). Also logs the cycle-4 perf-leftover replay attempt that discovered the host-SDK / project-SDK mismatch and rolls the state file from cycle 3 -> cycle 4 (Step 9 done -> Step 10 ready). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,19 +1,23 @@
|
||||
# Leftover — Cycle 3 perf harness execution
|
||||
|
||||
**Timestamp**: 2026-05-12T00:00:00Z (UTC+3 wallclock 2026-05-12 ~03:00)
|
||||
**Reason for deferral**: User skipped the Step 15 (Performance Test) gate. Per `meta-rule.mdc`, performance tests require explicit approval; a skipped question is not approval. Defaulted to skip + record-as-leftover to avoid blocking the autodev's progress through Steps 16-17.
|
||||
**Timestamp**: 2026-05-12T01:11:00Z (last replay attempt; original deferral at 2026-05-12T00:00:00Z)
|
||||
**Reason for deferral**: User skipped the Step 15 (Performance Test) gate of cycle 3. Per `meta-rule.mdc`, performance tests require explicit approval; a skipped question is not approval. Defaulted to skip + record-as-leftover to avoid blocking cycle-3 progress through Steps 16-17.
|
||||
|
||||
## What was deferred
|
||||
## Replay attempt — 2026-05-12 (cycle 4 /autodev start)
|
||||
|
||||
Execution of `scripts/run-performance-tests.sh` against the cycle-3 build. The harness was made runnable by AZ-492 and would exercise:
|
||||
User picked A (run perf harness now). Stack came up cleanly via `docker-compose up -d --build`. Perf script `scripts/run-performance-tests.sh` failed at the bootstrap step (`dotnet build SatelliteProvider.IntegrationTests` for the `--mint-only` JWT subcommand) because the host has only .NET 10.0.103 SDK installed and `global.json` pins `sdk.version=8.0.0` with `rollForward=latestMinor` (only rolls within 8.0.x). Exit code 3.
|
||||
|
||||
- **PT-01..PT-06** — regression probes (latency / status checks for the existing endpoints with JWT attach, post-AZ-487 + post-AZ-494)
|
||||
- **PT-07** — cold + warm region-tile distribution (cold p50/p95 vs warm p50/p95; fails if warm p95 ≥ cold p95)
|
||||
- **PT-08** — UAV batch upload distribution (batch p50/p95 + per-item proxy; gated at AZ-488 NFR of batch p95 ≤ 2000 ms)
|
||||
Sibling script `scripts/run-tests.sh` does NOT have this problem because it shells out to `docker run --rm ... mcr.microsoft.com/dotnet/sdk:8.0` for every dotnet invocation. The perf script was written without that pattern.
|
||||
|
||||
## Pre-requisites for replay
|
||||
Per cycle-3 lesson "scenarios accumulate as Unverified across cycles" — this is a real script bug, not just a host quirk.
|
||||
|
||||
The harness needs the same env vars that the cycle-3 test run consumes:
|
||||
## Resolution path
|
||||
|
||||
Cycle 4 will run a full **".NET 8 → .NET 10 migration"** task (see Step 9 of cycle 4). Once the project targets net10.0 and global.json no longer pins to 8.x, the host SDK becomes the project SDK and the perf script's bootstrap will succeed without modification (it shells out to `dotnet build` against the same project, which will then resolve against `mcr.microsoft.com/dotnet/sdk:10.0` for any Docker-side calls and against the host 10.x SDK for host-side calls). Cycle 4's deploy gate (Step 15) will then re-run this perf harness against the migrated build.
|
||||
|
||||
## Pre-requisites for replay (after .NET 10 migration lands)
|
||||
|
||||
Same as before — env vars must be present:
|
||||
|
||||
- `JWT_SECRET` — ≥ 32 bytes; already in `.env`
|
||||
- `JWT_ISSUER` — already in `.env` as DEV-ONLY (AZ-494)
|
||||
@@ -24,14 +28,14 @@ Optionally:
|
||||
- `PERF_REPEAT_COUNT` (default 20)
|
||||
- `PERF_UAV_BATCH_SIZE` (default 10)
|
||||
|
||||
## How to replay
|
||||
## How to replay (after .NET 10 migration)
|
||||
|
||||
```bash
|
||||
./scripts/run-performance-tests.sh
|
||||
docker-compose up -d --build # bring up API on :18980
|
||||
./scripts/run-performance-tests.sh # ~3-5 minutes
|
||||
docker-compose down --remove-orphans
|
||||
```
|
||||
|
||||
(brings up its own docker-compose stack; cleans up on exit; ~3-5 minutes for default counts)
|
||||
|
||||
## Why this is NOT a hard blocker
|
||||
|
||||
- The cycle-3 implementation report and code review verdicts already note that the perf harness was statically verified (script grep + integration-test compile + AZ-492 AC-1/AC-4/AC-5/AC-6 covered).
|
||||
@@ -41,4 +45,4 @@ Optionally:
|
||||
|
||||
## Replay obligation
|
||||
|
||||
Per `tracker.mdc` Leftovers Mechanism: at the start of the next `/autodev` invocation, this leftover should be replayed by running the perf harness, then either deleted (if it passes) or updated with the failure detail.
|
||||
Defer until cycle 4's .NET 10 migration is deployed (Step 16). At that point, replay this leftover as part of cycle 4's Step 15 (Performance Test) gate. If perf passes — delete this file. If it fails — keep with failure detail.
|
||||
|
||||
Reference in New Issue
Block a user