← back to Rebel Walls Push
TK-10029: add --hold-rollbolt flag (scope B) to relabel-units.js
080e96fd323ba2c572ff376905871a6ae0288a33 · 2026-09-03 11:07:12 -0700 · Steve Abrams
Subtractive flag that excises the roll/bolt unit-of-sale cohort
(roll / single roll / sold per roll / sold per bolt (20.5in x 33ft))
from the wrong-label set entirely, so those variants are neither FIXed
nor REVIEWed. Scope-A behavior unchanged when the flag is absent.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PZBUFotX5YXv7nUtTtAa2r
Files touched
M scripts/relabel-units.js
Diff
commit 080e96fd323ba2c572ff376905871a6ae0288a33
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Sep 3 11:07:12 2026 -0700
TK-10029: add --hold-rollbolt flag (scope B) to relabel-units.js
Subtractive flag that excises the roll/bolt unit-of-sale cohort
(roll / single roll / sold per roll / sold per bolt (20.5in x 33ft))
from the wrong-label set entirely, so those variants are neither FIXed
nor REVIEWed. Scope-A behavior unchanged when the flag is absent.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PZBUFotX5YXv7nUtTtAa2r
---
scripts/relabel-units.js | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/scripts/relabel-units.js b/scripts/relabel-units.js
index e28f6a2..b69caa6 100644
--- a/scripts/relabel-units.js
+++ b/scripts/relabel-units.js
@@ -31,6 +31,14 @@ const TOKEN = getToken();
const args = process.argv.slice(2);
const DRY = !args.includes('--apply');
const LIMIT = (() => { const i = args.indexOf('--limit'); return i >= 0 ? parseInt(args[i+1]) : Infinity; })();
+// TK-10029 Scope B (Steve GO 2026-09-03): --hold-rollbolt excises the roll/bolt unit-of-sale
+// cohort from the wrong-label set entirely, so those variants are NEITHER FIXed NOR REVIEWed —
+// they are held pending the separate roll/bolt unit-of-sale review (TK-10405). Purely subtractive:
+// when absent, scope-A behavior is unchanged.
+const HOLD_ROLLBOLT = args.includes('--hold-rollbolt');
+const HELD_ROLLBOLT_LABELS = new Set([
+ 'roll', 'single roll', 'sold per roll', 'sold per bolt (20.5in x 33ft)',
+]);
// TK-10029 / DTD 2026-08-10: canonical mural unit label = "Mural (per m²)" (Option A,
// unanimous 7/7). This is what the live importer push.js already mints, so we converge
@@ -49,6 +57,8 @@ const WRONG_MURAL_LABELS = new Set([
// (e.g. the mojibake "Mural (per m�)") that is NOT already the exact canonical.
function isWrongMuralLabel(value) {
const lower = value.toLowerCase();
+ // Scope B: hold the roll/bolt unit-of-sale cohort — never FIX, never REVIEW-into-rename.
+ if (HOLD_ROLLBOLT && HELD_ROLLBOLT_LABELS.has(lower)) return false;
if (WRONG_MURAL_LABELS.has(lower)) return true;
// mojibake / near-miss of the canonical: starts like "mural (per m" but isn't exact
if (lower.startsWith('mural (per m') && value !== CORRECT_LABEL) return true;
← 59a6e8f route relabel-units to SHOPIFY_FULL_ACCESS_TOKEN (TK-10979 D
·
back to Rebel Walls Push
·
TK-10029: fresh complete pre-apply rollback ledger (1500 ren 789f983 →