v4.1 go-live cut, Moonshot to Mistral swap, v5.x superseded

Mark v5.0/v5.1 SUPERSEDED (error-detection thesis failed at -0.40 delta); v4.1 is canonical. Cut v4.1 proposal with 12 version strings bumped. Moonshot to Mistral across production seats; production worker de-kimi'd 2026-08-18. Data-retention posture corrected 7/9 to 8/9 no-training (DeepSeek sole exception). Reconciled COGS with measured Mistral spend. Committed deployed v4.0 content and research docs to resolve the repo/live fork.
This commit is contained in:
root
2026-08-18 20:28:36 -04:00
parent c1e690a122
commit 3c07727f5c
18 changed files with 3409 additions and 2 deletions
+144
View File
@@ -0,0 +1,144 @@
#!/usr/bin/env python3
"""Verify VerdictTank index-v5.1.html against v5.1 rules."""
import re, sys
from html.parser import HTMLParser
F = "/root/projects/verdicttank/index-v5.1.html"
html = open(F, encoding="utf-8").read()
fail = []
print("=== FORBIDDEN TOKENS (all must be 0) ===")
forbidden = ["\u2014", "GPT-5.6", "unlimited", "Unlimited", "UNLIMITED",
"11 seats", "11-seat", "11 models", "11-judge", "9 vendors",
"9-vendor", "eleven", "nine vendors", "nine-vendor",
"nine rostered", "Three tiers", "$299"]
for pat in forbidden:
n = html.count(pat)
print(f" {pat!r:22} {n}")
if n:
fail.append(f"forbidden token present: {pat!r} x{n}")
# $79 as a standalone price (not $799)
n79 = len(re.findall(r"\$79(?!\d)", html))
print(f" {'$79 (standalone)':22} {n79}")
if n79:
fail.append(f"stale $79 price x{n79}")
print("\n=== REQUIRED TOKENS (all must be >0) ===")
required = ["6-seat", "6 seats", "5 vendors", "4-seat reduced", "$5.20",
"$249", "$799", "$1,499", "$207", "$666", "$1,249",
"$15/review", "$10/review", "Most popular", "Pre-Review Coach",
"v5.1", "verdicttank.com", "Moonshot AI", "Legal + Compliance",
"Financial + Market", "Synthesis + Gate", "Cross-Check"]
for pat in required:
n = html.count(pat)
print(f" {pat!r:22} {n}")
if not n:
fail.append(f"required token missing: {pat!r}")
print("\n=== COGS ARITHMETIC ===")
c = 5.20
for name, q, rev, claimed_cogs, claimed_m in [
("Pro", 5, 249, 26, 90), ("Enterprise", 30, 799, 156, 80),
("White-Label", 50, 1499, 260, 83)]:
cogs = q * c
m = (rev - cogs) / rev * 100
ok = abs(cogs - claimed_cogs) < 0.01 and abs(round(m) - claimed_m) <= 1
print(f" {name:12} {q:2} x ${c} = ${cogs:7.2f} on ${rev:5} -> {m:.1f}% "
f"(page claims ${claimed_cogs}/{claimed_m}%) {'OK' if ok else 'MISMATCH'}")
if not ok:
fail.append(f"COGS mismatch for {name}")
print(f" overage $15 / ${c} = {15/c:.2f}x COGS (page: roughly 3x)")
print(f" overage $10 / ${c} = {10/c:.2f}x COGS (page: roughly 2x)")
for base, ann in [(249, 207), (799, 666), (1499, 1249)]:
d = (1 - ann / base) * 100
ok = abs(d - 16.7) < 1.0
print(f" annual {base} -> {ann} = {d:.1f}% off {'OK' if ok else 'CHECK'}")
if not ok:
fail.append(f"annual discount off for {base}->{ann}: {d:.1f}%")
print(f" AutogenAI $30K / Ent $9,588/yr = {30000/(799*12):.2f}x (page: 3.1x)")
print(f" AutogenAI $30K / WL $17,988/yr = {30000/(1499*12):.2f}x (page: 1.7x)")
print("\n=== ANTHROPIC CONCENTRATION ===")
roster = re.search(r"<h3>The roster</h3>.*?</table>", html, re.S).group(0)
rows = re.findall(r"<tr><td>.*?</tr>", roster, re.S)
vendors = [re.findall(r"<td>([^<]*)</td>", r) for r in rows]
seats = [(v[1], v[2], v[3], v[4]) for v in vendors if len(v) >= 5]
print(f" total seats: {len(seats)}")
for s in seats:
print(f" {s[0]:20} {s[1]:18} {s[2]:12} scores={s[3]}")
vs = {}
for s in seats:
vs[s[2]] = vs.get(s[2], 0) + 1
print(f" distinct vendors: {len(vs)} -> {vs}")
anth = vs.get("Anthropic", 0)
print(f" Anthropic: {anth}/{len(seats)} = {anth/len(seats)*100:.0f}%")
if len(seats) != 6:
fail.append(f"roster has {len(seats)} seats, expected 6")
if len(vs) != 5:
fail.append(f"roster has {len(vs)} vendors, expected 5")
if anth != 2:
fail.append(f"Anthropic holds {anth} seats, expected 2")
print("\n=== HTML STRUCTURE ===")
VOID = {"br", "img", "meta", "link", "hr", "input", "area", "base", "col",
"embed", "source", "track", "wbr"}
class P(HTMLParser):
def __init__(self):
super().__init__(convert_charrefs=True)
self.st, self.err = [], []
def handle_starttag(self, t, a):
if t not in VOID:
self.st.append((t, self.getpos()))
def handle_endtag(self, t):
if t in VOID:
return
if not self.st:
self.err.append(f"stray </{t}> at {self.getpos()}")
return
if self.st[-1][0] != t:
self.err.append(f"mismatch </{t}> at {self.getpos()}, "
f"open <{self.st[-1][0]}> from {self.st[-1][1]}")
else:
self.st.pop()
p = P()
p.feed(html)
print(f" unclosed tags: {p.st or 'none'}")
print(f" structure errors: {p.err or 'none'}")
if p.st or p.err:
fail.append("HTML structure problems")
print("\n=== PRICING LAYOUT ===")
cards = len(re.findall(r'class="price-card', html))
print(f" price-card divs: {cards} (expected 4)")
if cards != 4:
fail.append(f"{cards} price cards, expected 4")
grid4 = "grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0" in html
print(f" .pricing-grid is 4-col: {grid4}")
if not grid4:
fail.append("pricing-grid not 4 columns")
ribbon = html.count('<div class="ribbon">Most popular</div>')
print(f" 'Most popular' ribbon: {ribbon} (expected 1)")
if ribbon != 1:
fail.append("ribbon count wrong")
# comparison table row labels
print("\n=== COMPARISON TABLE ROWS ===")
for label in ["Price", "Reviews per month", "Overage", "Panel", "Fix-Its",
"Re-score loop", "Pre-Review Coach", "White-label", "Workspaces",
"Corpus isolation", "Judge pool config", "Reseller model",
"Annual billing (16.7% off)"]:
present = f"<strong>{label}</strong>" in html
print(f" {label:30} {'OK' if present else 'MISSING'}")
if not present:
fail.append(f"comparison row missing: {label}")
print(f"\n file size: {len(html)} bytes")
print("\n" + "=" * 50)
if fail:
print(f"FAILED ({len(fail)}):")
for f_ in fail:
print(f" - {f_}")
sys.exit(1)
print("ALL CHECKS PASSED")