swarm: convergence strategies + failure threshold, hardened El JSON usage

- vote/merge/reduce/collect convergence proven end-to-end; failure threshold
  aborts a swarm below min_success_ratio (integer per-mille) and completes
  when failures are within tolerance, with worker.failed + swarm.aborted
  tracked durably.
- worked around three El runtime/codegen semantics surfaced during the build:
  json_set inserts RAW (use json_set_str for string values); json_set cannot
  update an existing key (vote tallies via list rescanning); json_array_get
  keeps quotes (use json_array_get_string). Also: float division is unreliable
  (swarm uses integer math), and a let-rebind in a deeply nested if/else does
  not propagate outward (accumulators kept at one block level).

test_convergence: 8/8; test_swarm: 12/12.
This commit is contained in:
bigmerge
2026-08-14 20:37:35 -05:00
parent 40bb6ff579
commit d4e82d3d56
5 changed files with 132 additions and 36 deletions
+1 -1
View File
@@ -117,7 +117,7 @@ fn containment_guard_open(token: String, corr_id: String) -> String {
if str_eq(reason, "") {
return ""
}
let p: String = json_set("{}", "reason", reason)
let p: String = json_set_str("{}", "reason", reason)
worktrack_append("containment.violation", corr_id, "open", p)
return reason
}