Back to course
Module 2 · Day 12

Plot Pass Rate Over Time

গতকাল runner বানিয়েছ। আজ সেটাকে git-এর সাথে wire করো — প্রতিটা prompt version আলাদা file-এ commit করো, প্রতিটা change-এ suite re-run করো, pass rate-কে commit-এর বিপরীতে plot করো, আর regression ধরা পড়লে PR block করো।

~120 min read5 learning objectives
What you'll learn
  • Prompt-versioning file convention বুঝতে পারা — `prompts/v1.txt`, `v2.txt` git-এ।
  • Pass-rate trajectory chart পড়তে পারা — up/flat/down যা মানে।
  • Regression কী এবং কখন PR block করবে — noise band সহ।
  • GitHub Actions workflow file দেখে CI eval loop trace করতে পারা।
  • Goodhart's law eval suite-এ কীভাবে apply হয় — test "fix" বনাম prompt fix।
Before this
  • Day 11 শেষ — runner + assertions + judge model working pattern।
  • Git basics — commit, diff, branch, PR vocabulary।
  • Day 4-এর regression/baseline vocabulary fresh।
1

The Big Picture

Runner এক run-এর জন্য useful। Git-এর সাথে wire করলে সেটা চিরকালীন useful।

Day 11-এ যে runner বানিয়েছ, সেটা এক run-এর জন্য useful। আজ সেটাকে চিরকালীন useful বানাচ্ছ — প্রতিটা prompt version git-এ commit করে, প্রতিটা change-এ suite re-run করে, আর pass rate-কে commit-এর বিপরীতে plot করে। এই chart-ই তোমার PR description-এ ship হওয়া artifact — reviewer-এর চোখের সামনে evidence।

Prompt versioningfile-per-version in git

`prompts/v1.txt`, `prompts/v2.txt`, `prompts/v3.txt` — git-এ separate file per version। Diff-able, blame-able, revert-able। Solo dev-এর জন্য enough; production-এ Braintrust / PromptLayer-এর মতো registry optional।

Why it matters

Prompt is software — software-এর git history থাকে। Version 5-এ তুমি বুঝবে v3-এ কেন regression হয়েছিল — git blame করে দেখলে exact change visible। File-per-version pattern industry standard।

নিচে ৫টা version দেখো — Day 8-এর v1 থেকে Day 11 শেষে v5 পর্যন্ত। Version-chip বা commit dot-এ tap করে দেখো pass rate কীভাবে move করেছে।

Trajectorypass rate vs commit chart

Pass rate over time/commits — line chart। Up = improvement, flat = stuck, down = regression। এই chart তোমার PR description-এ ship করবে — reviewer চোখের সামনে evidence।

Why it matters

Engineers stock chart যেভাবে read করে, trajectory-ও সেভাবে। Iteration measurable হচ্ছে কিনা — trajectory দেখলে instant answer। Day 4-এর 'vibes vs evals' concept-এর time-extended form।

2

Core Concepts

Regression মানে কী, PR-এ block কীভাবে কাজ করে, আর ৫-block CI workflow ভেতরে কী করছে।

Block on regressionPR can't merge if pass rate dropped

Pass rate drop on PR = block merge until investigated। Threshold typically >2pp (noise band)। Within band = investigate but not auto-block; beyond = hard block। Mechanical discipline, judgment call না।

Why it matters

Blocking না থাকলে prompt silently drift করে। তিন মাস পর production-এ regression discover হলে backtrack করা impossible। Pre-merge eval suite blocks-এ ধরে ফেলে — Day 11-12-এর পুরো investment এখানেই pay off।

PR-এ eval bot automatically comment করে — pass rate, baseline-এর সাথে delta, আর merge করা যাবে কিনা। নিচে ৩টা scenario switch করে দেখো bot কী বলে, আর reviewer কী decision নেয়।

CI eval looppush → runner → results → PR comment

GitHub Actions workflow: push trigger → checkout + setup → API key inject → runner.py run → results.csv generate → PR-এ pass rate comment → baseline-এর সাথে compare → block যদি >2pp drop। ~30 lines YAML।

Why it matters

Mechanical মানে reliable। ভুলে যাওয়া মানে eval suite useless। CI-তে wire করা মানে eval suite সবসময় চলে, automatically, merge-এর আগে — engineer-এর memory-র উপর depend করে না।

এই পুরো loop একটা `.github/workflows/eval.yml` file-এ থাকে — ৫টা logical block। প্রতিটায় tap করে দেখো ভেতরে কী YAML আছে।

Prompt diffgit diff between versions

`git diff prompts/v1.txt prompts/v2.txt` — code review হিসেবে পড়ো। কোন instruction added/removed/changed। Per-test pass delta-এর সাথে correlate করলে — কোন change কোন test improve/break করল বোঝা যায়।

Why it matters

Prompt change-এর reason বোঝা মানে root cause analysis। "v3 broke v2-এর edge cases" — git diff সরাসরি দেখায় কেন। Production debugging-এ এই habit invaluable।

Two version select করো — git diff visualization দেখাবে কী add / remove / unchanged হয়েছে। Pass-rate delta-এর সাথে correlate করলে cause-and-effect পরিষ্কার হয়।

3

Try It Yourself

Regression ধরা পড়লে কী করবে, আর কোনটা git-এ থাকবে কোনটা না — discipline lock করো।

File disciplinewhat's in git, what isn't

