ChangeGuard — SOC2 Change Advisory Board
A working change-management prototype aligned to SOC2 CC8.1. 28 seeded change requests across migrations, infra, feature flags, vendor swaps, key rotations, and emergency hotfixes — each with risk class, rollback plan, role-separated approval, and audit trail.
What it is
A change-advisory-board prototype that bakes SOC2 CC8.1 evidence requirements into the workflow rather than as an afterthought. Every change carries the rollback plan, the pre-deploy checklist, the requester, the approver, the deployer (role-separated), and the audit trail.
What’s in it
- 28 seeded change requests across realistic categories: database migration, infra, feature flag, vendor swap, key rotation, emergency hotfix. Statuses span the lifecycle — draft, in review, approved, deployed, rejected, rolled-back.
- Real risk classification — Low / Med / High. High-risk DB migrations and JWT-shape changes carry expected friction; low-risk flag toggles and minor infra bumps move auto-approved.
- 7-item SOC2 CC8.1 checklist per change: approver ≠ requester (role separation), rollback plan defined, blast radius assessed, on-call coverage during deploy, monitoring confirmed pre-deploy, security review for auth/data changes, documentation updated.
- Action enforcement — Approve disabled until all checklist items pass. Approver field auto-fills with the reviewer’s email; if it matches the requester, the action refuses (role separation enforced at the UI level).
- Lifecycle state machine — draft → review → approved → deployed → rolled-back. Each transition appends to the trail with timestamp and actor.
- Realistic war stories in the seed: the rejected vendor swap that lacked a warmup plan, the rolled-back COEP rollout that broke YouTube embeds, the emergency Log4Shell hotfix that bypassed CAB with post-hoc review, the SOC2 audit-logger middleware that took a month of evidence to clear.
- Evidence-packet export — full JSON dump of every ticket with trail, for upload to the SOC2 auditor’s portal.
Why this shape
SOC2 CC8.1 is one of the most-failed common-criteria controls in startup audits. The pattern is the same every year: changes happened, nobody disputes that, but the evidence of who approved them, what the rollback was, and whether the checklist passed lives across Slack, GitHub, and faded memory. ChangeGuard is the evidence-first shape — the same record an engineer fills in to deploy is the same record the auditor asks for.
How it ships
Single HTML file, ~38KB. Zero dependencies. The state machine, role-separation enforcement, checklist gating, and JSON evidence packet export are 280 lines of vanilla JavaScript. Realistic seed data is 28 entries totaling ~12KB of structured changes.