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:
@@ -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.
|
||||
Reference in New Issue
Block a user