`tests.csv` git-এ — locked golden set, PR review require করে। `prompts/v*.txt` git-এ — versions immortal। `results.csv` gitignored — generated artifact, প্রতিটা CI run-এ regenerate হয়। `.github/workflows/eval.yml` git-এ — CI config।

Why it matters

Discipline-এর core: যা locked সেটা git-এ; যা generated সেটা না। Wrong side-এ ভুল করলে — tests "fix" হয়ে যায় (Goodhart's law), অথবা results.csv merge conflicts produce করে।

নিচে ৪টা regression scenario দেখো — noise, real regression, outdated test, catastrophic break। প্রতিটার জন্য সঠিক action pick করো।

Tip

আজ তিনটা জিনিস করো — (১) নিজের prompt-এর প্রতিটা version আলাদা file-এ commit করো (`prompts/v1.txt`, `v2.txt`, ... — উপরের diff viewer-এর pattern অনুসরণ করে); (২) একটা `.github/workflows/eval.yml` লেখা শুরু করো (উপরের workflow walkthrough থেকে block-গুলো copy করে বসাতে পারো); (৩) নিজের pass-rate trajectory-র জন্য একটা noise-band threshold ঠিক করো (২pp সাধারণ default) — সেটাই তোমার regression-block rule।

4

Check Your Understanding

ভুল হলে সমস্যা নেই — প্রতিটার ব্যাখ্যা আছে।

Misconception check

একটা prompt.txt file রাখব এবং commit log-এ change track করব — file-per-version overkill

Misconception check

results.csv git-এ commit করব — eval history-র জন্য

Misconception check

Pass rate 1pp drop হলেই PR block করব — strict discipline

Misconception check

CI eval suite solo project-এর জন্য overkill

Misconception check

Prompt change-এর rationale থাকলে test case "fix" করা acceptable

Quick check

আজকের prompt versioning pattern কী?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

results.csv git-এ থাকবে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

Pass rate 84% → 83% — কী করবে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

একটা PR-এ pass rate 84% → 64% — প্রথমে কী diagnose করবে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

GitHub Actions workflow file কোন directory-তে থাকে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

Goodhart's law eval suite-এ কী মানে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

5

Prove It To Yourself

চারটা takeaway মনে রাখো। নিজের ভাষায় লেখো। Day 12 শেষ।

Note

চারটা জিনিস মনে রাখো — File-per-version in git: prompts/v1.txt, v2.txt — diff-able, revertable, blameable, registry optional। Chart-ই receipt: pass-rate trajectory PR description-এ ship করো, reviewer instant signal পাবে। Real regression-এ block করো, noise-এ না: threshold >2pp typical, band-এর মধ্যে হলে investigate করো, auto-block না। Test-কে goodhart কোরো না: prompt fix করো, test না (team review ছাড়া) — suite quality মানেই suite usefulness।

আজকের শব্দগুলো — prompt versioning, trajectory, regression, block merge, CI/CD, workflow file, PR, artifact, baseline diff, noise band, Goodhart's law, prompt registry, runbook — এখন থেকে English-ই থাকবে; team-এর PR review-এ, git commit message লেখার সময় এভাবেই দেখবে। পুরো তালিকা নিচের glossary-তে।

Glossary

শব্দার্থ — পরে ফিরে দেখার জন্য

একনজরে সব key term। কোনো শব্দ ভুলে গেলে এখানে এসে খুঁজে নিও।

Artifact
CI run-এর output file (যেমন results.csv) — GitHub Actions-এ upload করা যায়।
Baseline diff
Current pass rate আর main branch-এর pass rate-এর তুলনা।
Block merge
CI fail resolve না হওয়া পর্যন্ত PR merge হতে পারে না — regression থাকলে standard practice।
CI / CD
Continuous Integration / Continuous Deployment — push-এ auto-run pipeline।
Commit hash
Git-এর unique commit identifier (যেমন `a1b2c3d`)। Prompt version-এর label হিসেবে use।
gitignore
Git থেকে কোন file ignore করতে বলা। results.csv-এর জন্য essential।
Goodhart's law
"যখন একটা measure target হয়ে যায়, সেটা ভালো measure থাকে না।" Test "fix" করার বিরুদ্ধে philosophical সতর্কতা।
Noise band
ছোট pass-rate variation (সাধারণত ≤2pp) যেটা normal/random ধরা হয়।
pp (percentage points)
Pass rate-এর change-এর unit — 78% থেকে 73% মানে 5pp drop।
PR / Pull request
Code change-এর proposal — review-এর পর merge হয়।
Prompt registry
Versioned prompt store করা production tool (যেমন PromptLayer, Braintrust)। Solo dev-এ git-ই enough।
Regression
কোনো change-এ pass rate drop হওয়া — block-able event।
Runbook
বারবার আসা situation-এর জন্য লেখা procedure (regression detected হলে কী করব)।
secrets
API key, token — GitHub Settings → Secrets-এ store করো, code-এ কখনো না।
Trajectory
Pass rate over time/commit — line chart-এ visualize করা হয়।
Workflow
GitHub Actions-এর config file যেটা automated CI steps describe করে।
References

Sources consulted to author this lesson. Citation style is informal — follow the links if you want to dig deeper.

Exit check

দুই বাক্যে নিজের ভাষায় লেখো

নিজের ভাষায় দুই বাক্যে লেখো — তোমার prompt versioning কীভাবে file-per-version pattern মেনে চলবে, আর নিজের regression-block threshold কত pp-তে সেট করবে এবং কেন।

0 chars
Back to course