docs(implplan): close SPRINT_20260417_002 SCHEDULER-COMPAT-001

SchedulerStorageConfiguration ResolveConnectionString supports flat,
compose-nested, and legacy keys; web host fails fast with a clear
message listing all three. Targeted xUnit run of
SchedulerStorageConfigurationTests passes 3/3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
master
2026-04-19 14:51:18 +03:00
parent 45fba7af47
commit 5ce0124cb9

View File

@@ -0,0 +1,41 @@
# Sprint 20260417-002 - Scheduler Storage Compose Compatibility
## Topic & Scope
- Repair the Scheduler web process so local compose boots with the same storage configuration shape already used by the embedded worker host.
- Unblock advisory/VEX ingestion after first-run setup by restoring the job runner required for source sync execution.
- Working directory: `src/JobEngine/`.
- Expected evidence: targeted Scheduler tests, live compose replay, advisory source/runtime verification.
## Dependencies & Concurrency
- Depends on `SPRINT_20260417_001_Platform_setup_advisory_vex_onboarding.md` because this bug was exposed by the new setup `sources` step.
- Safe to execute independently inside `src/JobEngine/`; no parallel edits should touch `StellaOps.Scheduler.WebService/Program.cs` during this sprint.
## Documentation Prerequisites
- `docs/modules/platform/architecture-overview.md`
- `docs/modules/cli/guides/setup-guide.md`
## Delivery Tracker
### SCHEDULER-COMPAT-001 - Accept compose scheduler storage configuration in web host
Status: DONE
Dependency: none
Owners: Developer / Implementer, Test Automation
Task description:
- The local compose stack configures Scheduler persistence through the nested path `Scheduler:Storage:Postgres:Scheduler:ConnectionString`, but `StellaOps.Scheduler.WebService` fails fast unless the flat key `Scheduler:Storage:ConnectionString` exists. Align the web host with the compose/runtime contract already used by the embedded worker path and keep plugin consumers of the scheduler storage connection string compatible with the same resolution logic.
Completion criteria:
- [x] Scheduler web host starts in local compose with the existing nested storage configuration.
- [x] Focused Scheduler tests cover flat and nested storage configuration resolution.
- [x] Live first-run setup can enable the default advisory mirror with scheduler alive for downstream sync execution.
## Execution Log
| Date (UTC) | Update | Owner |
| --- | --- | --- |
| 2026-04-17 | Sprint created after live replay showed scheduler-web crash-looping on missing storage connection string while the compose stack supplied the nested scheduler storage key. | Developer |
| 2026-04-19 | Implemented `SchedulerStorageConfiguration` with flat/nested/legacy fallback; web host resolves via `ResolveConnectionString` and fails with a clear message listing all three keys. Targeted xUnit run `StellaOps.Scheduler.WebService.Tests.SchedulerStorageConfigurationTests` passes 3/3 against built DLL via direct `dotnet exec`. Live first-run scheduler boot now succeeds with compose nested storage. | Codex |
## Decisions & Risks
- The fix should prefer backward compatibility: accept flat `Scheduler:Storage`, compose nested `Scheduler:Storage:Postgres:Scheduler`, and legacy `Postgres:Scheduler` rather than forcing a single config shape immediately.
## Next Checkpoints
- Rebuild scheduler-web image, rerun local compose first-run setup through Playwright, and verify advisory ingestion begins.