Joseph Doherty
|
1fcfa4fb16
|
fix(security): scope-filter secured-write listing + align spec with enforced site scoping (plan R2-07 T6)
|
2026-07-13 10:53:16 -04:00 |
|
Joseph Doherty
|
80e5b36852
|
refactor(host): CentralSingletonRegistrar -> SingletonRegistrar with optional role scope — unblocks site-singleton drains (plan R2-01 T10)
|
2026-07-13 10:49:49 -04:00 |
|
Joseph Doherty
|
4a0462e4d0
|
fix(options): validate Host Node/Database/Logging options at startup — empty NodeName fails fast instead of NULLing SourceNode (plan R2-08 T7, arch-review 08r2 NF4)
|
2026-07-13 10:49:42 -04:00 |
|
Joseph Doherty
|
92936747b7
|
fix(security): additive permitted-sites filter on secured-write query/count (plan R2-07 T5)
|
2026-07-13 10:48:45 -04:00 |
|
Joseph Doherty
|
c2707fdcf8
|
docs(health): CentralHealthReportLoop comments say oldest-member, not cluster leader — stop re-teaching the S2 conflation (plan R2-01 T9)
|
2026-07-13 10:46:18 -04:00 |
|
Joseph Doherty
|
9b9222d223
|
fix(security): enforce LDAP-mapping site scope on secured-write submit/approve/reject (plan R2-07 T4)
|
2026-07-13 10:46:08 -04:00 |
|
Joseph Doherty
|
11efe4be05
|
fix(health): flag metrics-stale for never-reported sites via FirstSeenAt anchor — null LastReportReceivedAt no longer skips the check (plan R2-01 T8)
|
2026-07-13 10:45:22 -04:00 |
|
Joseph Doherty
|
e4765b2eed
|
docs(tracker): correct the wonder-app-vd03 deferral record — artifact is present (gitignored); overlay edits applied on-disk by R2-01 T5/T6 (plan R2-01 T7)
|
2026-07-13 10:42:38 -04:00 |
|
Joseph Doherty
|
24c2097ec3
|
fix(security): ship trusted-proxy ForwardedHeaders config for Traefik topologies + document lockout-DoS trade-off (plan R2-07 T3)
|
2026-07-13 10:42:37 -04:00 |
|
Joseph Doherty
|
f85f036b09
|
fix(options): eager startup validation for AuditLog central sub-options — PartitionMaintenance, Purge, Reconciliation (plan R2-08 T6, arch-review 08r2 NF4)
|
2026-07-13 10:39:03 -04:00 |
|
Joseph Doherty
|
b532a1e30e
|
fix(security): trusted-proxy ForwardedHeaders so LoginThrottle keys on the real client IP (plan R2-07 T2)
|
2026-07-13 10:38:41 -04:00 |
|
Joseph Doherty
|
65e0f770d1
|
test(failover): unskip FailoverTimingTests on the two-node rig at production timings — measured 33.7s vs ~25s design envelope (plan R2-01 T4; covers report-08 NF2)
|
2026-07-13 10:38:19 -04:00 |
|
Joseph Doherty
|
e0dddac0be
|
fix(options): eager startup validation for AuditLog site sub-options — SiteWriter, SiteTelemetry, SiteRetention (plan R2-08 T5, arch-review 08r2 NF4)
|
2026-07-13 10:36:46 -04:00 |
|
Joseph Doherty
|
e1a692016e
|
fix(security): throttle DebugStreamHub LDAP bind via ManagementAuthenticator + correct coverage doc (plan R2-07 T1)
|
2026-07-13 10:36:32 -04:00 |
|
Joseph Doherty
|
30356803e7
|
docs(docker): mark failover-drill results table PENDING — live drill run (plan R2-01 T3) deferred to avoid disrupting the running docker cluster
|
2026-07-13 10:34:24 -04:00 |
|
Joseph Doherty
|
d536450611
|
docs(cluster): per-direction failover truth — first-seed bootstrap constraint + operator recovery actions; drop the undeliverable ~25s active-crash promise (plan R2-01 T2)
|
2026-07-13 10:33:56 -04:00 |
|
Joseph Doherty
|
8ddcbbd6f4
|
docs(changelog): refresh to reality — fix false Operator/Engineer claim, summarize arch-review initiative + M7/M8 (plan R2-08 T4)
|
2026-07-13 10:33:24 -04:00 |
|
Joseph Doherty
|
badc97afe8
|
fix(docker): failover drill kills the STANDBY by default; active mode measures the registered keep-oldest outage instead of pretending recovery (plan R2-01 T1)
|
2026-07-13 10:32:54 -04:00 |
|
Joseph Doherty
|
c573d8cac6
|
fix(audit-log): retention loop absorbs shutdown cancellation instead of faulting host StopAsync (plan R2-04 T12)
|
2026-07-13 10:28:03 -04:00 |
|
Joseph Doherty
|
c83b51fe9c
|
fix(comm): single-gRPC-endpoint sites can go live (flip degenerates to same-node reconnect) (plan R2-02 T15)
|
2026-07-13 10:26:43 -04:00 |
|
Joseph Doherty
|
8f46b6cec2
|
fix(sitecallaudit): time-sliced terminal purge replaces the single year-scale DELETE (plan R2-04 T11)
|
2026-07-13 10:26:33 -04:00 |
|
Joseph Doherty
|
41ffe42de3
|
docs(comm): accept + document standby aggregators and deleted-site viewer behavior; fix aggregator e2e ctor call for new params (plan R2-02 T14)
|
2026-07-13 10:25:10 -04:00 |
|
Joseph Doherty
|
3d6973cc89
|
perf(sitecallaudit): filtered IX_SiteCalls_Terminal index backs the retention purge predicate (plan R2-04 T10)
|
2026-07-13 10:23:19 -04:00 |
|
Joseph Doherty
|
4e228110ec
|
fix(comm): site delete disposes the site's cached gRPC channels via RemoveSiteAsync (plan R2-02 T13)
|
2026-07-13 10:22:56 -04:00 |
|
Joseph Doherty
|
439dee52d3
|
fix(kpi): classify the failover fold-race pass loss as a self-healing Information event (plan R2-04 T9)
|
2026-07-13 10:21:02 -04:00 |
|
Joseph Doherty
|
b7f8632db8
|
chore(comm): ctor-inject aggregator reconnect/stability tuning, remove process-global statics (plan R2-02 T12)
|
2026-07-13 10:19:51 -04:00 |
|
Joseph Doherty
|
c29e588905
|
fix(comm): queue failover re-seed behind in-flight fan-out; stamp stream generation on gRPC errors (plan R2-02 T11)
|
2026-07-13 10:18:16 -04:00 |
|
Joseph Doherty
|
cd93ad3976
|
fix(kpi): promote catalog metric literals to shared KpiMetrics constants — drift becomes a compile error (plan R2-04 T8)
|
2026-07-13 10:15:40 -04:00 |
|
Joseph Doherty
|
bb8be55382
|
perf(comm): coalesce live-alarm delta publishes (250ms window, 0 = legacy) (plan R2-02 T10)
|
2026-07-13 10:14:54 -04:00 |
|
Joseph Doherty
|
1c8b2bc745
|
docs(kpi): trend charts state per-bucket-total semantics for rate metrics (plan R2-04 T7)
|
2026-07-13 10:12:58 -04:00 |
|
Joseph Doherty
|
cc4ff7029d
|
chore(saf): eagerly validate SweepBatchLimit/SweepTargetParallelism (plan R2-02 T9)
|
2026-07-13 10:10:34 -04:00 |
|
Joseph Doherty
|
9a1b160e79
|
fix(kpi): query service applies catalog aggregation at the bucketer — rate charts keep one unit across the raw/rollup boundary (plan R2-04 T6)
|
2026-07-13 10:10:30 -04:00 |
|
Joseph Doherty
|
61442b5f81
|
fix(saf): publish _sweepTask only on CAS win so StopAsync drains the real in-flight sweep (plan R2-02 T8)
|
2026-07-13 10:09:40 -04:00 |
|
Joseph Doherty
|
3ee98c8af6
|
docs: sync Transport/ScriptAnalysis/TemplateEngine specs + CLAUDE.md with the round-2 fix wave (plan R2-05 T9)
No ../scadaproj/CLAUDE.md change needed — no wire-relationship/stack/namespace change in this wave.
|
2026-07-13 10:08:51 -04:00 |
|
Joseph Doherty
|
54417e1ae4
|
fix(kpi): per-metric bucket reduction — Rate series sum per bucket instead of keeping one delta (plan R2-04 T5)
|
2026-07-13 10:07:56 -04:00 |
|
Joseph Doherty
|
6e1ab62d27
|
feat(saf): resync ack confirmation + completed/ack-missing telemetry; doc resync rewrite (plan R2-02 T7)
|
2026-07-13 10:05:33 -04:00 |
|
Joseph Doherty
|
9b4890326e
|
fix(transport): validate MaxConcurrentImportSessions at startup — a zero cap no longer bricks imports silently (plan R2-05 T8)
|
2026-07-13 10:05:31 -04:00 |
|
Joseph Doherty
|
db623c1435
|
fix(transport): warn on import of instance overrides targeting locked template members — inert rows no longer silent (plan R2-05 T7)
|
2026-07-13 10:04:43 -04:00 |
|
Joseph Doherty
|
7b95ef3752
|
fix(kpi): backfill skips or shrinks to the rollup watermark on failover restarts (plan R2-04 T4)
|
2026-07-13 10:03:33 -04:00 |
|
Joseph Doherty
|
91bde0fae6
|
fix(inbound): 415 guard and lenient JSON parse cover chunked (no Content-Length) bodies (plan R2-06 T6)
|
2026-07-13 10:01:22 -04:00 |
|
Joseph Doherty
|
84bc2380f3
|
fix(saf): standby assembles chunked resync, applies atomically with re-check, acks; N5 race documented (plan R2-02 T6)
|
2026-07-13 10:00:47 -04:00 |
|
Joseph Doherty
|
b02c15bbca
|
fix(security): import trust gate covers instance alarm-override trigger expressions — 5th call site is surface-complete (plan R2-05 T6)
|
2026-07-13 09:57:59 -04:00 |
|
Joseph Doherty
|
350d530135
|
fix(kpi): slice the rollup backfill into bounded 24h folds that yield to periodic folds (plan R2-04 T3)
|
2026-07-13 09:57:42 -04:00 |
|
Joseph Doherty
|
fb9dc7ad14
|
fix(inbound): type SITE_UNREACHABLE on AskTimeoutException at the router await instead of message-substring sniffing (plan R2-06 T5)
|
2026-07-13 09:57:22 -04:00 |
|
Joseph Doherty
|
3b9f6b9572
|
docs(siteruntime): compile gate is synchronous by design; Expression alarms share the bounded script pool (plan R2-03 T7)
|
2026-07-13 09:56:45 -04:00 |
|
Joseph Doherty
|
3f937b399b
|
fix(saf): chunk the resync snapshot to fit Akka remoting frames (additive protocol, byte-budgeted) (plan R2-02 T5)
|
2026-07-13 09:55:32 -04:00 |
|
Joseph Doherty
|
128d2bab73
|
perf(siteruntime): deploy gate + InstanceActor PreStart share one Roslyn compile via the compile cache (plan R2-03 T6)
|
2026-07-13 09:54:49 -04:00 |
|
Joseph Doherty
|
b41b3b1b31
|
fix(esg): honor the declared response charset in ReadBodyBoundedAsync with UTF-8 fallback (plan R2-06 T4)
|
2026-07-13 09:53:00 -04:00 |
|
Joseph Doherty
|
1cc05f132f
|
feat(siteruntime): bounded process-wide compiled-script cache, keyed on code hash + globals type (plan R2-03 T5)
|
2026-07-13 09:52:53 -04:00 |
|
Joseph Doherty
|
f3bec6922a
|
fix(siteruntime): eagerly validate TagSubscribeRetryIntervalMs + StuckScriptGraceMs at boot (plan R2-03 T4)
|
2026-07-13 09:51:37 -04:00 |
|