docs(plan): perf roadmap remainder — historian batching, ACL cache, driver round-trips, alarm coalescing, AdminUI hot spots, residuals

This commit is contained in:
Joseph Doherty
2026-08-15 21:33:18 -04:00
parent a8c93a0080
commit dc459633e0
2 changed files with 1300 additions and 0 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,34 @@
{
"planPath": "docs/plans/2026-08-15-perf-roadmap-remainder.md",
"tasks": [
{"id": 1, "subject": "Task 1: Outbox batch append with group commit", "status": "pending"},
{"id": 2, "subject": "Task 2: Batched mux→subscriber delivery, single-eval virtual tags", "status": "pending"},
{"id": 3, "subject": "Task 3: Parallel drain with bounded concurrency", "status": "pending"},
{"id": 4, "subject": "Task 4: Recorder batched ingest — one fsync per burst", "status": "pending", "blockedBy": [1, 2, 3]},
{"id": 5, "subject": "Task 5: Historian defaults, config drift, docs", "status": "pending", "blockedBy": [3, 4]},
{"id": 6, "subject": "Task 6: Per-session decision-cache shards", "status": "pending"},
{"id": 7, "subject": "Task 7: Authorizer hot path — lookup first, no closures, lazy deny reasons", "status": "pending", "blockedBy": [6]},
{"id": 8, "subject": "Task 8: Browse and TranslateBrowsePath compaction", "status": "pending"},
{"id": 9, "subject": "Task 9: RevalidateMonitoredItems dedup", "status": "pending", "blockedBy": [8]},
{"id": 10, "subject": "Task 10: Modbus InitializeAsync transport leak", "status": "pending"},
{"id": 11, "subject": "Task 11: PollGroupEngine fixed-rate pacing, overrun counter, async unsubscribe", "status": "pending"},
{"id": 12, "subject": "Task 12: S7 narrow-scalar span codec", "status": "pending"},
{"id": 13, "subject": "Task 13: S7 span planner + grouped ReadAsync", "status": "pending", "blockedBy": [12]},
{"id": 14, "subject": "Task 14: AbCip bounded-parallel reads", "status": "pending"},
{"id": 15, "subject": "Task 15: Dirty-set coalescing in ScriptedAlarmEngine", "status": "pending"},
{"id": 16, "subject": "Task 16: Deployments list projection", "status": "pending"},
{"id": 17, "subject": "Task 17: Drift watermark probe", "status": "pending", "blockedBy": [16]},
{"id": 18, "subject": "Task 18: ScriptTagCatalog TTL snapshot cache", "status": "pending"},
{"id": 19, "subject": "Task 19: EffectiveNameGuard batch check + bulk add-references", "status": "pending"},
{"id": 20, "subject": "Task 20: Raw tree tag-name projection", "status": "pending"},
{"id": 21, "subject": "Task 21: Rename script-scan filters in SQL", "status": "pending", "blockedBy": [20]},
{"id": 22, "subject": "Task 22: Pooled context factory + RoleGrants off the circuit-scoped context", "status": "pending"},
{"id": 23, "subject": "Task 23: Fleet/Hosts poll overlap guards", "status": "pending"},
{"id": 24, "subject": "Task 24: MQTT unchanged-value suppression", "status": "pending"},
{"id": 25, "subject": "Task 25: DriverHostActor per-driver index + batched comms-loss fan", "status": "pending", "blockedBy": [2]},
{"id": 26, "subject": "Task 26: Direct-apply artifact read off the mailbox", "status": "pending", "blockedBy": [25]},
{"id": 27, "subject": "Task 27: MTConnect sample chunks parse from bytes", "status": "pending"},
{"id": 28, "subject": "Task 28: Full sweep + plan close-out docs", "status": "pending", "blockedBy": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]}
],
"lastUpdated": "2026-08-15T23:59:00Z"
}