146 lines
6.9 KiB
HTML
146 lines
6.9 KiB
HTML
|
|
<!DOCTYPE html>
|
||
|
|
<html lang="en">
|
||
|
|
<head>
|
||
|
|
<meta charset="UTF-8">
|
||
|
|
<title>Training Pipeline</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: 1000px; padding: 56px 72px; }
|
||
|
|
h2 { color: #e2e8f0; font-size: 1.5rem; font-weight: 400; letter-spacing: 0.05em; text-transform: uppercase; margin-bottom: 52px; text-align: center; }
|
||
|
|
|
||
|
|
.pipeline { display: flex; flex-direction: column; gap: 0; }
|
||
|
|
.row { display: flex; align-items: stretch; gap: 0; }
|
||
|
|
.step { flex: 1; background: #161b27; border-radius: 10px; padding: 22px 20px; border: 1.5px solid #2d3748; }
|
||
|
|
.step-num { font-size: 0.65rem; letter-spacing: 0.14em; text-transform: uppercase; color: #4a5568; margin-bottom: 6px; }
|
||
|
|
.step-title { font-size: 1rem; font-weight: 600; color: #e2e8f0; margin-bottom: 8px; }
|
||
|
|
.step-detail { font-size: 0.8rem; color: #6b7280; line-height: 1.6; }
|
||
|
|
.step-detail code { color: #94a3b8; background: #1e2433; padding: 1px 5px; border-radius: 3px; font-family: 'Courier New', monospace; font-size: 0.78rem; }
|
||
|
|
.step-stat { display: inline-block; margin-top: 8px; font-size: 0.78rem; padding: 3px 10px; border-radius: 20px; font-weight: 600; }
|
||
|
|
|
||
|
|
.step.s1 { border-color: #4a5568; }
|
||
|
|
.step.s2 { border-color: #7c3aed; }
|
||
|
|
.step.s3 { border-color: #3b82f6; }
|
||
|
|
.step.s4 { border-color: #06b6d4; }
|
||
|
|
.step.s5 { border-color: #f59e0b; }
|
||
|
|
.step.s6 { border-color: #22c55e; }
|
||
|
|
|
||
|
|
.s1 .step-title { color: #9ca3af; }
|
||
|
|
.s2 .step-title { color: #a78bfa; }
|
||
|
|
.s3 .step-title { color: #60a5fa; }
|
||
|
|
.s4 .step-title { color: #22d3ee; }
|
||
|
|
.s5 .step-title { color: #fbbf24; }
|
||
|
|
.s6 .step-title { color: #4ade80; }
|
||
|
|
|
||
|
|
.stat-purple { background: #2e1065; color: #a78bfa; }
|
||
|
|
.stat-blue { background: #1e3a5f; color: #60a5fa; }
|
||
|
|
.stat-cyan { background: #0c2a3a; color: #22d3ee; }
|
||
|
|
.stat-amber { background: #2d1a00; color: #fbbf24; }
|
||
|
|
.stat-green { background: #052e16; color: #4ade80; }
|
||
|
|
|
||
|
|
.vgap { height: 12px; display: flex; justify-content: center; align-items: center; }
|
||
|
|
.vgap svg { display: block; }
|
||
|
|
|
||
|
|
.hgap { width: 12px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
||
|
|
.hgap svg { display: block; }
|
||
|
|
|
||
|
|
.note { margin-top: 40px; background: #1a1f2e; border-left: 3px solid #f59e0b; border-radius: 0 8px 8px 0; padding: 16px 20px; }
|
||
|
|
.note-text { font-size: 0.83rem; color: #94a3b8; line-height: 1.6; }
|
||
|
|
.note-text strong { color: #fbbf24; }
|
||
|
|
</style>
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
<div class="slide">
|
||
|
|
<h2>From Run Artifacts to Trained Specialist</h2>
|
||
|
|
<div class="pipeline">
|
||
|
|
|
||
|
|
<div class="row">
|
||
|
|
<div class="step s1">
|
||
|
|
<div class="step-num">Step 1</div>
|
||
|
|
<div class="step-title">whetstone_DSL Run Corpus</div>
|
||
|
|
<div class="step-detail">
|
||
|
|
Real pipeline runs stored as JSON log artifacts.<br>
|
||
|
|
Each run records taskitem decisions, prerequisite ops, worker routing.
|
||
|
|
<span class="step-stat stat-purple">1000 runs extracted</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="hgap">
|
||
|
|
<svg width="12" height="40"><path d="M6 4 L6 36 M2 28 L6 36 L10 28" stroke="#4a5568" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||
|
|
</div>
|
||
|
|
<div class="step s2">
|
||
|
|
<div class="step-num">Step 2</div>
|
||
|
|
<div class="step-title">Gate Extraction</div>
|
||
|
|
<div class="step-detail">
|
||
|
|
<code>extract_gate_rows.py</code> parses each run.<br>
|
||
|
|
Isolates one gate's decision context and label per row.<br>
|
||
|
|
Rejects rows with schema drift or sibling-uniform labels.
|
||
|
|
<span class="step-stat stat-purple">1297 accepted / 24 schema-drift rejected</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="hgap">
|
||
|
|
<svg width="12" height="40"><path d="M6 4 L6 36 M2 28 L6 36 L10 28" stroke="#4a5568" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||
|
|
</div>
|
||
|
|
<div class="step s3">
|
||
|
|
<div class="step-num">Step 3</div>
|
||
|
|
<div class="step-title">Gate Decomposition</div>
|
||
|
|
<div class="step-detail">
|
||
|
|
Analysis revealed <code>needs_validate_intake</code> is always True — not a decision surface.<br>
|
||
|
|
Gate reduces to <strong style="color:#60a5fa">two independent binary classifiers</strong>.
|
||
|
|
<span class="step-stat stat-blue">2 gates from 1</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="vgap">
|
||
|
|
<svg width="860" height="12"><path d="M430 2 L430 10 M426 6 L430 10 L434 6" stroke="#4a5568" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="row">
|
||
|
|
<div class="step s4">
|
||
|
|
<div class="step-num">Step 4</div>
|
||
|
|
<div class="step-title">TSV Generation</div>
|
||
|
|
<div class="step-detail">
|
||
|
|
<code>gen_prereq_op_rsa_data.py</code> converts rows to Fabricate TSV format.<br>
|
||
|
|
Format: <code>label <TAB> 0 <TAB> text</code><br>
|
||
|
|
Text composed from: title · reasons · acceptance criteria · constraints.
|
||
|
|
<span class="step-stat stat-cyan">85% train / 15% eval split · seed=42</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="hgap">
|
||
|
|
<svg width="12" height="40"><path d="M6 4 L6 36 M2 28 L6 36 L10 28" stroke="#4a5568" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||
|
|
</div>
|
||
|
|
<div class="step s5">
|
||
|
|
<div class="step-num">Step 5</div>
|
||
|
|
<div class="step-title">Fabricate Training</div>
|
||
|
|
<div class="step-detail">
|
||
|
|
Tiny transformer framework. GPU training on dedicated desktop.<br>
|
||
|
|
~213K parameter model architecture.<br>
|
||
|
|
Binary classification head per gate.
|
||
|
|
<span class="step-stat stat-amber">4000 steps per specialist</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="hgap">
|
||
|
|
<svg width="12" height="40"><path d="M6 4 L6 36 M2 28 L6 36 L10 28" stroke="#4a5568" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||
|
|
</div>
|
||
|
|
<div class="step s6">
|
||
|
|
<div class="step-num">Step 6</div>
|
||
|
|
<div class="step-title">Specialist Checkpoint</div>
|
||
|
|
<div class="step-detail">
|
||
|
|
Serialized model: ~800KB on disk.<br>
|
||
|
|
Loaded at runtime by the RSA gate layer.<br>
|
||
|
|
Returns: label · confidence · abstain flag.
|
||
|
|
<span class="step-stat stat-green">~800KB per specialist</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
<div class="note">
|
||
|
|
<div class="note-text">
|
||
|
|
<strong>Corpus caveat:</strong> The 1000-run dataset contains only ~17 unique text templates — the taskitem schema was designed to record outputs, not discriminative inputs. These baselines are intentionally weak. The pipeline is correct; the signal improves when the taskitem schema carries RSA-native fields.
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</body>
|
||
|
|
</html>
|