a300f35f9d
chore(rig): ScriptTrace retention override; verify-delmia-notifier step H = Flow Debugger live run + replay
Joseph Doherty
2026-09-06 00:38:41 -04:00
66d5a67e4f
feat(central-ui): Flow Debugger drill-ins from Audit Log + Execution Chain; TraceAllCalls checkbox on the method form
Joseph Doherty
2026-09-06 00:33:37 -04:00
254118a467
feat(central-ui): Flow Debugger page (predict, live run, replay, step detail) + nav entry
Joseph Doherty
2026-09-06 00:31:55 -04:00
9300bc1a4f
feat(audit): GetTraceEventsAsync returns the ScriptTrace chain for Replay
Joseph Doherty
2026-09-05 23:59:08 -04:00
981deed0fd
feat(inbound-api): executor threads the trace flag; endpoint honours ApiMethod.TraceAllCalls
Joseph Doherty
2026-09-05 23:59:08 -04:00
3f582a278c
feat(inbound-api): RouteHelper writes an always-on RouteCall audit row, propagates Trace, exposes an inline trace sink
Joseph Doherty
2026-09-05 23:59:08 -04:00
7e61552d82
feat(wire): attribute updates carry source_execution_id/trace; PullTraceEvents RPC + site read-by-execution-ids
Joseph Doherty
2026-09-05 23:52:50 -04:00
f15d0db0ad
feat(wire): route_to_call trace flag + child_execution_id + trace_events; route_to_set_attributes trace (additive proto + mapper)
Joseph Doherty
2026-09-05 23:52:50 -04:00
2c86adb782
feat(site-runtime): route handlers forward Trace and return child ExecutionId + trace events
Joseph Doherty
2026-09-05 23:43:33 -04:00
01be39019e
feat(site-runtime): InstanceActor trace arm stamps the device echo of a traced write; Trace rides on published changes
Joseph Doherty
2026-09-05 23:43:33 -04:00
93489cd7a2
feat(site-runtime): ScriptRuntimeContext emits ScriptTrace AttributeWrite/AttributeWait rows and inherits the Trace flag
Joseph Doherty
2026-09-05 23:43:32 -04:00
febb268d89
feat(site-runtime): FlowTraceCollector
Joseph Doherty
2026-09-05 23:42:39 -04:00
ec7b5b2ea3
feat(commons): FlowStep/FlowGraph projection + FlowGraphBuilder for the Flow Debugger
Joseph Doherty
2026-09-05 23:41:50 -04:00
24e595d6d9
feat(commons): additive Trace flag + ChildExecutionId/TraceEvents on route/call/write/change records
Joseph Doherty
2026-09-05 23:41:50 -04:00
2e3eb94d38
docs(plans): Flow Debugger implementation plan — 24 tasks, TDD, additive contracts first, rig step H last
Joseph Doherty
2026-09-05 23:22:55 -04:00
7fa916e2c7
docs(plans): Flow Debugger design — visual swimlane debugger for inbound API + value-change flows
Joseph Doherty
2026-09-05 22:51:52 -04:00
d2bfd8340c
chore(deps): bump ZB.MOM.WW.MxGateway.Client/Contracts 0.2.0->0.2.1
Joseph Doherty
2026-09-03 12:23:10 -04:00
59813da508
docs(claude): note index row length convention + sister-project-history split
Joseph Doherty
2026-09-03 10:48:04 -04:00
e45c4af91d
docs(plans): inbound-api-key-shared-store task ledger — all 14 tasks complete
Joseph Doherty
2026-09-02 23:39:06 -04:00
551f753580
docs(deployment): planned record for moving QA (vq03/vq04) and prod (vd03) central inbound key stores to SQL Server; plan doc no longer spells out the dev sa password
Joseph Doherty
2026-09-02 23:33:38 -04:00
f47ceb55b1
docs: inbound API key store — shared SQL Server provider on central pairs (spec, runbook + central-pairs procedure, DBA DDL copy, topology, env inventory, CLAUDE.md, register row 108 closed with rig proof, row 109 Secrets backoff follow-up, Delmia spec §8)
Joseph Doherty
2026-09-02 23:31:21 -04:00
a83cc8613d
chore(docker): both rigs' centrals on the shared SQL Server inbound key store; delete sync-inbound-api-keys.sh (superseded); verify-delmia-notifier.sh preflight is now the proof that both nodes see a key minted on one — drill green with no file copy, takeover 28 s
Joseph Doherty
2026-09-02 23:31:21 -04:00
d6fd8c400c
feat(host): StartupValidator warns when a clustered central keeps per-node inbound API keys; rejects an unknown ApiKeyStore:Provider at boot; Program.cs logs CollectWarnings once Serilog is up
Joseph Doherty
2026-09-02 23:26:34 -04:00
06be0b9e64
feat(host): inbound API key store provider — SqlServer shares one zbauth row set across the central pair; one-shot SQLite import at boot (file renamed .imported, one retry on a concurrent-peer PK race, failure never blocks boot)
Joseph Doherty
2026-09-02 23:26:03 -04:00
afe59a5518
chore(host): pin ZB.MOM.WW.Auth 0.3.0 + ApiKeys.SqlServer; InboundApiKeyStoreOptions (Provider Sqlite|SqlServer, ReadProvider fails the boot on an unknown value)
Joseph Doherty
2026-09-02 22:46:11 -04:00
081e57f166
docs: Delmia rig stand-in + notifier verification results (A-G incl. active-central kill/takeover 27 s, rejoin); register rows 107 (prod DelmiaRecv path) + 108 (per-node inbound API key store breaks central failover); CLAUDE.md bullet; plan + task file
Joseph Doherty
2026-09-02 12:54:58 -04:00
f4363e0b4b
fix(delmia-notifier)+chore(docker): review follow-ups — trim the env key like the file key, log which source supplied the key (never the key), hoist the not-configured message; README warns never to commit a filled-in appsettings.json; design-doc body lines updated; seed-delmia-api.sh no longer hides CLI errors and notes key names are not unique
Joseph Doherty
2026-09-02 12:52:56 -04:00
83f7bbfb50
test(docker): verify-delmia-notifier.sh — notifier end-to-end on the rig incl. standby relay, active-central kill/takeover and rejoin; sync-inbound-api-keys.sh mirrors the per-node key store
Joseph Doherty
2026-09-02 12:52:56 -04:00
27eb598987
chore(docker): seed-delmia-api.sh — DelmiaRecipeDownload inbound method (prod script) + scoped delmia-notifier API key
Joseph Doherty
2026-09-02 12:43:21 -04:00
5466cab920
chore(docker): seed-delmia-sim.sh — in-memory SimMachine + composed DelmiaReceiver stand-in on site-a with a ValueChange simulator playing the Galaxy side
Joseph Doherty
2026-09-02 12:43:21 -04:00
8adb09a083
feat(delmia-notifier): optional ScadaBridge:ApiKey in appsettings.json as a fallback to SCADABRIDGE_API_KEY (env still wins); README/env inventory/design row updated
Joseph Doherty
2026-09-02 12:43:21 -04:00
7dc30085be
docs(api-specs): capture the as-deployed DelmiaRecipeDownload contract from prod vd03 (method, site handshake, keys, observed calls); link from the legacy dnc spec
Joseph Doherty
2026-09-02 12:43:21 -04:00
afb5180ce0
docs+test(site-runtime): Lever 1 final-review polish — document that the Good reset does not release an in-flight request and that the guard is inert once interval ≥ ceiling; FlappingGood asserts the retry landed during the burst instead of timing Thread.Sleep; NativeAlarmActor (same unguarded amplifier) + cancel-race residue recorded as follow-ups
Joseph Doherty
2026-08-28 15:10:21 -04:00
c52f14afca
docs(plans): Lever 1 live gate PASS on the docker rig (one request per 45 s ceiling, backoff 5→9.4→20.4 s, Good within ~95 s of restore); plan tasks 1-8 completed
Joseph Doherty
2026-08-28 15:06:22 -04:00
0589486f4e
fix(site-runtime): ConnectionQualityChanged(Good) only resets the tag-subscribe backoff while it is stretched — a flapping connection can no longer defer the retry it was meant to hasten
Joseph Doherty
2026-08-28 14:57:30 -04:00
150c3f60d8
docs: tag-subscribe in-flight guard + backoff (Lever 1) — spec, CLAUDE.md, design-doc status
Joseph Doherty
2026-08-28 14:53:23 -04:00
ab08ecd3d3
feat(site-runtime): ConnectionQualityChanged(Good) resets tag-subscribe backoff to the floor (Lever 1); lock in superseded-reply drop
Joseph Doherty
2026-08-28 14:50:04 -04:00
b6b401c879
feat(site-runtime): tag-subscribe failure reply frees the in-flight slot, backs off (×2 ±20%, capped) and Success resets to floor (Lever 1)
Joseph Doherty
2026-08-28 14:36:22 -04:00
029d39fca2
feat(site-runtime): tag-subscribe in-flight guard — one outstanding request per connection until TagSubscribeInFlightCeilingMs (Lever 1)
Joseph Doherty
2026-08-28 14:24:35 -04:00
2f471dd7a1
feat(site-runtime): pure NextTagSubscribeInterval backoff step (double, ±20% jitter, clamp)
Joseph Doherty
2026-08-28 14:20:07 -04:00
e39cca093b
docs(plans): Lever 1 implementation plan — tag-subscribe in-flight guard + exponential backoff in InstanceActor (8 tasks, TDD)
Joseph Doherty
2026-08-28 14:17:51 -04:00
dce52ad087
docs(plans): MxGateway subscribe-storm prevention design — reviewed against both repos; Lever 3 re-scoped to the gateway's per-session command_timeout (no per-invoke override exists), da0bfe2b attributed to the ScadaBridge DCL, line refs refreshed
Joseph Doherty
2026-08-28 14:13:02 -04:00
a9b23556eb
feat(inbound-api): standby central node relays POST /api/* to the active peer instead of 503
Joseph Doherty
2026-08-28 13:34:20 -04:00
f07ba5cff5
docs(deployment): QA vq03/vq04 + prod vd03 upgraded to afb27e77 (template picker) — binary-only, no migrations; all six health endpoints Healthy
Joseph Doherty
2026-08-21 08:34:49 -04:00
afb27e7780
docs: CLAUDE.md — template picker on Create Instance (RevealKeys, ?templateId, Deployer-gated New Instance…) + the Single-mode SelectedKey/SelectedKeys trap
Joseph Doherty
2026-08-21 08:24:05 -04:00
7a77d38abf
test(playwright): key the Configure bulk-Apply click by data-test (strict-mode collision with the grouped 'Apply to n' button)
Joseph Doherty
2026-08-21 08:22:03 -04:00
d6a31f1cd0
docs(plans): template picker — live rig gate PASS (New Instance…, ?templateId prefill, picker reveal/search/cancel, Disable verb) + task status
Joseph Doherty
2026-08-21 08:07:22 -04:00
4bb77cf0f7
docs(centralui): template picker on Create Instance, New Instance… from the Templates tree
Joseph Doherty
2026-08-21 08:01:37 -04:00
7c2582d105
feat(centralui): Templates tree context menu — "New Instance…" (Deployer-gated)
Joseph Doherty
2026-08-21 07:44:15 -04:00
5b4a27b23e
feat(centralui): Create Instance picks its template from the folder tree (+ ?templateId preselect)
Joseph Doherty
2026-08-21 07:42:14 -04:00
4bd2651925
feat(centralui): TemplatePickerDialog — folder-tree template picker hosted by IDialogService
Joseph Doherty
2026-08-21 07:08:37 -04:00
8df6bcb6e0
feat(centralui): TemplateFolderTree.RevealKeys — expand to a preselected node
Joseph Doherty
2026-08-21 06:55:03 -04:00
9261fa09fa
feat(centralui): TemplatePathFormatter — folder-path label for template pickers
Joseph Doherty
2026-08-21 06:53:40 -04:00
22468c1548
docs(plans): template picker design + 8-task plan — Create Instance picks from the Templates folder tree (TemplatePickerDialog, ?templateId preselect), Templates tree gains Deployer-gated 'New Instance…', Topology Disable confirm verb pinned (already fixed by 0db253b5)
Joseph Doherty
2026-08-21 06:51:27 -04:00
a3e2df325c
docs(deployment): QA vq03/vq04 + prod vd03 upgraded to 691a2f2f (create-time bindings) — binary-only, no migrations; healthy; outgoing-process stop-timeout FTL noted
Joseph Doherty
2026-08-21 06:36:24 -04:00
691a2f2f80
docs(plans): create-time bindings — live rig gate PASS (Object-node pick, prefill, 30/30 bound, deploy-gate A/B) + task status
Joseph Doherty
2026-08-21 06:20:50 -04:00
80b9ab2d57
feat(centralui): Create saves bindings (upsert) and lands on Configure with a created/bound/bindError notice
Joseph Doherty
2026-08-21 06:12:53 -04:00
8d17af37ac
feat(centralui): CreateBindingPlanner — prefill/tail-strip/binding-list logic for create-time bindings
Joseph Doherty
2026-08-21 06:05:41 -04:00
6257c9e20e
feat(deploymentmanager): IFlatteningPipeline.PreviewAsync — flatten a template+site without an instance row (create-page bindings)
Joseph Doherty
2026-08-21 06:04:13 -04:00
a7301bb638
docs(plans): create-time connection bindings — design (inline card on Create Instance, object-node Browse, land on Configure) + 9-task plan
Joseph Doherty
2026-08-21 05:59:00 -04:00
8beee522a3
docs(deployment): prod vd03 hotfix da0bfe2b (binary-only swap via WinRM, app.bak.20260820T170309) — healthy, boot-time advise retries match the a24fa38e boot
Joseph Doherty
2026-08-20 17:08:27 -04:00
50f7439e33
docs(deployment): QA hotfix da0bfe2b — MxGateway graceful-stream-end disconnect; incident root cause (dashboard session close 15:29:03)
Joseph Doherty
2026-08-20 16:57:45 -04:00
da0bfe2be1
fix(dcl): MxGateway adapter treats a graceful end of the event stream as a disconnect — a dashboard 'close session' (or graceful gateway shutdown) completes the stream with OK, leaving the adapter Connected on a dead session: values frozen at last GOOD quality, every write 'Session … was not found' until restart (QA vq03 Z28061 MoveIn, 2026-08-20). Pinned: signals once while connected, silent for superseded loops / own teardown
Joseph Doherty
2026-08-20 16:51:13 -04:00
f5a74db3de
docs(deployment): record prod upgrade of wonder-app-vd03 to a24fa38e (via WinRM from vq04) — 6 EF migrations, AuditLog:SiteWriter path, System32 auditlog.db relocated; Z28061 270 rows / 8 groups
Joseph Doherty
2026-08-20 16:40:00 -04:00
5b9cf772db
docs(deployment): record QA upgrade of wonder-app-vq03 + vq04 (all 4 nodes) to a24fa38e — 6 EF migrations, AuditLog:SiteWriter path added, System32 auditlog.db relocated; grouped bindings verified on Z28061 (264 rows / 8 groups)
Joseph Doherty
2026-08-20 16:31:57 -04:00
a24fa38eae
docs(plans): grouped connection bindings — all 9 tasks complete
Joseph Doherty
2026-08-20 16:12:13 -04:00
546250096d
fix(centralui): grouped bindings review fixes — Apply with the header at none/mixed keeps each member's connection (never unbinds; upsert Save could not persist it), object inference runs over effective references (bare-default members make an overridden group mixed, default-only prefixes infer), bindings to a deleted connection count as unbound, 'n changed · unsaved' diffs against last-saved state; bUnit behaviour tests for fallback banner, grouping and mixed-group Apply+Save
Joseph Doherty
2026-08-20 16:09:34 -04:00
5e04e81ba0
docs: grouped connection bindings — Central UI Configure page, ResolvedAttribute.DefaultDataSourceReference, CLI instance bind-module; correct the stale 'set-bindings REPLACES all' claim (server upserts) in README + help text
Joseph Doherty
2026-08-20 16:01:33 -04:00
77f4af0d64
feat(centralui): grouped Connection Bindings panel — rows sourced from the flattened config (composed module members were invisible; flatten failure falls back to direct attributes with a banner), per-module connection + Object apply, unbound/mixed pills, show-only-unbound filter, Test Bindings covers composed rows, per-row Browse retained
Joseph Doherty
2026-08-20 15:59:51 -04:00
02a374259b
feat(cli): instance bind-module — rebind one composed module's members to a new object path via GetInstance → SetConnectionBindings upsert; --dry-run
Joseph Doherty
2026-08-20 15:54:27 -04:00
2fb1c8ee14
feat(centralui): BindingGroupBuilder.ApplyObject — per-module bulk rewrite to <object>.<member>, blank clears
Joseph Doherty
2026-08-20 15:54:47 -04:00
5da7003e88
feat(centralui): BindingGroupBuilder — group flattened binding rows by module, infer the shared MxAccess object prefix, count unbound
Joseph Doherty
2026-08-20 15:53:59 -04:00
3acb79d97e
feat(templateengine): ResolvedAttribute.DefaultDataSourceReference — pre-binding default for the Configure page; excluded from the revision hash (pinned)
Joseph Doherty
2026-08-20 15:53:05 -04:00
4cfd9337a3
docs(plans): grouped connection bindings implementation plan (9 tasks)
Joseph Doherty
2026-08-20 15:49:36 -04:00
eef77b6654
docs(plans): grouped connection bindings design — Configure page sources binding rows from the flattened config (composed members were invisible), per-module Object bulk apply, CLI instance bind-module parity
Joseph Doherty
2026-08-20 15:44:40 -04:00
4388fa41e4
deps(localdb)+docs: consume LocalDb 0.3.4 — snapshot as_of_seq floors at last_acked_seq, ending the full-snapshot-on-every-reconnect loop (register row 106 closed, live-proven on the rig: second pair restart exchanged zero snapshots)
Joseph Doherty
2026-08-20 10:00:37 -04:00
25c15dd164
ops(docker)+test(host)+docs: close register rows 104 + 105 — offline VACUUM recipe applied to the rig; build-time pin that no replicated table is a cascading-FK parent; record row 106 (LocalDb as_of_seq=0 full-snapshot loop)
Joseph Doherty
2026-08-20 09:37:48 -04:00
bbc1b55cc4
test(siteeventlog): make P4-5's ExecuteAsync-yield test deterministic — park the purge on the isActiveNode gate instead of racing the pool thread
Joseph Doherty
2026-08-20 08:56:50 -04:00