Commit 46d91a5
fix(modelchecker): preserve action return values across symmetric clones (#354)
CloneWithRefs was initializing the clone's Returns field to an empty
StringDict. Since the symmetric-permutation hashing path (findVisitedSymmetric
-> getSymmetryTranslations -> symmetricHashWithoutClone -> p2.HashCode())
operates on a clone, per-action return values were silently stripped from
the dedup key. Two yield-points that differ only in what an action returned
collapsed into one node.
Copy p.Returns into the clone so the symmetric hash matches the original
HashCode (which includes Returns at line 604). This restores the pre-#297
behavior where actions returning values produce distinct nodes — needed
for visualization, MBT, and explorer consumers that depend on the return
value being visible in the graph.
Regression introduced by #297 ("Consistently use min hash value") when
the dedup lookup switched from `visited[node.HashCode()]` to
`visited[minHash]` — the new path always goes through CloneWithRefs.
Co-authored-by: jayaprabhakar <jayaprabhakar@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 14760e2 commit 46d91a5
1 file changed
Lines changed: 10 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
396 | 396 | | |
397 | 397 | | |
398 | 398 | | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
399 | 408 | | |
400 | 409 | | |
401 | 410 | | |
| |||
408 | 417 | | |
409 | 418 | | |
410 | 419 | | |
411 | | - | |
| 420 | + | |
412 | 421 | | |
413 | 422 | | |
414 | 423 | | |
| |||
0 commit comments