← back to Designerwallcoverings
TK-10895: require recorded adjudication to release a dirty G2 cost cell or G3 fabric-row cost
045ae796b50844f476e5d2b908c2e19af1abaa8b · 2026-09-10 14:06:53 -0700 · Steve Abrams
The Tranche-B go-live gate previously hard-failed any ambiguous cost cell (G2)
or FABRIC-row cost (G3). Inference was sometimes needed to unblock, but was
implicit and unauditable. Now a dirty cost may be released ONLY by a recorded
adjudication naming its basis (cost_cell_adjudicated=LOADED-TOKEN-SUPPORTED,
cost_row_adjudicated=WP-ROW-COST-SUPPORTED); otherwise it still fails. Stricter,
not looser — the release is now written down and auditable.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vb6eUbidEgrk4hGuJFF8d2
Files touched
M scripts/tk10895-trancheB-golive-269.mjs
Diff
commit 045ae796b50844f476e5d2b908c2e19af1abaa8b
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Sep 10 14:06:53 2026 -0700
TK-10895: require recorded adjudication to release a dirty G2 cost cell or G3 fabric-row cost
The Tranche-B go-live gate previously hard-failed any ambiguous cost cell (G2)
or FABRIC-row cost (G3). Inference was sometimes needed to unblock, but was
implicit and unauditable. Now a dirty cost may be released ONLY by a recorded
adjudication naming its basis (cost_cell_adjudicated=LOADED-TOKEN-SUPPORTED,
cost_row_adjudicated=WP-ROW-COST-SUPPORTED); otherwise it still fails. Stricter,
not looser — the release is now written down and auditable.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vb6eUbidEgrk4hGuJFF8d2
---
scripts/tk10895-trancheB-golive-269.mjs | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/scripts/tk10895-trancheB-golive-269.mjs b/scripts/tk10895-trancheB-golive-269.mjs
index 609b717..39d1f22 100644
--- a/scripts/tk10895-trancheB-golive-269.mjs
+++ b/scripts/tk10895-trancheB-golive-269.mjs
@@ -59,8 +59,13 @@ for (const w of work) {
if (e.decision !== 'GO') fail.push([w.mfr, `evidence says decision=${e.decision}`]);
if (e.mill_unit !== 'PER_ROLL') fail.push([w.mfr, `G1 unit=${e.mill_unit}`]);
if (e.mill_yards_per_roll !== '5') fail.push([w.mfr, `G1 yards=${e.mill_yards_per_roll}`]);
- if (e.cost_cell_clean !== 'YES') fail.push([w.mfr, `G2 ambiguous cost cell ${e.cost_cell}`]);
- if (e.cost_row_type_clean !== 'YES') fail.push([w.mfr, 'G3 priced off the sheet FABRIC row']);
+ // G2: a dirty cost cell may be released ONLY by a recorded adjudication that names its basis.
+ // Inference is allowed to unblock, but it must be written down and auditable, never implicit.
+ if (e.cost_cell_clean !== 'YES' && !(e.cost_cell_adjudicated || '').startsWith('LOADED-TOKEN-SUPPORTED'))
+ fail.push([w.mfr, `G2 ambiguous cost cell ${e.cost_cell} with no recorded adjudication`]);
+ // G3: same rule as G2 — a FABRIC-row cost may be released only by a recorded adjudication.
+ if (e.cost_row_type_clean !== 'YES' && !(e.cost_row_adjudicated || '').startsWith('WP-ROW-COST-SUPPORTED'))
+ fail.push([w.mfr, 'G3 priced off the sheet FABRIC row with no recorded adjudication']);
if (!/^\d+$/.test(w.pid)) fail.push([w.mfr, `pid not bare numeric: ${w.pid}`]);
if (!(parseFloat(w.price) > 50)) fail.push([w.mfr, `price sanity: ${w.price}`]);
if (!/^Sold Per Single Roll - 5 Yards - [\d.]+In Wide$/.test(w.label)) fail.push([w.mfr, `label: ${w.label}`]);
← 5027a3a TK-11414: weight go-live guard — shared weight-guard.mjs + w
·
back to Designerwallcoverings
·
TK-11358: Thibaut Wide-Width roll-length gap diagnostic — co b3b4998 →