Build Log
Alloy: Charge criteria authoring — unblocking the Quench Verification Matrix
July 26, 2026
What shipped
products/alloy/lib/db/schema.ts — ACCEPTANCE_CRITERION_VERIFICATION_METHODS const + AcceptanceCriterionVerificationMethod type; AcceptanceCriterion interface extended with verificationMethod (no DB migration — jsonb shape only)
products/alloy/lib/actions.ts — parseAcceptanceCriteriaFromForm (server-side validation of client-submitted JSON criteria); persistChargeDraft/saveCharge extended to persist chargeAcceptanceCriteria; finalizeCharge hard-blocks on zero criteria; buildChargeFromWorkshop preserves existing criteria untouched; new proposeAcceptanceCriteria + extractProposedCriteria (advisory-only GPT call proposing 1-3 new criteria, never auto-applied)
products/alloy/components/ChargeContractPanel.tsx — new AcceptanceCriteriaEditor (add/edit/reorder/delete/toggle blocking/select verification method), wired into the existing Save Draft/Finalize form via a hidden JSON field; hasRequiredChargeFields extended to require criteria.length > 0; criterionToAppend lifted-state prop for Workshop-accepted proposals
products/alloy/components/ChargeWorkshop.tsx — Propose Criteria button + per-proposal Accept/Reject UI, calling proposeAcceptanceCriteria and handing accepted criteria up via onCriterionAccepted
products/alloy/components/ChargeWorkshopAndForm.tsx — second lifted-state value (criterionToAppend) alongside the existing appliedFromWorkshop, same hand-off shape
products/alloy/components/IgnitePanel.tsx — new AcceptanceCriteriaSummary read-only panel showing the exact finalized criteria (text, blocking, verification method) inside the existing Finalized Charge panel
products/alloy/components/ArcQuenchPanel.tsx — CriterionRow extended to display the authored verification method alongside the existing Blocking badge