153 lines
5.4 KiB
JSON
153 lines
5.4 KiB
JSON
{
|
|
"planPath": "docs/plans/2026-07-20-localdb-adoption-phase1.md",
|
|
"tasks": [
|
|
{
|
|
"id": 0,
|
|
"subject": "Task 0: Preflight + recon (findings doc, STOP conditions)",
|
|
"status": "completed",
|
|
"notes": "Feed verified: LocalDb/.Contracts/.Replication all 0.1.1. All 3 STOP conditions clear. Findings: docs/plans/2026-07-20-localdb-phase1-recon.md. 8 deviations recorded (D-1..D-8); D-1/D-3/D-5/D-6 change downstream work materially.",
|
|
"deviation": "D-1 cache read cannot be keyed by ClusterId at the boot seam (unkeyed newest-pointer read instead); D-3 a third LiteDB test file must be deleted; D-5 WebApplicationFactory<Program> is deliberately unused in this repo (use TwoNodeClusterHarness); D-6 driver-only nodes have no ASPNETCORE_URLS so the Kestrel re-bind fallback is wrong. See recon doc \u00a79."
|
|
},
|
|
{
|
|
"id": 1,
|
|
"subject": "Task 1: Package references and pins (LocalDb 0.1.1, Grpc.AspNetCore, SQLitePCLRaw)",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"id": 2,
|
|
"subject": "Task 2: Schema + LocalDbSetup.OnReady + registration tests",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
1
|
|
]
|
|
},
|
|
{
|
|
"id": 3,
|
|
"subject": "Task 3: Fail-closed sync auth interceptor + tests",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
1
|
|
]
|
|
},
|
|
{
|
|
"id": 4,
|
|
"subject": "Task 4: LocalDbRegistration + Program.cs DI wiring + config defaults",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
2,
|
|
3
|
|
]
|
|
},
|
|
{
|
|
"id": 5,
|
|
"subject": "Task 5: Dedicated h2c sync listener + MapZbLocalDbSync (Kestrel URLs-override risk)",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
4
|
|
]
|
|
},
|
|
{
|
|
"id": 6,
|
|
"subject": "Task 6: IDeploymentArtifactCache + chunked LocalDb implementation + tests",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"id": 7,
|
|
"subject": "Task 7: Cache write path in DriverHostActor (Props expression-tree trap)",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
0,
|
|
6
|
|
]
|
|
},
|
|
{
|
|
"id": 8,
|
|
"subject": "Task 8: Boot-from-cache read path + running-from-cache signal",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
7
|
|
]
|
|
},
|
|
{
|
|
"id": 9,
|
|
"subject": "Task 9: Delete the dormant LiteDB LocalCache subsystem",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"id": 10,
|
|
"subject": "Task 10: Health check + telemetry meter allowlist",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
4
|
|
]
|
|
},
|
|
{
|
|
"id": 11,
|
|
"subject": "Task 11: DI-pin integration tests over the real Program.cs",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
5,
|
|
10
|
|
]
|
|
},
|
|
{
|
|
"id": 12,
|
|
"subject": "Task 12: Two-node convergence harness + scenarios (+ positive control)",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
5,
|
|
6
|
|
]
|
|
},
|
|
{
|
|
"id": 13,
|
|
"subject": "Task 13: docker-dev rig configuration (site-a pair on, site-b pin off)",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
5
|
|
]
|
|
},
|
|
{
|
|
"id": 14,
|
|
"subject": "Task 14: Documentation (runbook, Redundancy.md, CLAUDE.md)",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
8
|
|
]
|
|
},
|
|
{
|
|
"id": 15,
|
|
"subject": "Task 15: DoD sweep (offline) \u2014 STOP and report after this",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
7,
|
|
8,
|
|
9,
|
|
11,
|
|
12,
|
|
13,
|
|
14
|
|
],
|
|
"notes": "Offline DoD sweep: full-solution build 0 errors (824 pre-existing OTOPCUA0001 analyzer warnings in driver *test* projects; none reference any LocalDb/DeploymentCache file). Grep: no LiteDB/ILocalConfigCache/GenerationSealedCache code refs (2 explanatory doc-comment lines in ILdapGroupRoleMappingService remain, allowed). Runtime.Tests 407/0/31 twice (the previously-flagged intermittent did NOT reproduce). Host.IntegrationTests LocalDb subset 40/0/0. Full-solution `dotnet test` with stash-baseline NOT run: many suites are infra-gated (driver fixtures, full Akka mesh, LDAP real-bind, shared-SQL DB tests) and cannot run offline on macOS \u2014 deferred to Task 16 / CI. Task 12 positive-control evidence recorded in commit afa5be71. Did NOT merge to master \u2014 stopped here per plan."
|
|
},
|
|
{
|
|
"id": 16,
|
|
"subject": "Task 16: Live gate on the docker-dev rig (needs explicit user go-ahead)",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
15
|
|
],
|
|
"notes": "Live gate RAN on the docker-dev rig with explicit user go-ahead. 8/8 checks pass (check 4 with a documented limitation). Caught + fixed FOUR real defects offline tests missed (4b2f0e6e NU1101 packageSourceMapping, ce9fa07f ASPNETCORE_HTTP_PORTS re-bind, 9137cb41 empty-address-space-on-cache-boot, c6a9f93a cache-not-repopulated-on-RestoreApplied), each with a regression test. Two documented limitations (follow-ups): no replication back-fill of a fully-wiped node; oplog growth on default-OFF nodes. Post-fix: full build 0 errors, Runtime.Tests 409/0, all LocalDb Host.IntegrationTests green; only consistent failure is the infra-gated AbCip_Green_AgainstSim (sim not up). Evidence: 2026-07-20-localdb-phase1-live-gate.md. NOT merged."
|
|
}
|
|
],
|
|
"lastUpdated": "2026-07-20T00:00:00Z"
|
|
} |