5 Commits

Author SHA1 Message Date
Martino Ferrari c53a49e540 controllogic: fix data race in setPath nested-array assignment
setPath mutated nested sub-arrays in place; since graph-local slices (and
their nested sub-slices) may be read concurrently by other flow goroutines,
an action.array.set with a multi-level path raced readers of the same local.
The single-threaded TS source mutates in place safely, but the Go port runs
flows on concurrent goroutines, so setPath now copies on descent (every level
returns a freshly allocated slice). Adds a -race regression test that
concurrently drives nested set + inner-element reads, plus a nested-set
correctness test asserting the prior stored value is not mutated.

Found by whole-branch review (Opus); missed by the per-task reviews.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-24 20:11:14 +02:00
Martino Ferrari 3133e50e09 controllogic: drop sign alias shim + add array node tests (set/remove/pop) 2026-06-24 20:02:52 +02:00
Martino Ferrari 9c1f2685a7 controllogic: debug value is Value (array-capable); lua get narrows to scalar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-24 19:50:47 +02:00
Martino Ferrari 088063d9cd controllogic: add action.array.* nodes (push/set/remove/pop/clear) 2026-06-24 19:45:40 +02:00
Martino Ferrari a6fa4e7c7c controllogic: locals as Value, init from declarations, value-aware write
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-24 19:40:29 +02:00