Skip to content

Fix nondeterministic variable substitution - #320

Merged
pinodeca merged 1 commit into
mainfrom
fix/309-deterministic-variable-substitution
Jul 30, 2026
Merged

Fix nondeterministic variable substitution#320
pinodeca merged 1 commit into
mainfrom
fix/309-deterministic-variable-substitution

Conversation

@pinodeca

Copy link
Copy Markdown
Contributor

Summary

  • replace HashMap-ordered user variable replacement with a single left-to-right template scan
  • keep inserted values opaque so placeholder-like text is not rescanned
  • add regression tests for insertion-order independence, system variables, and unknown placeholders
  • document transitive orchestration determinism requirements for future AI-assisted changes

Validation

  • cargo fmt -p pg_durable -- --check
  • cargo test --lib --features pg17 (256 passed, 16 ignored)
  • git diff --check

Fixes #309

Replace HashMap-ordered replacement with a single-pass template scan and document transitive orchestration determinism requirements.

Fixes #309
@pinodeca
pinodeca merged commit 5fdbbcb into main Jul 30, 2026
5 checks passed
@pinodeca
pinodeca deleted the fix/309-deterministic-variable-substitution branch July 30, 2026 20:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

substitute_all_with_options iterates a HashMap, making variable substitution nondeterministic across replays

1 participant