← back to Dw Rotation Activator
verification/e2e-proof-before-TK11314.json
46 lines
{
"intent": "Use one fail-closed five-field invariant check in every local product activation lane before any ACTIVE mutation.",
"risk_tier": "R1 isolated code; live Shopify activation is R4 and was intentionally not invoked",
"environment": "local macOS workspace; zero-network tests",
"timestamp": "2026-08-29T04:43:00Z",
"ticket": "TK-10947-unify-five-field-activation-checks-acros",
"precondition": "rotate-activate.js had the full extra invariant set; cmo-activate.js and mdc-activate.js duplicated only sample/tag checks.",
"checks": [
{
"verdict": "PASS",
"boundary": "pure validation",
"command": "node --test test/five-field-extra.test.js",
"assertions": "7/7 pass: normal pass, missing sample rejection, strict finite-decimal prices, explicit invalid array-shape holds, tag rejection, normalized quote-only exemption boundaries"
},
{
"verdict": "PASS",
"boundary": "script parse",
"command": "node --check rotate-activate.js; node --check cmo-activate.js; node --check mdc-activate.js",
"assertions": "all three activation entry points parse"
},
{
"verdict": "PASS",
"boundary": "activation mutation ordering",
"command": "zero-network source assertion over all three entry points",
"assertions": "shared fiveFieldExtra call precedes a fail-closed continue, which precedes the ACTIVE mutation"
},
{
"verdict": "PASS",
"boundary": "working-tree hygiene",
"command": "git diff --check",
"assertions": "no whitespace errors"
}
],
"negative_checks": [
"missing sample",
"missing, blank, zero, malformed, negative, suffixed, and non-finite sellable price",
"non-array variants.nodes and tags shapes",
"string tags cannot trigger count or quote-only exemptions",
"fewer than two tags",
"quote-only product without sample"
],
"side_effects": "none; no Shopify/Gmail/network call, no service restart, no deploy, no scheduled-job change",
"cleanup": "not required; tests create no retained state",
"verdict": "PASS for the local pre-activation decision boundary"
}