Files
whetstone_RSA/presentations/visual_gate_decomposition.html
bill 6aec61d769 Add presentation materials for technical talk on transformer training
Five standalone HTML visuals covering the RSA pipeline, training pipeline,
gate decomposition, dataset anatomy, and model tier sizing. Slide deck brief
describing a 35-slide two-act deck for a data science audience. Handoff note
documenting what was created this session.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 20:01:52 -07:00

147 lines
7.2 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Gate Decomposition</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { background: #0f1117; font-family: 'Segoe UI', system-ui, sans-serif; display: flex; align-items: center; justify-content: center; min-height: 100vh; }
.slide { width: 960px; padding: 56px 72px; }
h2 { color: #e2e8f0; font-size: 1.5rem; font-weight: 400; letter-spacing: 0.05em; text-transform: uppercase; margin-bottom: 48px; text-align: center; }
.top { display: flex; justify-content: center; margin-bottom: 0; }
.origin { background: #1a2040; border: 1.5px solid #4a5568; border-radius: 10px; padding: 24px 36px; text-align: center; min-width: 320px; }
.origin-label { font-size: 0.65rem; letter-spacing: 0.12em; text-transform: uppercase; color: #6b7280; margin-bottom: 8px; }
.origin-name { font-size: 1.1rem; font-weight: 600; color: #e2e8f0; margin-bottom: 6px; }
.origin-sub { font-size: 0.82rem; color: #6b7280; }
.discovery { margin: 28px 0; background: #1a1f2e; border: 1px dashed #7c3aed; border-radius: 8px; padding: 16px 24px; display: flex; align-items: flex-start; gap: 14px; }
.disc-icon { font-size: 1.2rem; flex-shrink: 0; margin-top: 2px; }
.disc-text { font-size: 0.85rem; color: #94a3b8; line-height: 1.6; }
.disc-text strong { color: #a78bfa; }
.disc-text code { color: #c4b5fd; background: #1e1435; padding: 1px 5px; border-radius: 3px; font-family: 'Courier New', monospace; font-size: 0.8rem; }
.branches { display: flex; gap: 32px; margin-top: 8px; position: relative; }
.branch { flex: 1; }
.branch-line { display: flex; justify-content: center; margin-bottom: 0; }
.branch-line svg { display: block; }
.gate-card { border-radius: 10px; padding: 26px 24px; }
.gate-card.resolve { background: #0c1f3a; border: 1.5px solid #3b82f6; }
.gate-card.architect { background: #1a0d2e; border: 1.5px solid #8b5cf6; }
.gate-label { font-size: 0.65rem; letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 8px; font-weight: 600; }
.resolve .gate-label { color: #60a5fa; }
.architect .gate-label { color: #a78bfa; }
.gate-name { font-size: 1rem; font-weight: 600; color: #e2e8f0; margin-bottom: 14px; }
.gate-q { font-size: 0.83rem; color: #94a3b8; font-style: italic; margin-bottom: 16px; line-height: 1.5; }
.stat-row { display: flex; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.chip { font-size: 0.75rem; padding: 4px 12px; border-radius: 20px; font-weight: 500; }
.chip-blue { background: #1e3a5f; color: #60a5fa; }
.chip-purple { background: #2e1065; color: #a78bfa; }
.chip-green { background: #052e16; color: #4ade80; }
.chip-amber { background: #2d1a00; color: #fbbf24; }
.acc-bar-wrap { margin-top: 14px; }
.acc-label { font-size: 0.72rem; color: #6b7280; margin-bottom: 6px; display: flex; justify-content: space-between; }
.acc-label span { font-weight: 600; }
.resolve .acc-label span { color: #60a5fa; }
.architect .acc-label span { color: #a78bfa; }
.acc-track { background: #1e2433; border-radius: 4px; height: 10px; overflow: hidden; }
.acc-fill { height: 100%; border-radius: 4px; }
.resolve .acc-fill { background: linear-gradient(90deg, #1d4ed8, #3b82f6); width: 69.4%; }
.architect .acc-fill { background: linear-gradient(90deg, #5b21b6, #8b5cf6); width: 75%; }
.divider { width: 1px; background: #2d3748; flex-shrink: 0; margin: 20px 0; }
.bottom-note { margin-top: 32px; display: flex; gap: 16px; }
.bn { flex: 1; background: #161b27; border-radius: 8px; padding: 16px 18px; border-left: 3px solid #4a5568; }
.bn-label { font-size: 0.65rem; letter-spacing: 0.1em; text-transform: uppercase; color: #6b7280; margin-bottom: 6px; }
.bn-text { font-size: 0.82rem; color: #94a3b8; line-height: 1.5; }
</style>
</head>
<body>
<div class="slide">
<h2>prereq_op_selector — Gate Decomposition</h2>
<div class="top">
<div class="origin">
<div class="origin-label">Original gate</div>
<div class="origin-name">prereq_op_selector</div>
<div class="origin-sub">Which prerequisite operations does this taskitem need?</div>
</div>
</div>
<div class="discovery">
<div class="disc-icon">🔍</div>
<div class="disc-text">
Analysis of 1297 accepted rows revealed <code>needs_validate_intake</code> is <strong>always True</strong> (1297/1297).
It is a constant, not a decision surface — no model can learn from a label with zero variance.
The effective gate is <strong>two independent binary classifiers</strong>.
</div>
</div>
<div class="branches">
<div class="branch">
<div class="gate-card resolve">
<div class="gate-label">Gate A — prereq_resolve</div>
<div class="gate-name">needs_resolve_dependencies</div>
<div class="gate-q">"Does this task require resolving cross-task dependencies before execution?"</div>
<div class="stat-row">
<span class="chip chip-blue">997 / 1297 positive</span>
<span class="chip chip-blue">76.9% base rate</span>
</div>
<div class="acc-bar-wrap">
<div class="acc-label">Baseline accuracy @ 4000 steps <span>69.4%</span></div>
<div class="acc-track"><div class="acc-fill"></div></div>
</div>
<div style="margin-top:12px; font-size:0.78rem; color:#4a5568;">
Note: high base rate — a majority classifier would score ~77%.<br>Baseline is learning something, but corpus is weak.
</div>
</div>
</div>
<div class="divider"></div>
<div class="branch">
<div class="gate-card architect">
<div class="gate-label">Gate B — prereq_architect</div>
<div class="gate-name">needs_architect_review</div>
<div class="gate-q">"Does this task require architect review before proceeding?"</div>
<div class="stat-row">
<span class="chip chip-purple">257 / 1297 positive</span>
<span class="chip chip-purple">19.8% base rate</span>
</div>
<div class="acc-bar-wrap">
<div class="acc-label">Baseline accuracy @ 4000 steps <span>75.0%</span></div>
<div class="acc-track"><div class="acc-fill"></div></div>
</div>
<div style="margin-top:12px; font-size:0.78rem; color:#4a5568;">
Note: a majority classifier here scores ~80%.<br>Baseline is learning from the minority class.
</div>
</div>
</div>
</div>
<div class="bottom-note">
<div class="bn">
<div class="bn-label">Why two separate models</div>
<div class="bn-text">Each gate fires independently. A task can need both, either, or neither. Coupling them into one multiclass model creates false label structure.</div>
</div>
<div class="bn">
<div class="bn-label">What the corpus lacks</div>
<div class="bn-text">Only ~17 unique text templates across 1297 rows. The taskitem schema was not designed to carry discriminative RSA fields. Better signal requires schema changes upstream.</div>
</div>
<div class="bn">
<div class="bn-label">Next step</div>
<div class="bn-text">Pipeline decision audit (SPRINT-004): walk the full whetstone_DSL pipeline and identify every decision point before collecting more training data.</div>
</div>
</div>
</div>
</body>
</html>