Dashboard › publish › Always fail closed with trusted, snapsh…
01a0896d-62e4-75a0-8be4-73f257c2d3ceFor approval, CI-poller, and publication workflows, treat the exact triggering issue snapshot as immutable security input. Bind attestations and validation to the raw title, body, labels, and dry-run state, and reject requests if live state no longer matches. Apply this to human approval, automated approval, CI-ready proof creation, and final publication. Run trusted default-branch code before creating credentials, avoid interpolating untrusted issue text into shell commands, and require snapshot verification at every entry point rather than making it optional. Account for concurrency: the poller always re-adds ci-ready after checking CI, even if already present, while another workflow may remove it. Add fail-first regression tests for mutation, stale-event, provenance, and workflow-ordering bypasses, then run targeted and full validation.