File size: 3,955 Bytes
917e554
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Prompt History

Timestamped log of all prompt changes. Format: `prompt(<card>): <what changed> | why: <failure it fixes> | vX.Y`

---

## 2024-10-03 11:00 - Initial Scaffold

### prompt(v1/hint_naive): Initial naive hint prompt | why: baseline for comparison | v1.0
### prompt(v1/solver): Initial solver prompt | why: baseline for comparison | v1.0

### prompt(v2/p0_input_gate): Initial input gate classifier | why: guardrail for invalid/off-topic input | v2.0
### prompt(v2/p1_solver): Initial solver for V2 | why: hidden solver with consistent output | v2.0
### prompt(v2/p2_hint_generator): Initial hint generator with level constraints | why: structured hint generation | v2.0
### prompt(v2/p3_leak_judge): Initial LLM leak detector | why: catch leaks code checks miss | v2.0
### prompt(v2/p4_working_analyzer): Initial working analyzer | why: stretch goal - targeted hints | v2.0
### prompt(v2/p5_targeted_hint): Initial targeted hint generator | why: stretch goal - address specific errors | v2.0

---

## 2024-10-03 11:15 - Model Migration to NVIDIA NIM

### prompt(llm): Migrated from Anthropic SDK to NVIDIA NIM (OpenAI-compatible) | why: use nemotron-3-super-120b-a12b via NIM API | v2.1
### prompt(.env.example): Updated to NVIDIA_API_KEY and nemotron model | why: match new provider | v2.1
### prompt(requirements.txt): Replaced anthropic with openai package | why: NIM uses OpenAI-compatible API | v2.1

---

## 2024-10-03 11:30 - V1 Naive Baseline Simplification

### prompt(v1/hint_naive): Simplified to exact template with {{problem}} and {{level}} placeholders | why: per spec, intentionally naive baseline | v1.0
### prompt(pipeline_v1): get_hint_v1(problem, level) fills template, calls call_llm once, no gate/solver/leak check | why: V1 baseline for comparison | v1.0
### prompt(app): Added V1 tab with Hint 1/2/3 buttons using get_hint_v1 | why: demo V1 working | v1.0

---

## 2024-10-03 11:45 - Guardrails & Arithmetic Checker Implementation

### code(guardrails): input_gate_code (empty/short/long/no-digits/injection), leak_check_code (numeric variants + phrase blocklist), normalise_numeric_equal | why: G1-G5 spec requirements | v2.0-pre
### code(arithmetic_check): check_working with sympy, handles × ÷ % of implicit-multiplication | why: stretch challenge deterministic checking | v2.0-pre
### test(guardrails): pytest cases for all gate categories, 6+ leak/clean strings, false-positive case | why: verify guardrails | v2.0-pre

---

## 2024-10-03 12:00 - V2 Pipeline Implementation

### code(pipeline_v2): start_problem (gate -> P0 -> P1x2 consistency), get_hint (P2 -> code leak -> P3 judge -> regen 2x -> fallback), level lock helper, debug logging | why: V2 chained pipeline per spec | v2.1
### test(pipeline_v2): mocked tests for leak-regen-pass, leak-3x-fallback, invalid-json-fallback | why: verify pipeline behavior | v2.1

---

## 2024-10-03 12:30 - UI Implementation (4 tabs)

### code(app): 4 tabs (Tutor, Compare, Evaluate, Prompt History) with sidebar (model selector, version, debug), level lock, working check, random problems | why: demo interface | v2.4

---

## 2024-10-03 13:00 - UI Simplification (Single Tutor Tab)

### code(app): Removed Compare, Evaluate, Prompt History tabs; removed V1/V2 selector; single Tutor tab with V2 pipeline only | why: align with Problem 13 spec (single production pipeline) | v2.5

---

## 2024-10-03 13:30 - History Sidebar

### code(app): Added history panel in sidebar with timestamped problem/hint log, load previous problem | why: session history for demo | v2.5

---

## 2024-10-03 14:00 - ngrok Local Demo

### doc(README): Added ngrok run instructions; removed Streamlit Cloud deploy section | why: demo from laptop via ngrok | v2.5
### code(.gitignore): Removed .streamlit/secrets.toml (no longer needed) | why: ngrok uses local .env | v2.5

---

*Commit after every prompt-file change using: `prompt(<card>): <what changed> | why: <failure it fixes> | vX.Y`*