{
  "planPath": "docs/plans/2026-06-01-zb-mom-ww-auth-shared-library.md",
  "repo": "~/Desktop/scadaproj/ZB.MOM.WW.Auth",
  "tasks": [
    {"id": 1,  "nativeId": 6,  "subject": "Task 1: Scaffold repo, solution, projects", "status": "pending", "blockedBy": []},
    {"id": 2,  "nativeId": 7,  "subject": "Task 2: Abstractions — all contract types", "status": "pending", "blockedBy": [1]},
    {"id": 3,  "nativeId": 8,  "subject": "Task 3: LDAP filter & DN escaping", "status": "pending", "blockedBy": [2]},
    {"id": 4,  "nativeId": 9,  "subject": "Task 4: ILdapConnection seam + Novell adapter + fake", "status": "pending", "blockedBy": [2]},
    {"id": 5,  "nativeId": 10, "subject": "Task 5: LdapAuthService happy path + validation", "status": "pending", "blockedBy": [3, 4]},
    {"id": 6,  "nativeId": 11, "subject": "Task 6: LdapAuthService failure modes (fail-closed)", "status": "pending", "blockedBy": [5]},
    {"id": 7,  "nativeId": 12, "subject": "Task 7: GLAuth integration test (skippable)", "status": "pending", "blockedBy": [6]},
    {"id": 8,  "nativeId": 13, "subject": "Task 8: API-key token parser + secret generator", "status": "pending", "blockedBy": [2]},
    {"id": 9,  "nativeId": 14, "subject": "Task 9: Peppered HMAC hasher + constant-time compare", "status": "pending", "blockedBy": [2]},
    {"id": 10, "nativeId": 15, "subject": "Task 10: SQLite schema + connection factory + migrator", "status": "pending", "blockedBy": [2]},
    {"id": 11, "nativeId": 16, "subject": "Task 11: SqliteApiKeyStore (read + mark-used)", "status": "pending", "blockedBy": [10]},
    {"id": 12, "nativeId": 17, "subject": "Task 12: SqliteApiKeyAdminStore + audit", "status": "pending", "blockedBy": [11]},
    {"id": 13, "nativeId": 18, "subject": "Task 13: ApiKeyVerifier pipeline", "status": "pending", "blockedBy": [8, 9, 11]},
    {"id": 14, "nativeId": 19, "subject": "Task 14: Reusable admin command set", "status": "pending", "blockedBy": [12]},
    {"id": 15, "nativeId": 20, "subject": "Task 15: AspNetCore claim types, cookie defaults, DI", "status": "pending", "blockedBy": [5, 13]},
    {"id": 16, "nativeId": 21, "subject": "Task 16: Packaging — nupkgs, push script, README", "status": "pending", "blockedBy": [7, 14, 15]}
  ],
  "lastUpdated": "2026-06-01"
}
