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>
147 lines
7.2 KiB
HTML
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>
|