{ "planPath": "docs/plans/2026-07-16-secrets-adoption-scadabridge.md", "design": "docs/plans/2026-07-16-secrets-adoption-design.md", "app": "ScadaBridge", "gaps": ["G-3", "G-4", "G-5", "G-6"], "slices": { "1": {"desc": "config + UI + clustering", "tasks": [1, 2, 3, 4, 5, 6, 7, 8]}, "2": {"desc": "G-3 Layer-B MxGateway ApiKey", "tasks": [9, 10]} }, "tasks": [ {"id": 1, "subject": "Package references + CPM versions + nuget.config mapping", "status": "pending", "classification": "small", "slice": 1}, {"id": 2, "subject": "Layer-A pre-host ${secret:} expander (G-4 mechanism)", "status": "pending", "classification": "standard", "slice": 1, "blockedBy": [1]}, {"id": 3, "subject": "Runtime AddZbSecrets on the host container", "status": "pending", "classification": "small", "slice": 1, "blockedBy": [2]}, {"id": 4, "subject": "G-4: formalize ${SCADABRIDGE_*} placeholders -> ${secret:} tokens", "status": "pending", "classification": "standard", "slice": 1, "blockedBy": [3]}, {"id": 5, "subject": "G-4 cleanup: remove committed dev plaintext + loose *_login.txt", "status": "pending", "classification": "small", "slice": 1, "blockedBy": [4]}, {"id": 6, "subject": "G-6: claim-type VERIFICATION (RequireRole vs RequireClaim)", "status": "pending", "classification": "high-risk", "slice": 1, "blockedBy": [1]}, {"id": 7, "subject": "G-6: register secrets authorization + mount /admin/secrets", "status": "pending", "classification": "standard", "slice": 1, "blockedBy": [3, 6]}, {"id": 8, "subject": "G-5: clustered master-key posture (central pair + site nodes)", "status": "pending", "classification": "standard", "slice": 1, "blockedBy": [2]}, {"id": 9, "subject": "G-3: resolve the MxGateway ApiKey secret: ref at runtime (Layer B)", "status": "pending", "classification": "high-risk", "slice": 2, "blockedBy": [3]}, {"id": 10, "subject": "Verification: build, suites, live connection", "status": "pending", "classification": "standard", "slice": 2, "blockedBy": [1, 2, 3, 4, 5, 6, 7, 8, 9]} ], "lastUpdated": "2026-07-16" }