Order B: retire edge_pct display. Promotion gate NOT passed — no flip.
THE PROMOTION WAS NOT PERFORMED. Champion grade path byte-identical (diff empty
across intelligence/, gradeSlateService, snapshotService). Projection, p_win and
the CLV instrument untouched.
REVIEW ZERO IS A GATE AND THREE OF FOUR PREREQUISITES FAIL:
0.1 scores are ESTIMATED priors from the founding spec, not measured. The
premise's cited values are not in the code either — the module holds
nba:points .80 and mlb:total_bases .55; there is no NBA 0.72 and no WNBA
score at all.
0.2 VERSION-BOUNDARY TAG DID NOT LAND — config/modelEras.js has zero shading
references. It was deliberately not applied twice (nothing had been
promoted) and reported both times. The order's own rule says STOP.
0.3 NO ROLLBACK FLAG EXISTS — zero occurrences of SHADING_ENABLED /
EDGE_SHADING / shadingEnabled anywhere in src/.
0.4 takeable tags DID land (migration 034, 1246/1254 rows). PASS.
AND THE APPROVED DELTA DOES NOT MATCH THE MEASURED ONE. Approved: 43.6% of
grades re-letter, efficient markets tighten and soft hold. Measured on all 1250
live rows: 97.4% change (1217), 79.8% move UP, 17.6% down, resulting in 79.0%
A-family (MLB 93.4%) against the champion's 0.2%. And rows_actually_shaded = 0
of 1250 — 96.5% of markets are unscored (f=1) and the one scored market present
is the anchor (f=1.0 by construction). The entire re-letter comes from switching
to edge-vs-fixed-bar grading, NOT from efficiency shading, which is inert on
this board. That is an unapproved grading-basis change riding along, which the
order's own "no new scaling changes riding along" guardrail forbids.
Flipping would re-letter 97.4% of an append-only public record, move 79.8% of
grades UP and mint A's on 79% of the board, on a letter whose measured
correlation with outcomes is r ~ 0.005 — the exact scenario the permanent
founder ruling forbids.
SHIPPED — ORDER B (independent of the promotion, and a live falsehood):
edge_pct display retired from GradeResultCard (confidence strip, EDGE stat cell
now honest-absent, alt-ladder rung) and SoccerGradeResult. DeskShowcase kept
(already honest). Computation and the board's signed-edge sort fallback SURVIVE
— deleting them would re-break the sort fixed on 2026-07-29; a test asserts all
three survive and the sort still orders agrees -> disagrees -> absent.
Fixed two build-breakers the retirement caused (orphaned edgeColor import,
orphaned edge_pct destructure; edge_pct stays on the props contract). Two
pre-existing tests superseded rather than deleted: they asserted the edge figure
is sign-coloured, and now assert the stronger property that no edge percentage
renders at all.
Floor: 314 suites / 3908 tests green (9 new), web build exit 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QJs13VsyiSKYQP6rj3NNmc
This commit is contained in:
+1
-1
File diff suppressed because one or more lines are too long
@@ -170,7 +170,9 @@ function gradeColor(grade: string): string {
|
||||
|
||||
export default function SoccerGradeResult(props: SoccerGradeResultProps) {
|
||||
const {
|
||||
player, stat_type, line, direction, league, grade, confidence, edge_pct,
|
||||
// ORDER B: `edge_pct` stays on the props CONTRACT (callers still pass it and the
|
||||
// backend still computes it) but is no longer destructured for display.
|
||||
player, stat_type, line, direction, league, grade, confidence,
|
||||
reasoning, kill_conditions_triggered, tier_gated, upgrade_hint,
|
||||
onUpgradeClick, onClose,
|
||||
} = props;
|
||||
@@ -225,9 +227,9 @@ export default function SoccerGradeResult(props: SoccerGradeResultProps) {
|
||||
{typeof confidence === 'number' && (
|
||||
<div className="mono" style={{ fontSize: 11, color: 'var(--text-tertiary)', marginTop: 4 }}>
|
||||
{confidence.toFixed(0)}% conf
|
||||
{typeof edge_pct === 'number' && (
|
||||
<> · {edge_pct >= 0 ? '+' : ''}{edge_pct.toFixed(1)}% edge</>
|
||||
)}
|
||||
{/* ORDER B (2026-07-31) — "% edge" retired. edge_pct is price-free and
|
||||
line-scaled; calling it an edge is false at any scale. The prop is
|
||||
still passed and still computed — only the claim is withdrawn. */}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -12,7 +12,10 @@ import PlayerAvatar from '@/components/vyndr/PlayerAvatar';
|
||||
import BookComparisonPanel from '@/components/vyndr/BookComparisonPanel';
|
||||
import { type HeadshotSport } from '@/lib/playerHeadshot';
|
||||
import { gradeColor, gradeHex } from '@/lib/vyndrTokens';
|
||||
import { edgeColor, gradeGlows } from '@/lib/colorContract';
|
||||
// ORDER B (2026-07-31): `edgeColor` was only ever used to tint the retired
|
||||
// edge_pct display. Dropped from the import rather than left dangling — the
|
||||
// helper itself stays in colorContract for other consumers.
|
||||
import { gradeGlows } from '@/lib/colorContract';
|
||||
import PriceTriplet, { type PriceTripletData } from './PriceTriplet';
|
||||
import { playerHref } from '@/lib/playerHref';
|
||||
|
||||
@@ -176,12 +179,13 @@ export default function GradeResultCard({
|
||||
{/* 3. CONFIDENCE STRIP */}
|
||||
<div className="mono" style={{ position: 'relative', zIndex: 2, marginTop: 8, fontSize: 15, fontWeight: 600, color: 'var(--text-0)', display: 'flex', justifyContent: 'center', flexWrap: 'wrap', alignItems: 'center' }}>
|
||||
<span style={{ color: hex, fontWeight: 800 }}>{d.grade}</span>
|
||||
{d.edge != null && (
|
||||
<>
|
||||
<span style={{ color: 'rgba(232,255,244,.4)', margin: '0 9px' }}>·</span>
|
||||
<span style={{ color: edgeColor(d.edge) }}>{d.edge >= 0 ? '+' : ''}{d.edge}% edge</span>
|
||||
</>
|
||||
)}
|
||||
{/* ORDER B (2026-07-31) — the "edge %" is RETIRED from display.
|
||||
`edge_pct` is `(projection − line) / line`: PRICE-FREE, and its scale is a
|
||||
function of line size, so on a 0.5 line it reads +620%. Calling that an
|
||||
"edge" is false at any scale — an edge requires a price. The value is still
|
||||
COMPUTED and still drives the board's signed-edge sort fallback; only the
|
||||
user-facing claim is withdrawn until a real price-aware edge (ev_pct) is
|
||||
live. See specs/edge-pct-display-retirement.md. */}
|
||||
<span style={{ color: 'rgba(232,255,244,.4)', margin: '0 9px' }}>·</span>
|
||||
<span>{d.confidence}% confidence</span>
|
||||
</div>
|
||||
@@ -213,7 +217,10 @@ export default function GradeResultCard({
|
||||
{[
|
||||
{ l: 'MODEL', v: d.projection != null ? d.projection : '—', col: d.projection != null ? 'var(--g-a)' : 'var(--text-2)' },
|
||||
{ l: 'LINE', v: d.line, col: 'var(--text-0)' },
|
||||
{ l: 'EDGE', v: d.edge != null ? `${d.edge >= 0 ? '+' : ''}${d.edge}%` : '—', col: d.edge != null ? edgeColor(d.edge) : 'var(--text-2)' },
|
||||
// ORDER B — honest-absent until a price-aware edge exists. edge_pct is
|
||||
// price-free and line-scaled (a 0.5 line reads +620%), so it is never shown
|
||||
// as "EDGE". Computation + sort fallback are untouched.
|
||||
{ l: 'EDGE', v: '—', col: 'var(--text-2)' },
|
||||
].map((x, i) => (
|
||||
<div key={i} style={{ padding: '14px 16px', textAlign: 'center', borderRight: i < 2 ? '1px solid var(--border)' : 'none' }}>
|
||||
<div className="label" style={{ fontSize: 10, marginBottom: 5 }}>{x.l}</div>
|
||||
@@ -321,9 +328,10 @@ export default function GradeResultCard({
|
||||
<div key={i} style={{ flex: '1 1 0', minWidth: 64, textAlign: 'center', padding: '9px 6px', background: 'var(--bg-2)', border: a.base ? '1px solid var(--border-hi)' : '1px solid var(--border)', borderRadius: 6 }}>
|
||||
<div className="mono" style={{ fontSize: 12, color: a.base ? 'var(--text-0)' : 'var(--text-1)', marginBottom: 5 }}>{a.line}{a.base ? ' •' : ''}</div>
|
||||
<div className="mono" style={{ fontSize: 17, fontWeight: 800, color: gradeColor(a.grade) }}>{a.grade}</div>
|
||||
{a.edge != null && (
|
||||
<div className="mono" style={{ fontSize: 10, color: Number(a.edge) >= 0 ? 'var(--g-a)' : 'var(--miss)', marginTop: 3 }}>{Number(a.edge) >= 0 ? '+' : ''}{a.edge}%</div>
|
||||
)}
|
||||
{/* ORDER B — the ladder rung's % is the SAME price-free edge_pct, so it
|
||||
is withdrawn here too. The rung's LINE and GRADE (real model output)
|
||||
still render; DeskShowcase keeps its own already-honest rendering,
|
||||
which nulls anything beyond the sane cap. */}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user