docs(delmia): document at-least-once failover semantics + DelmiaRecipeDownload idempotency requirement
Manual verification (task step 3) skipped: this worktree cannot reach a live environment to fetch the deployed DelmiaRecipeDownload script via `scadabridge api-method get`. Documents only the mandated contract per PLAN-06 Task 23; verifying the deployed script against it is deferred to whoever has live environment access. Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
This commit is contained in:
@@ -52,6 +52,15 @@ WWNotifier.exe -m Z28061 -d "C:\recipes\job.nc" -w WO12345 -p PN-7788 -s 0100 -u
|
||||
- All diagnostics (per-URL attempt, status code, which URL answered, exceptions) go to **stderr** and,
|
||||
if `LogPath` is set, an appended log file — never to stdout.
|
||||
|
||||
## Delivery semantics
|
||||
|
||||
The `BaseUrls` failover loop is at-least-once, not exactly-once: a connection reset *after* the
|
||||
target already processed the POST, or a slow response that exceeds `TimeoutSeconds`, both look like
|
||||
an unreachable node to this client and cause a re-POST to the next URL — even though the first
|
||||
attempt may already have succeeded. The deployed `DelmiaRecipeDownload` inbound method must be
|
||||
idempotent on `(MachineCode, DownloadPath, WorkOrderNumber)` so a duplicate delivery is harmless;
|
||||
see the design doc's "Delivery semantics: at-least-once" section for details.
|
||||
|
||||
## Configuration — `appsettings.json`
|
||||
|
||||
Placed next to the exe (copied to the output on build/publish):
|
||||
|
||||
Reference in New Issue
Block a user