# Slide Deck Brief — whetstone_RSA: Tiny Models for Bounded Decisions **Audience:** Whetstone_RSA, ex data science instructor. Technical depth expected. Wants to understand the actual transformer training approach, not just the concept. **Format:** Slide deck, dark theme preferred. One idea per slide, minimal text. Visuals are in the same directory as this file (HTML files — embed or screenshot them). **Length:** ~30–35 slides across two acts. --- ## Act I — The Problem and the Pattern (Slides 1–17) These slides are already written in `rsa_tiny_models_talk.md`. Keep them as-is. They establish the motivation: fuzzy input → bounded output → deterministic execution. Key points already covered: - Why regex is brittle - Why LLMs are oversized for bounded tasks - What RSA does (contract layer between user and tool) - The core pipeline: input → RSA gate → typed contract → deterministic software - Where this pattern shows up (command palettes, search bars, workflow routing) **Visual for Act I:** `visual_rsa_pipeline.html` --- ## Act II — The Actual Training Work (Slides 18–35) This is the new material. It covers the real implementation, dataset, and results. --- ### Slide 18: The Case Study **Title:** First Real Target — whetstone_DSL **Content:** - whetstone_DSL is a C++ IDE with an AST-first codegen pipeline - It uses an LLM to make many bounded decisions bundled together - Goal: replace those bundles with one tiny specialist per decision gate - First gate selected: `prereq_op_selector` - Decides which prerequisite operations a taskitem needs before it can execute **Speaker notes:** This is not a toy example. These gates run on real pipeline decisions. --- ### Slide 19: What a Gate Is **Title:** The Gate Contract **Content:** ``` input: task title · requirements · acceptance criteria · constraints output: needs_resolve_dependencies: bool needs_architect_review: bool needs_validate_intake: bool (always true — dropped) confidence: float abstain: bool ``` **Visual idea:** Simple box diagram: structured text in, typed struct out. **Speaker notes:** The output is not generated text. It is a typed struct with known fields. --- ### Slide 20: The Training Pipeline Overview **Title:** From Run Artifacts to Specialist **Visual:** `visual_training_pipeline.html` — use full slide. **Speaker notes:** Six-step pipeline. Real data from real pipeline runs. The training framework (Fabricate) lives on the GPU desktop — can demo it live there. --- ### Slide 21: Step 1 — The Corpus **Title:** Source Data: 1000 Pipeline Runs **Content:** - whetstone_DSL was run 1000 times on real and synthetic projects - Each run produces JSON log artifacts recording every taskitem decision - `extract_gate_rows.py` parses these into per-gate supervision rows **Visual idea:** Stack of JSON files on left → extraction tool → rows on right. --- ### Slide 22: Step 2 — Gate Extraction **Title:** Isolating One Decision at a Time **Content:** - Each row contains: decision_context · decision_label · decision_provenance - Only the information available at decision time is allowed in the context - Rows with schema-drift labels are rejected (24 of 1321 total) - Result: 1297 clean rows for prereq_op_selector **Key extraction rule:** Never leak downstream fields into the context. A gate must only see what was available when it would actually fire. --- ### Slide 23: The Discovery — Gate Decomposition **Title:** needs_validate_intake Is Always True **Content:** - Analysis of 1297 rows: needs_validate_intake = True in all 1297 of them - A label with zero variance cannot be learned — it is a constant, not a gate - Real gate decomposes into two independent binary classifiers: - needs_resolve_dependencies (76.9% positive rate) - needs_architect_review (19.8% positive rate) **Visual:** `visual_gate_decomposition.html` **Speaker notes:** This is a real finding, not a design choice made upfront. The data told us the gate shape was wrong. That's the process working correctly. --- ### Slide 24: Dataset Anatomy **Title:** What 1297 Rows Actually Looks Like **Visual:** `visual_dataset_anatomy.html` — use full slide. **Speaker notes:** The ~17 unique templates is the important number. High row count does not mean high diversity. This is the honest accounting. --- ### Slide 25: The TSV Format **Title:** Fabricate Training Format **Content:** ``` label hop text ``` - label: 0 (no) or 1 (yes) — one file per binary gate - hop: always 0 (unused routing field in Fabricate) - text: composed from title · reasons · acceptance criteria · constraints **Four files produced:** - prereq_resolve_train.tsv (1102 rows) - prereq_resolve_eval.tsv (195 rows) - prereq_architect_train.tsv (1102 rows) - prereq_architect_eval.tsv (195 rows) **Split:** 85% train / 15% eval, random seed 42. --- ### Slide 26: The Model — Tiny Transformer **Title:** ~213K Parameters. ~800KB on Disk. **Content:** - Framework: Fabricate (custom tiny transformer training tool) - Architecture: transformer encoder with binary classification head - ~213K parameters per specialist - Serialized checkpoint: ~800KB - Training: GPU desktop, 4000 steps per specialist - Inference: CPU-friendly, local, no network dependency **Visual idea:** Size comparison — model checkpoint vs. a JPEG photo (~800KB each). **Speaker notes:** This is the whole point. A model smaller than an average image file, making a bounded yes/no decision. Can demo inference live on the GPU desktop. --- ### Slide 27: Training Results **Title:** Baseline Results @ 4000 Steps **Content:** | Specialist | Accuracy | Steps | Positive rate | |---|---|---|---| | prereq_resolve (needs_resolve_dependencies) | 69.4% | 4000 | 76.9% | | prereq_architect (needs_architect_review) | 75.0% | 4000 | 19.8% | **Important context:** - A majority classifier on needs_resolve would score ~77% (model is below naive baseline) - A majority classifier on needs_architect would score ~80% (model is learning minority class) - These are weak baselines — expected given the 17-template corpus **Visual idea:** Bar chart with majority-classifier baseline marked as a reference line. --- ### Slide 28: Why the Baselines Are Weak (And Why That's Fine) **Title:** The Corpus Was Not Designed for This **Content:** - The taskitem schema was designed to record execution outputs, not discriminative inputs - 1297 rows, but only ~17 unique text patterns — the model has almost no signal variation - The labels are correct; the features are not rich enough yet **The fix is not more data from the same corpus.** The fix is adding RSA-native fields to the taskitem schema upstream. **Speaker notes:** This is an architectural finding. The pipeline methodology is validated. Signal quality is a schema problem, not a model problem. --- ### Slide 29: What Would Make the Signal Better **Title:** Better Input = Better Gate **Content:** Each taskitem needs to carry: - `architectural_surface` — what part of the system is touched - `cross_component_deps` — explicit dependency flags - `security_sensitive` — flag for security-relevant changes - `uncertainty_score` — explicit uncertainty signal With these fields, some gates that currently need ML may become deterministic rules. The RSA entropy threshold shifts as the contract gets richer. **Visual idea:** Taskitem schema before vs. after adding RSA fields. --- ### Slide 30: The Entropy → Model Size Hypothesis **Title:** Match the Model to the Decision Surface **Visual:** `visual_model_tiers.html` **Speaker notes:** The hypothesis is measurable and falsifiable. The experiment is: train each tier on the same gate, record the smallest one that clears the target. --- ### Slide 31: Gate Entropy Factors **Title:** What Makes a Gate Hard? **Content:** Factors that increase required model tier: - output_cardinality (more labels = harder) - class_imbalance - lexical_variation in inputs - context_width_required - label_boundary_fuzziness - world_knowledge_dependence - slot_interdependence **Target deliverable:** ``` gate_id | entropy_score | smallest_passing_tier | accuracy | latency_ms ``` **Speaker notes:** We don't have this table yet. It's the next experiment. --- ### Slide 32: What's Next — SPRINT-004 **Title:** Pipeline Decision Audit **Content:** Before training more gates, map every decision in the full whetstone_DSL pipeline: - Start at RegisterArchitectIntakeTools.h (pipeline entry point) - At every stage: what decision is being made? - What inputs are available? - What is the optimal method: deterministic / RSA / SLM / LLM / human? `generate_taskitems` alone bundles 10+ separable decisions. **Output:** `docs/case_studies/whetstone_dsl_pipeline_decision_map.md` **Speaker notes:** Train data collection strategy follows from the decision map. Don't collect data for the wrong gate shape. --- ### Slide 33: What Is Already Deterministic **Title:** Most of Whetstone Is Already Right **Content:** Once the AST and target language are fixed, most current code generation is deterministic: - Target generator dispatch — deterministic - AST concept dispatch — deterministic - Environment gating — deterministic - C++ raising profile validation — deterministic RSA is highest value in: - taskitem generation - execution contract shaping - routing decisions - pre-codegen profile decisions **Speaker notes:** This is a feature, not a gap. Don't replace deterministic software with models. Find the actual ambiguity boundary. --- ### Slide 34: The C++ Runtime **Title:** whetstone_RSA Runtime Scaffold **Content:** A C++ library wrapping the gate contracts: - `GateDefinition` · `GateEvidence` · `GateDiagnosis` · `GateSuitability` - `ProbeRegistry` + `DiagnosisEngine` - First concrete probe: `confidence_threshold_probe` - Builds with CMake, demo executable runs This is the deployment layer — gates are loaded here at runtime. **Visual idea:** Stack diagram: Fabricate specialist → RSA runtime → whetstone_DSL pipeline. --- ### Slide 35: The Summary **Title:** What This Is **Content:** 1. Real, running pipeline decisions in whetstone_DSL 2. Real extracted training data (1297 rows, two binary gates) 3. Real trained specialists (~800KB each, ~213K params) 4. Honest baselines (weak corpus, clear reason, clear fix) 5. A measurable hypothesis: entropy → tier selection 6. A C++ runtime that loads and runs them **Not a chatbot. Not a search engine.** A bounded decision contract layer, with real data and real results. --- ## Appendix Slides (optional, for Q&A) - Rejection taxonomy (schema drift, sibling-uniform labels) - Full gate inventory for whetstone_DSL - The decision_contract_ontology (input_structure, output_topology, policy_stability, etc.) - Backend selection taxonomy (transformer vs. gradient boosting vs. Bayes — kept separate from gate identity) - The abstain/escalate policy design --- ## Files in this directory | File | Description | |---|---| | `rsa_tiny_models_talk.md` | Act I source (31 slides, already complete) | | `slide_deck_brief.md` | This file | | `visual_rsa_pipeline.html` | The core RSA pattern — fuzzy in, contract out | | `visual_training_pipeline.html` | Six-step pipeline from run artifacts to trained specialist | | `visual_gate_decomposition.html` | prereq_op_selector decomposed into two binary gates | | `visual_dataset_anatomy.html` | Dataset stats, class balance, TSV format sample | | `visual_model_tiers.html` | Entropy → model tier sizing diagram |