Commit Graph

  • 851e4cf5e0 Merge branch 'fix/r3-03-restart-resubscribe-watchdog' — R3-03: SpawnChild always sends the desired set (operator Restart + supervision restart re-provision, stale-alarm-set re-subscribe, incarnation check, 10 s backoff); watchdog grace = max(LastSuccessfulRead, connectedSince) (archreview 03/S16, S17, U6) Joseph Doherty 2026-08-20 10:40:11 -04:00
  • 6d0002889a docs(archreview): R3-03 review outcome — F1/F2/F3 fixed with red-before evidence Joseph Doherty 2026-08-20 10:39:47 -04:00
  • 0793b0cba8 fix(runtime): rate-limit the supervision reprovision — deferred, not dropped (review F3) Joseph Doherty 2026-08-20 10:39:13 -04:00
  • 48efdac600 fix(calculation): hold evaluation on Bad inputs and propagate the worst input status; status-keyed dedup (05/STAB-19) Joseph Doherty 2026-08-20 10:37:29 -04:00
  • 027c423502 docs(plans): R3-04 execution notes — T6-T12 deviations recorded, T13 marked pending (live gate deferred to orchestrator) Joseph Doherty 2026-08-20 10:33:07 -04:00
  • 985de0b6ad chore(docker-dev): site-b-2 is Cluster:Roles-only, site-a-2 pins a miscased Cluster:Roles entry (archreview 01/S-12, 01/C-9) Joseph Doherty 2026-08-20 10:32:18 -04:00
  • 3f8d5815b3 fix(runtime): mux adapter forwards the dependency's real status code (05/STAB-19) Joseph Doherty 2026-08-20 10:30:14 -04:00
  • b8d2d50006 docs: one role authority — precedence, normalization, and the overlay invariant (R3-04) Joseph Doherty 2026-08-20 10:29:37 -04:00
  • b725788954 docs(plans): R3-01 execution notes (T1-T9) - filter gotcha, T4/T5 fixture scope, observed cookie-challenge signature Joseph Doherty 2026-08-20 10:28:55 -04:00
  • ae97b32c82 test(runtime): comms-loss → identical-value recovery contract + silent-resubscribe control (03/S15) Joseph Doherty 2026-08-20 10:27:48 -04:00
  • b8911eaa14 docs(plans): mark R3-01 T9 done; T10 remains pending (live gate, orchestrator-run) Joseph Doherty 2026-08-20 10:27:45 -04:00
  • a222421374 docs: mesh gRPC ingress is AllowAnonymous; the PSK interceptors are the gate (R3-01) Joseph Doherty 2026-08-20 10:27:40 -04:00
  • 2b7100cf19 fix(runtime): route a reprovision by incarnation, not driver id (review F2) Joseph Doherty 2026-08-20 10:27:02 -04:00
  • 659d5f51e4 test(integration): a Cluster:Roles-only node wires the driver stack Joseph Doherty 2026-08-20 10:26:34 -04:00
  • 4dde5cb8bf docs(plans): mark R3-01 T7 and T8 done Joseph Doherty 2026-08-20 10:25:12 -04:00
  • f3832aa48c test(host): a mesh gRPC map added outside MeshGrpcEndpoints fails the build Joseph Doherty 2026-08-20 10:25:02 -04:00
  • edd01fcc34 fix(runtime): a changed alarm set re-subscribes instead of latching (review F1) Joseph Doherty 2026-08-20 10:24:52 -04:00
  • 82ad98e1a9 chore(docker-dev): parameterise Security__Auth__DisableLogin on the central pair Joseph Doherty 2026-08-20 10:24:49 -04:00
  • e2497c908d test(cluster): guard that role reads live only in the authority (archreview theme 4) Joseph Doherty 2026-08-20 10:21:36 -04:00
  • 9bd3366b28 docs(plans): mark R3-01 T6 done Joseph Doherty 2026-08-20 10:21:01 -04:00
  • 306ea1aecf test(host): driver-only nodes carry no authorization middleware (03/S14 exemption pinned) Joseph Doherty 2026-08-20 10:20:56 -04:00
  • e475f7b4ab Merge branch 'fix/r3-05-acl-hot-path-expiry' — R3-05: bounded ConfigDb API-key lookup (deadline + TTL) and clock-driven key-expiry revalidation of live monitored items (archreview 03/S18, 03/S19) Joseph Doherty 2026-08-20 10:19:13 -04:00
  • 62515f3279 fix(security): pin the cached-key expiry guard, meter cache_hit after it, and close two wiring gaps (review fixes) Joseph Doherty 2026-08-20 10:18:52 -04:00
  • 7d98ef9332 feat(runtime): audit refs still BadNoCommunication after a reconnect (dedup-trap tripwire) Joseph Doherty 2026-08-20 10:16:01 -04:00
  • 353ed6bb58 docs(plans): mark R3-01 T5 done Joseph Doherty 2026-08-20 10:15:03 -04:00
  • 8471db4b1d test(host): no-PSK mesh calls report the interceptor's verdict, not a cookie 401/redirect Joseph Doherty 2026-08-20 10:14:55 -04:00
  • 4380e2e78a fix(cluster): fail start when a late config layer changes Cluster:Roles (role overlays may not set it) Joseph Doherty 2026-08-20 10:11:25 -04:00
  • c1ad9e24d2 docs(archreview): R3-03 execution notes — final verification + deviation summary Joseph Doherty 2026-08-20 10:11:16 -04:00
  • 3314a1f98d feat(host): warn when Cluster:Roles and OTOPCUA_ROLES disagree; boot banner names the winning source Joseph Doherty 2026-08-20 10:08:03 -04:00
  • 815423bd88 docs(plans): restore literal UTF-8 em-dashes in R3-01 tasks.json (cosmetic) Joseph Doherty 2026-08-20 10:07:20 -04:00
  • 12c4028474 docs: restart re-provisioning + per-connection watchdog grace (R3-03) Joseph Doherty 2026-08-20 10:07:20 -04:00
  • 97f4ea0c9e fix(runtime): comms loss marks raw + UNS value nodes BadNoCommunication, value retained (archreview 03/S15) Joseph Doherty 2026-08-20 10:07:12 -04:00
  • af9d3a69ac docs(plans): mark R3-01 T4 done Joseph Doherty 2026-08-20 10:06:55 -04:00
  • 458c84c34f test(host): mesh gRPC boundary under the production auth stack (FallbackPolicy live) Joseph Doherty 2026-08-20 10:06:47 -04:00
  • 14094e3a18 docs(archreview): file R3-05 residuals R1/R2 (Gitea #562/#563); execution notes Joseph Doherty 2026-08-20 10:06:00 -04:00
  • 5c7e5725a5 test(runtime): first supervision-restart test — child re-initialises + re-subscribes (archreview 03/U6) Joseph Doherty 2026-08-20 10:05:45 -04:00
  • e46c1db5e5 fix(cluster): gossiped-role predicates compare case-insensitively — a miscased peer no longer un-elects the Primary Joseph Doherty 2026-08-20 10:04:16 -04:00
  • a9b592aeb8 docs(security): correct revocation latency (activation vs open session) + S18/S19 knobs Joseph Doherty 2026-08-20 10:04:03 -04:00
  • 04019e9414 feat(runtime): publish actor routes status-only batches to the sink Joseph Doherty 2026-08-20 10:03:25 -04:00
  • dfab7f614d test(integration): key expiry stops a live subscription over the wire, with no deploy Joseph Doherty 2026-08-20 10:00:52 -04:00
  • ec5b48bfcd feat(opcua): IOpcUaAddressSpaceSink.WriteStatuses — status-only batch write retaining the node value (03/S15) Joseph Doherty 2026-08-20 10:00:47 -04:00
  • 2b9a397b2d fix(runtime): re-provision a driver child after a supervision restart (archreview 03/S6, S16) Joseph Doherty 2026-08-20 09:56:05 -04:00
  • 6874a562f3 test+docs(mqtt): end-to-end Bad-then-identical-replay recovery Joseph Doherty 2026-08-20 09:55:11 -04:00
  • a4f12bccef fix(host): run monitored-item revalidation on a low-frequency timer (archreview 03/S19) Joseph Doherty 2026-08-20 09:55:01 -04:00
  • d97e441979 test(runtime): operator restart re-subscribes the respawned child (archreview 03/S16, U6) Joseph Doherty 2026-08-20 09:53:38 -04:00
  • b7d20d14a8 fix(mqtt/sparkplug): initial push on subscribe + BadNoCommunication on connection loss Joseph Doherty 2026-08-20 09:52:15 -04:00
  • 1759f60476 docs(plans): mark R3-01 T3 done Joseph Doherty 2026-08-20 09:51:43 -04:00
  • e3cf363703 fix(host): LocalDb sync endpoint opts out of the cookie fallback via an empty-prefix anon group Joseph Doherty 2026-08-20 09:51:33 -04:00
  • bcec88ef70 fix(cluster): all four role-scoped validators read the authority — 'Driver' no longer skips every driver rule (archreview 01/C-9) Joseph Doherty 2026-08-20 09:51:23 -04:00
  • b09f78396f test(opcua): pin clock-driven expiry in the revalidation pass; correct the only-trigger remark Joseph Doherty 2026-08-20 09:50:39 -04:00
  • ac2f8dc801 fix(mqtt): stale observed refs BadNoCommunication on connection loss so the identical replay recovers (05/STAB-18 shape a) Joseph Doherty 2026-08-20 09:46:56 -04:00
  • bd80ff96ca feat(security): AclRevalidationTimer — clock-driven monitored-item revalidation (archreview 03/S19) Joseph Doherty 2026-08-20 09:46:56 -04:00
  • 2f90156408 docs(plans): mark R3-01 T2 done Joseph Doherty 2026-08-20 09:46:40 -04:00
  • b05ebd6353 fix(host): mesh gRPC endpoints opt out of the AdminUI cookie FallbackPolicy (archreview 03/S14) Joseph Doherty 2026-08-20 09:46:30 -04:00
  • 792e8f422a fix(host): Program.cs derives roles from the one authority, not OTOPCUA_ROLES alone (archreview 01/S-12 = 03/C5) Joseph Doherty 2026-08-20 09:46:27 -04:00
  • 39a10a277a fix(security): wrap the ConfigDb key store on admin nodes + registration guard Joseph Doherty 2026-08-20 09:45:08 -04:00
  • 7dfd6dcc9f fix(cluster): AkkaClusterOptions.Roles is the EffectiveRoles instance, not a second derivation Joseph Doherty 2026-08-20 09:43:54 -04:00
  • 6048257dfe feat(observability): meter bounded API-key store lookups Joseph Doherty 2026-08-20 09:43:07 -04:00
  • ac9a71bcbd docs(plans): mark R3-01 T1 done Joseph Doherty 2026-08-20 09:43:06 -04:00
  • 6dab72a479 refactor(host): extract MapOtOpcUaMeshGrpcServices (one authority for the five mesh maps) Joseph Doherty 2026-08-20 09:42:49 -04:00
  • b3a71f6655 test(runtime): recording subscribable driver factory + enabled-driver v3 seed Joseph Doherty 2026-08-20 09:42:33 -04:00
  • 7af9baab39 fix(mqtt): initial push of cached snapshots on (re)subscribe — the push-model forceRaise (05/STAB-18 shape b) Joseph Doherty 2026-08-20 09:42:25 -04:00
  • 7702616716 feat(cluster): EffectiveRoles — one role authority with one precedence + two-layer normalization (archreview 01/S-12, 01/C-9) Joseph Doherty 2026-08-20 09:41:54 -04:00
  • 37288d4df5 feat(security): short TTL read-through cache in front of the ConfigDb key store Joseph Doherty 2026-08-20 09:40:56 -04:00
  • 3b56e5bd01 fix(security): bound the API-key store call under the SessionManager lock (archreview 03/S18) Joseph Doherty 2026-08-20 09:38:41 -04:00
  • faea4ebfca feat(core): InputQuality.WorstOf — the one worst-of-input rule (archreview R3-02 contract) Joseph Doherty 2026-08-20 09:38:16 -04:00
  • daaeb854d6 fix(runtime): every spawn hands the child its desired subscriptions (archreview 03/S16) Joseph Doherty 2026-08-20 09:36:52 -04:00
  • 894444376e feat(security): register TimeProvider + S18/S19 option knobs (archreview 03/S18,S19) Joseph Doherty 2026-08-20 09:36:04 -04:00
  • bdc81a1372 refactor(runtime): one desired-subscription payload authority (_desiredByDriver) Joseph Doherty 2026-08-20 09:34:49 -04:00
  • 72329eabdd docs(archreview): round-3 plan R3-02 (stale-Good family — one quality contract, four seams); index task count Joseph Doherty 2026-08-20 09:33:36 -04:00
  • a801e2aefb fix(runtime): comms-loss grace is per connection — max(LastSuccessfulRead, connectedSince) (archreview 03/S17) Joseph Doherty 2026-08-20 09:32:24 -04:00
  • dd7f495432 docs(archreview): round-3 plan R3-05 (ACL hot-path deadline + clock-driven key expiry); index task count Joseph Doherty 2026-08-20 09:28:53 -04:00
  • 5fd65d190e docs(archreview): round-3 plan R3-03 (restart re-subscribe + watchdog grace); index task count Joseph Doherty 2026-08-20 09:28:03 -04:00
  • a011a53329 docs(archreview): round-3 tranche-1 plans R3-01 (mesh gRPC AllowAnonymous) + R3-04 (one role authority); 00-INDEX round-3 table with executor model assignments Joseph Doherty 2026-08-20 09:27:17 -04:00
  • 7c77a8c799 Merge branch 'docs/archreview-r3-rereview' — round-3 architecture re-review at 12b0035a Joseph Doherty 2026-08-20 09:09:46 -04:00
  • 44f6408e1c docs(archreview): round-3 re-review at 12b0035a — 7 domain reports + 00-OVERALL rewritten in place, STATUS.md round-3 section Joseph Doherty 2026-08-20 09:09:46 -04:00
  • 12b0035a6b Merge branch 'fix/acl-anchor-browse-transit' — ACL browse transit reaches the shared root folder (narrow Browse grants were unreachable by navigation; r3 T7 live-gate finding) Joseph Doherty 2026-08-18 10:02:18 -04:00
  • f679b2f10a docs(plans): annotate the r3 register — browse-transit-below-realm-root closed by 89630ee4+ff9d617a Joseph Doherty 2026-08-18 10:01:48 -04:00
  • ff9d617a1b docs(acl): correct the Browse override's 'two namespace root folders' remark — one shared anchor Joseph Doherty 2026-08-18 09:59:03 -04:00
  • 22ae18365b docs(acl): record the shared-root-folder browse-transit mapping Joseph Doherty 2026-08-18 09:45:09 -04:00
  • 89630ee418 fix(acl): browse transit reaches the shared root folder (narrow Browse grants were unreachable) Joseph Doherty 2026-08-18 09:45:04 -04:00
  • 698a818cb1 Merge branch 'perf/followups-r3' — r2 register closed (ACL CAS loop, S7 worst-state-wins health, 404 mechanism named) + ScadaBridge rows 38/39 (Roslyn test de-flake, LocalDb conditional registration) + four live gates (FetchAndCache, alarm ratchet, ACL-enabled enforcement, 404 catch) Joseph Doherty 2026-08-18 09:11:23 -04:00
  • caf8830bbe docs(plan): r3 ledger finalized + Client.CLI logger-flake register entry Joseph Doherty 2026-08-18 08:50:11 -04:00
  • c4d6cba7e1 docs(plan): r3 close-out — outcomes, sweep record, register annotations Joseph Doherty 2026-08-18 08:48:40 -04:00
  • 837d8a17eb test(scripting): timeout under starvation is not a leak; share the exhaustion-reason constant Joseph Doherty 2026-08-18 08:05:51 -04:00
  • 3f04a4d4e5 docs(docker-dev): first-POST-404 caught — Traefik entrypoint-before-dynamic-config window + no-body POST binding verified Joseph Doherty 2026-08-18 08:00:47 -04:00
  • 326ca33800 docs(plan): record the T9 test rename in the live plan Joseph Doherty 2026-08-18 07:49:54 -04:00
  • 34829ea0d7 test(scripting): Evaluate_racing_ClearCompiledScripts no longer assumes a single clear per evaluation Joseph Doherty 2026-08-18 07:48:44 -04:00
  • df53391646 test(localdb): deregister preserves data + partial-flip fails loudly (review round) Joseph Doherty 2026-08-18 07:42:06 -04:00
  • 3e62f1617b fix(localdb): registration follows replication config — baseline on enable, deregister self-heal on disable (pair-symmetric) Joseph Doherty 2026-08-18 07:25:01 -04:00
  • e29fab19f6 test(acl): correct the array-cell comment — captured locals do take ref (re-review nit) Joseph Doherty 2026-08-18 07:13:16 -04:00
  • 1765e30063 fix(s7): worst-severity error message + OCE flushes recorded pass evidence (review round) Joseph Doherty 2026-08-18 07:10:51 -04:00
  • f4b91dbbab test(acl): race harness — hit diagnostics, 10k rounds, idiom notes (review round) Joseph Doherty 2026-08-18 07:10:44 -04:00
  • 088a1a1e81 docs(plan): r3 amendment — ScadaBridge register rows 38/39 join as Tasks 9-10 Joseph Doherty 2026-08-18 07:00:42 -04:00
  • b35e423c1d fix(s7): a read pass that observes nothing reports nothing — empty pass no longer clears Faulted Joseph Doherty 2026-08-18 07:00:33 -04:00
  • 441b34a391 fix(acl): make InvalidateIfStale a monotonic-max CAS loop — stamp publication is never deferred Joseph Doherty 2026-08-17 07:15:30 -04:00
  • 4c16118105 fix(s7): read-pass health is worst-state-wins — a mixed pass can no longer report Healthy Joseph Doherty 2026-08-17 07:14:32 -04:00
  • e9ba174156 docs(config): OTOPCUA_CONFIG_MODE is gone — site nodes are hardcoded FetchAndCache (Phase 4) Joseph Doherty 2026-08-17 07:07:51 -04:00
  • f64b10b964 docs(plan): perf follow-ups round 3 — r2 register closes + four local live gates Joseph Doherty 2026-08-17 07:06:07 -04:00
  • 49d05bc27b Merge branch 'perf/followups-r2' — round-1 register closed: ACL generation stamp + monotonic rollover guard, S7 cancellation/one-bad-decode pins + TM/CT live pin, historian bounded watches, orphaned-test-DB reaper (injection-hardened), MTConnect ownership comment, docker-dev readiness-gated deploy.sh Joseph Doherty 2026-08-17 06:32:56 -04:00