← back to Tk 10867 Gb Safe Plan
add Graham and Brown dry-run hold plan
ce9df48aff94edf11015c5325237380377f7fecf · 2026-08-30 14:29:18 -0700 · Steve Abrams
Files touched
A .gitignoreA README.mdA build-plan.mjsA dry-run-plan.jsonA test.mjsA verification/e2e-proof.json
Diff
commit ce9df48aff94edf11015c5325237380377f7fecf
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Sun Aug 30 14:29:18 2026 -0700
add Graham and Brown dry-run hold plan
---
.gitignore | 8 +
README.md | 16 ++
build-plan.mjs | 87 ++++++++++
dry-run-plan.json | 383 ++++++++++++++++++++++++++++++++++++++++++++
test.mjs | 21 +++
verification/e2e-proof.json | 22 +++
6 files changed, 537 insertions(+)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..378c83f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+.env*
+node_modules/
+tmp/
+*.log
+.DS_Store
+dist/
+build/
+.next/
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..bd1a98f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# TK-10867 Graham & Brown safe plan
+
+Offline reconciliation only. The available snapshots prove 442 active products
+and 401 sample-only products, leaving 41 that require variant-level verification.
+They do **not** prove 41 products are missing samples: the active snapshot has no
+variant nodes, and a June log records 39 roll variants added before the sample-only
+snapshot was generated.
+
+The pricing evidence also fails closed. `gb.csv` covers 93 Laura Ashley SKUs at a
+new cost of $66 and a proposed retail of $110, while the ticket-mandated formula
+computes `$66 / .65 / .85 = $119.46`. Unit evidence (`Sold Per Roll — 20.5 in x
+33 ft`) is scoped to that historical Laura Ashley cohort, not every G&B product.
+
+Therefore all 41 rows are `HOLD_LIVE_VARIANT_VERIFY`, with zero executable
+mutations. The plan records the exact preconditions and restore-map contract a
+future approved executor must satisfy.
diff --git a/build-plan.mjs b/build-plan.mjs
new file mode 100644
index 0000000..ea05915
--- /dev/null
+++ b/build-plan.mjs
@@ -0,0 +1,87 @@
+#!/usr/bin/env node
+// TK-10867: offline, read-only Graham & Brown cohort reconciliation.
+import fs from 'node:fs';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
+
+const here = path.dirname(fileURLToPath(import.meta.url));
+const activePath = '/Users/macstudio3/Projects/_overnight/shopify-products-live.jsonl';
+const samplePath = '/Users/macstudio3/Projects/designerwallcoverings/today-viewer/data/sample-only-skus.json';
+const csvPath = '/Users/macstudio3/Projects/Designer-Wallcoverings/vendor-scrapers/gb.csv';
+const rollLogPath = '/Users/macstudio3/Projects/Designer-Wallcoverings/vendor-scrapers/gb-roll-complete.log';
+
+const active = fs.readFileSync(activePath, 'utf8').trim().split(/\n/).map(JSON.parse)
+ .filter(product => product.vendor === 'Graham & Brown' && String(product.status).toUpperCase() === 'ACTIVE');
+const sampleJson = JSON.parse(fs.readFileSync(samplePath, 'utf8'));
+const sampleOnly = (Array.isArray(sampleJson) ? sampleJson : sampleJson.products || sampleJson.items || [])
+ .filter(product => product.vendor === 'Graham & Brown');
+const sampleIds = new Set(sampleOnly.map(product => String(product.id)));
+const needsVariantVerification = active.filter(product => !sampleIds.has(String(product.id).split('/').pop()));
+
+const csv = fs.readFileSync(csvPath, 'utf8').trim().split(/\r?\n/).slice(1).map(line => {
+ const [sku, title, oldCost, oldRetail, newCost, newRetail] = line.split(',').map(value => value.trim());
+ return { sku, title, old_cost: Number(oldCost), old_retail: Number(oldRetail), new_cost: Number(newCost), csv_new_retail: Number(newRetail) };
+});
+const formulaRetail = cost => Math.round((cost / 0.65 / 0.85) * 100) / 100;
+const rollLog = fs.readFileSync(rollLogPath, 'utf8');
+const appliedMatches = [...rollLog.matchAll(/APPLIED:\s*(\d+),\s*skipped:\s*(\d+)/g)].map(match => ({ applied: Number(match[1]), skipped: Number(match[2]) }));
+
+const plan = {
+ ticket: 'TK-10867', generated_at: new Date().toISOString(), mode: 'OFFLINE_DRY_RUN_HOLD',
+ sources: [
+ { path: activePath, modified: '2026-05-30T09:53:46-07:00', role: 'active product identity only; no variants' },
+ { path: samplePath, modified: '2026-06-22T12:36:41-07:00', role: 'sample-only product identity' },
+ { path: csvPath, modified: '2026-06-09T17:57:39-07:00', role: '93-SKU Laura Ashley pricing sheet' },
+ { path: rollLogPath, modified: '2026-06-10T17:11:42-07:00', role: 'historical roll-add result' }
+ ],
+ cohort: {
+ active_snapshot: active.length,
+ sample_only_snapshot: sampleOnly.length,
+ not_in_sample_only_needs_variant_verification: needsVariantVerification.length,
+ candidates: needsVariantVerification.map(product => ({
+ product_id: String(product.id).split('/').pop(), handle: product.handle, title: product.title,
+ verdict: 'HOLD_LIVE_VARIANT_VERIFY',
+ reason: 'active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant'
+ }))
+ },
+ provenance: {
+ unit: {
+ value: 'Sold Per Roll — 20.5 in x 33 ft',
+ scope: 'historical Laura Ashley gb.csv cohort only',
+ source: 'gb-add-roll.js ROLL_TITLE and gb.csv titles',
+ verdict: 'HOLD_FOR_NON_LAURA_ASHLEY'
+ },
+ cost: {
+ rows: csv.length, uniform_new_cost: [...new Set(csv.map(row => row.new_cost))],
+ scope: 'exact gb.csv SKU matches only; candidate snapshot lacks SKU, so no exact join is possible offline',
+ verdict: 'HOLD_NO_EXACT_SKU_JOIN'
+ },
+ retail: {
+ csv_uniform_retail: [...new Set(csv.map(row => row.csv_new_retail))],
+ required_formula_at_66: formulaRetail(66),
+ formula: 'cost / 0.65 / 0.85',
+ verdict: formulaRetail(66) === 110 ? 'CONSISTENT' : 'CONFLICT_HOLD'
+ },
+ historical_roll_result: appliedMatches.at(-1) || null
+ },
+ dry_run: {
+ executable_mutations: 0,
+ required_before_any_future_sample_add: [
+ 'current live product ACTIVE', 'no existing Sample variant', 'base SKU is unique and nonempty',
+ 'capture product options and every variant id/title/sku/price as restore-map',
+ 'unit provenance applies to exact SKU', 'cost provenance applies to exact SKU',
+ 'formula retail independently recomputed', 'bounded canary approved'
+ ],
+ proposed_sample_shape_after_gates: { title: 'Sample', sku: '<BASE-SKU>-Sample', price: '4.25' },
+ rollback_contract: 'delete only the newly-created variant GID; restore any changed option/SKU fields from captured before-map'
+ },
+ blockers: [
+ 'Current local mirror read remained blocked for 498.5 seconds and returned no cohort.',
+ 'Available active snapshot has no variant nodes, so missing-Sample status cannot be inferred.',
+ 'Historical $66->$110 CSV pricing conflicts with required $119.46 formula price.',
+ 'Unit/cost evidence is Laura Ashley/CSV scoped and cannot be generalized to all 41 rows.'
+ ],
+ side_effects: { shopify_writes: 0, database_writes: 0, activation: 0, deploy: 0, sends: 0, spend: 0, schedule_changes: 0 }
+};
+fs.writeFileSync(path.join(here, 'dry-run-plan.json'), JSON.stringify(plan, null, 2) + '\n');
+console.log(JSON.stringify({ cohort: plan.cohort, provenance: plan.provenance, executable_mutations: 0, blockers: plan.blockers }, null, 2));
diff --git a/dry-run-plan.json b/dry-run-plan.json
new file mode 100644
index 0000000..d4831ed
--- /dev/null
+++ b/dry-run-plan.json
@@ -0,0 +1,383 @@
+{
+ "ticket": "TK-10867",
+ "generated_at": "2026-08-30T21:29:14.465Z",
+ "mode": "OFFLINE_DRY_RUN_HOLD",
+ "sources": [
+ {
+ "path": "/Users/macstudio3/Projects/_overnight/shopify-products-live.jsonl",
+ "modified": "2026-05-30T09:53:46-07:00",
+ "role": "active product identity only; no variants"
+ },
+ {
+ "path": "/Users/macstudio3/Projects/designerwallcoverings/today-viewer/data/sample-only-skus.json",
+ "modified": "2026-06-22T12:36:41-07:00",
+ "role": "sample-only product identity"
+ },
+ {
+ "path": "/Users/macstudio3/Projects/Designer-Wallcoverings/vendor-scrapers/gb.csv",
+ "modified": "2026-06-09T17:57:39-07:00",
+ "role": "93-SKU Laura Ashley pricing sheet"
+ },
+ {
+ "path": "/Users/macstudio3/Projects/Designer-Wallcoverings/vendor-scrapers/gb-roll-complete.log",
+ "modified": "2026-06-10T17:11:42-07:00",
+ "role": "historical roll-add result"
+ }
+ ],
+ "cohort": {
+ "active_snapshot": 442,
+ "sample_only_snapshot": 401,
+ "not_in_sample_only_needs_variant_verification": 41,
+ "candidates": [
+ {
+ "product_id": "6555449131059",
+ "handle": "dwgb-700337",
+ "title": "Yasuni Nude Wallcovering",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "6555454013491",
+ "handle": "dwgb-700441",
+ "title": "Lotus Plum Wallcovering",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7691117953075",
+ "handle": "boreas-midnight-wallpaper-wallcovering-graham-brown",
+ "title": "Boreas Midnight Architectural Wallcovering | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7693324222515",
+ "handle": "graphic-blush-wallpaper-wallcovering-grahambrown-1",
+ "title": "Graphic Blush Architectural Wallcovering Wallcovering | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7776866566195",
+ "handle": "gothic-damask-flock-grey-silver-wallpaper-graham-brown",
+ "title": "Gothic Damask Flock Grey & Silver Wallcovering | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7778843820083",
+ "handle": "yasuni-nude-wallcovering-graham-brown",
+ "title": "Yasuni Nude Wallcovering | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7778860171315",
+ "handle": "clarissa-hulse-gypsophila-midnight-copper-wallcovering-graham-brown",
+ "title": "Clarissa Hulse Gypsophila Midnight & Copper Wallcovering | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7778953232435",
+ "handle": "moments-teal-wall-graham-brown",
+ "title": "Moments Teal Wall | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7779664035891",
+ "handle": "teal-graham-brown-1",
+ "title": "Teal | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7780858921011",
+ "handle": "grey-graham-brown-1",
+ "title": "Grey | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7781580177459",
+ "handle": "navy-graham-brown-1",
+ "title": "Navy | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7781582078003",
+ "handle": "teal-graham-brown-2",
+ "title": "Teal | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7784938078259",
+ "handle": "multicolor-wall-graham-brown-1",
+ "title": "Multicolor Wall | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7784970780723",
+ "handle": "tree-sage-graham-brown-1",
+ "title": "Tree Sage | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7785754492979",
+ "handle": "natural-graham-brown-1",
+ "title": "Natural | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7785755082803",
+ "handle": "stone-graham-brown-2",
+ "title": "Stone | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7785755705395",
+ "handle": "copper-graham-brown-1",
+ "title": "Copper | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7785756950579",
+ "handle": "gold-graham-brown-1",
+ "title": "Gold | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7786023583795",
+ "handle": "scenes-gray-wall-graham-brown-1",
+ "title": "Scenes Gray Wall | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7786025484339",
+ "handle": "flower-blue-wall-graham-brown-1",
+ "title": "Flower Blue Wall | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7786025648179",
+ "handle": "leaf-sage-graham-brown-1",
+ "title": "Leaf Sage | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7786376036403",
+ "handle": "chocolate-graham-brown-1",
+ "title": "Chocolate | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7786378362931",
+ "handle": "breathe-graham-brown-1",
+ "title": "Breathe | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7786379116595",
+ "handle": "teal-graham-brown-3",
+ "title": "Teal | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7786380001331",
+ "handle": "natural-graham-brown-2",
+ "title": "Natural | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7786966384691",
+ "handle": "breathe-graham-brown-2",
+ "title": "Breathe | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7786971103283",
+ "handle": "black-graham-brown-1",
+ "title": "Black | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7786971496499",
+ "handle": "weave-emerald-graham-brown-1",
+ "title": "Weave Emerald | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7787375394867",
+ "handle": "grey-graham-brown-2",
+ "title": "Grey | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7787375624243",
+ "handle": "hazel-graham-brown-1",
+ "title": "Hazel | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7787376640051",
+ "handle": "teal-graham-brown-4",
+ "title": "Teal | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7787376934963",
+ "handle": "silk-dawn-graham-brown-1",
+ "title": "Silk Dawn | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7789361102899",
+ "handle": "gold-graham-brown-2",
+ "title": "Gold | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7789361201203",
+ "handle": "grey-graham-brown-3",
+ "title": "Grey | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7789362020403",
+ "handle": "garden-teal-graham-brown-1",
+ "title": "Garden Teal | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7789362085939",
+ "handle": "pale-gold-graham-brown-1",
+ "title": "Pale Gold | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7789362217011",
+ "handle": "natural-graham-brown-3",
+ "title": "Natural | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7789597392947",
+ "handle": "weave-sage-graham-brown-1",
+ "title": "Weave Sage | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7789597589555",
+ "handle": "stripe-sage-graham-brown-1",
+ "title": "Stripe Sage | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7789598179379",
+ "handle": "navy-graham-brown-3",
+ "title": "Navy | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ },
+ {
+ "product_id": "7789598310451",
+ "handle": "duck-egg-graham-brown-1",
+ "title": "Duck Egg | Graham & Brown",
+ "verdict": "HOLD_LIVE_VARIANT_VERIFY",
+ "reason": "active snapshot has no variant data; absence from sample-only snapshot does not prove a missing Sample variant"
+ }
+ ]
+ },
+ "provenance": {
+ "unit": {
+ "value": "Sold Per Roll — 20.5 in x 33 ft",
+ "scope": "historical Laura Ashley gb.csv cohort only",
+ "source": "gb-add-roll.js ROLL_TITLE and gb.csv titles",
+ "verdict": "HOLD_FOR_NON_LAURA_ASHLEY"
+ },
+ "cost": {
+ "rows": 93,
+ "uniform_new_cost": [
+ 66
+ ],
+ "scope": "exact gb.csv SKU matches only; candidate snapshot lacks SKU, so no exact join is possible offline",
+ "verdict": "HOLD_NO_EXACT_SKU_JOIN"
+ },
+ "retail": {
+ "csv_uniform_retail": [
+ 110
+ ],
+ "required_formula_at_66": 119.46,
+ "formula": "cost / 0.65 / 0.85",
+ "verdict": "CONFLICT_HOLD"
+ },
+ "historical_roll_result": {
+ "applied": 39,
+ "skipped": 54
+ }
+ },
+ "dry_run": {
+ "executable_mutations": 0,
+ "required_before_any_future_sample_add": [
+ "current live product ACTIVE",
+ "no existing Sample variant",
+ "base SKU is unique and nonempty",
+ "capture product options and every variant id/title/sku/price as restore-map",
+ "unit provenance applies to exact SKU",
+ "cost provenance applies to exact SKU",
+ "formula retail independently recomputed",
+ "bounded canary approved"
+ ],
+ "proposed_sample_shape_after_gates": {
+ "title": "Sample",
+ "sku": "<BASE-SKU>-Sample",
+ "price": "4.25"
+ },
+ "rollback_contract": "delete only the newly-created variant GID; restore any changed option/SKU fields from captured before-map"
+ },
+ "blockers": [
+ "Current local mirror read remained blocked for 498.5 seconds and returned no cohort.",
+ "Available active snapshot has no variant nodes, so missing-Sample status cannot be inferred.",
+ "Historical $66->$110 CSV pricing conflicts with required $119.46 formula price.",
+ "Unit/cost evidence is Laura Ashley/CSV scoped and cannot be generalized to all 41 rows."
+ ],
+ "side_effects": {
+ "shopify_writes": 0,
+ "database_writes": 0,
+ "activation": 0,
+ "deploy": 0,
+ "sends": 0,
+ "spend": 0,
+ "schedule_changes": 0
+ }
+}
diff --git a/test.mjs b/test.mjs
new file mode 100644
index 0000000..5124398
--- /dev/null
+++ b/test.mjs
@@ -0,0 +1,21 @@
+#!/usr/bin/env node
+import assert from 'node:assert/strict';
+import fs from 'node:fs';
+
+const plan = JSON.parse(fs.readFileSync(new URL('./dry-run-plan.json', import.meta.url)));
+assert.equal(plan.ticket, 'TK-10867');
+assert.equal(plan.mode, 'OFFLINE_DRY_RUN_HOLD');
+assert.equal(plan.cohort.active_snapshot, 442);
+assert.equal(plan.cohort.sample_only_snapshot, 401);
+assert.equal(plan.cohort.not_in_sample_only_needs_variant_verification, 41);
+assert.equal(plan.cohort.candidates.length, 41);
+assert.ok(plan.cohort.candidates.every(row => row.verdict === 'HOLD_LIVE_VARIANT_VERIFY'));
+assert.equal(plan.provenance.cost.rows, 93);
+assert.deepEqual(plan.provenance.cost.uniform_new_cost, [66]);
+assert.deepEqual(plan.provenance.retail.csv_uniform_retail, [110]);
+assert.equal(plan.provenance.retail.required_formula_at_66, 119.46);
+assert.equal(plan.provenance.retail.verdict, 'CONFLICT_HOLD');
+assert.deepEqual(plan.provenance.historical_roll_result, { applied: 39, skipped: 54 });
+assert.equal(plan.dry_run.executable_mutations, 0);
+assert.ok(Object.values(plan.side_effects).every(value => value === 0));
+console.log('PASS: cohort bounds, stale-source holds, pricing conflict, rollback preconditions, and zero-side-effect plan');
diff --git a/verification/e2e-proof.json b/verification/e2e-proof.json
new file mode 100644
index 0000000..82f5ebd
--- /dev/null
+++ b/verification/e2e-proof.json
@@ -0,0 +1,22 @@
+{
+ "ticket": "TK-10867",
+ "intent": "Bound the active Graham & Brown missing-sample cohort and produce a reversible dry-run without catalog writes",
+ "risk_tier": "R1",
+ "environment": "offline local snapshots and historical local pricing/roll artifacts",
+ "timestamp": "2026-08-30T20:45:00Z",
+ "checks": [
+ {"name":"syntax","command":"node --check build-plan.mjs","verdict":"PASS"},
+ {"name":"offline plan generation","command":"node build-plan.mjs","verdict":"PASS"},
+ {"name":"artifact assertions","command":"node test.mjs","verdict":"PASS"},
+ {"name":"current mirror cohort","command":"read-only shopify_products query","verdict":"SKIP","reason":"blocked for 498.5 seconds; interrupted without a result"}
+ ],
+ "assertions": [
+ "442 active snapshot products", "401 sample-only snapshot products", "41 require live variant verification",
+ "historical roll log applied 39 and skipped 54", "93 pricing rows uniformly carry cost 66 and CSV retail 110",
+ "required formula price at cost 66 is 119.46, so pricing is held", "zero executable mutations"
+ ],
+ "side_effects": {"shopify_writes":0,"database_writes":0,"activation":0,"deploy":0,"sends":0,"spend":0,"schedule_changes":0},
+ "cleanup": "No external state created",
+ "verdict": "PARTIAL",
+ "blocker": "Current variant-level state and exact SKU joins remain unavailable until the local mirror responds or a separately authorized live read is performed"
+}
(oldest)
·
back to Tk 10867 Gb Safe Plan
·
TK-10867: read-only live missing-Sample enumerator + verifie e653247 →