// WARNING: This pattern is INTENTIONALLY non-idempotent. // It exists to test detectNonIdempotent() diagnosis tooling. // Do NOT use as a reference for correct pattern development. import { computed, Default, nonPrivateRandom, pattern, UI, Writable, } from "commonfabric"; export default pattern<{ items: Writable< string[] | Default<["alpha", "bravo", "charlie", "delta", "echo"]> >; }>(({ items }) => { // Anti-pattern: nonPrivateRandom() inside computed() produces different output each run const shuffled = new Writable([]); computed(() => { const arr = [...items.get()]; for (let i = arr.length - 1; i > 0; i--) { const j = Math.floor(nonPrivateRandom() * (i + 1)); [arr[i], arr[j]] = [arr[j], arr[i]]; } shuffled.set(arr); }); return { $NAME: "Non-Idempotent Shuffle", [UI]: (

Non-Idempotent Shuffle

Input items:
    {items.map((item) =>
  • {item}
  • )}
Shuffled (keeps changing):
    {shuffled.map((item) =>
  • {item}
  • )}
Anti-pattern:{" "} nonPrivateRandom() in computed() — each run produces a different permutation.
Fix:{" "} Sort deterministically or move randomization to a handler.
), }; });