Idempotency
- Render is a pure function: same inputs, same bytes. Ids and timestamps never enter the pixel path.
- Server jobs are keyed by
sha256(sourceHash + canonical log without ids + output + core version + plugin versions). A repeatedPOST /renderwith an S3 destination returns the stored object withcached: trueand does not render again. Object keys are the job key, so retries overwrite identical bytes. - Client dispatch with an id already in the log is a no-op.
- Scripts and infrastructure in the repository run twice without changes: builds skip when inputs match, goldens rewrite only on change, the SST stack shows no diff on a second deploy.