@@ -45,6 +45,25 @@ Source Rounds: 0
4545EOF
4646}
4747
48+ create_real_humanize_bitlesson () {
49+ local dir=" $1 "
50+ mkdir -p " $dir /.humanize"
51+ cat > " $dir /.humanize/bitlesson.md" << 'EOF '
52+ # BitLesson Knowledge Base
53+ ## Entries
54+
55+ ## Lesson: Avoid tracker drift
56+ Lesson ID: BL-20260315-tracker-drift
57+ Scope: goal-tracker.md
58+ Problem Description: Tracker diverges from actual task status.
59+ Root Cause: Status rows are not updated after verification.
60+ Solution: Update tracker rows immediately after each verification step.
61+ Constraints: Keep tracker edits minimal.
62+ Validation Evidence: Verified in test fixture.
63+ Source Rounds: 0
64+ EOF
65+ }
66+
4867# Helper: create a mock codex binary that outputs valid bitlesson-selector format
4968create_mock_codex () {
5069 local bin_dir=" $1 "
@@ -121,7 +140,7 @@ echo "--- Test 1: gpt-* model routes to codex ---"
121140echo " "
122141
123142setup_test_dir
124- create_real_bitlesson " $TEST_DIR "
143+ create_real_humanize_bitlesson " $TEST_DIR "
125144BIN_DIR=" $TEST_DIR /bin"
126145create_mock_codex " $BIN_DIR "
127146mkdir -p " $TEST_DIR /.humanize"
@@ -150,7 +169,7 @@ echo "--- Test 1b: gpt-* codex path passes stdin prompt via trailing '-' ---"
150169echo " "
151170
152171setup_test_dir
153- create_mock_bitlesson " $TEST_DIR "
172+ create_real_humanize_bitlesson " $TEST_DIR "
154173BIN_DIR=" $TEST_DIR /bin"
155174STDIN_FILE=" $TEST_DIR /codex-stdin.txt"
156175create_recording_mock_codex " $BIN_DIR " " $STDIN_FILE "
@@ -185,7 +204,7 @@ echo "--- Test 2: haiku model routes to claude ---"
185204echo " "
186205
187206setup_test_dir
188- create_real_bitlesson " $TEST_DIR "
207+ create_real_humanize_bitlesson " $TEST_DIR "
189208BIN_DIR=" $TEST_DIR /bin"
190209create_mock_claude " $BIN_DIR "
191210mkdir -p " $TEST_DIR /.humanize"
@@ -214,7 +233,7 @@ echo "--- Test 3: sonnet model routes to claude ---"
214233echo " "
215234
216235setup_test_dir
217- create_real_bitlesson " $TEST_DIR "
236+ create_real_humanize_bitlesson " $TEST_DIR "
218237BIN_DIR=" $TEST_DIR /bin"
219238create_mock_claude " $BIN_DIR "
220239mkdir -p " $TEST_DIR /.humanize"
@@ -243,7 +262,7 @@ echo "--- Test 4: OPUS (uppercase) model routes to claude ---"
243262echo " "
244263
245264setup_test_dir
246- create_real_bitlesson " $TEST_DIR "
265+ create_real_humanize_bitlesson " $TEST_DIR "
247266BIN_DIR=" $TEST_DIR /bin"
248267create_mock_claude " $BIN_DIR "
249268mkdir -p " $TEST_DIR /.humanize"
@@ -272,7 +291,7 @@ echo "--- Test 5: Unknown model exits non-zero with error ---"
272291echo " "
273292
274293setup_test_dir
275- create_real_bitlesson " $TEST_DIR "
294+ create_real_humanize_bitlesson " $TEST_DIR "
276295mkdir -p " $TEST_DIR /.humanize"
277296printf ' {"bitlesson_model": "unknown-xyz-model"}' > " $TEST_DIR /.humanize/config.json"
278297
@@ -298,7 +317,7 @@ echo "--- Test 6: gpt-* model with missing codex binary exits non-zero ---"
298317echo " "
299318
300319setup_test_dir
301- create_real_bitlesson " $TEST_DIR "
320+ create_real_humanize_bitlesson " $TEST_DIR "
302321mkdir -p " $TEST_DIR /.humanize"
303322printf ' {"bitlesson_model": "gpt-4o"}' > " $TEST_DIR /.humanize/config.json"
304323# Use a bin dir that contains a stub claude but NOT codex.
@@ -334,7 +353,7 @@ echo "--- Test 7: haiku model falls back to codex when claude binary is missing
334353echo " "
335354
336355setup_test_dir
337- create_real_bitlesson " $TEST_DIR "
356+ create_real_humanize_bitlesson " $TEST_DIR "
338357mkdir -p " $TEST_DIR /.humanize"
339358printf ' {"bitlesson_model": "haiku"}' > " $TEST_DIR /.humanize/config.json"
340359# Use a bin dir that contains a stub codex but NOT claude.
@@ -409,7 +428,7 @@ stdout_out=$(CLAUDE_PROJECT_DIR="$TEST_DIR" XDG_CONFIG_HOME="$TEST_DIR/no-user"
409428 bash " $BITLESSON_SELECT " \
410429 --task " Any task" \
411430 --paths " README.md" \
412- --bitlesson-file " $TEST_DIR /bitlesson.md" 2> /dev/null) || exit_code=$?
431+ --bitlesson-file " $TEST_DIR /.humanize/ bitlesson.md" 2> /dev/null) || exit_code=$?
413432
414433if [[ $exit_code -eq 0 ]] && echo " $stdout_out " | grep -q " LESSON_IDS: NONE" && echo " $stdout_out " | grep -q " no recorded lessons" ; then
415434 pass " Placeholder BitLesson file returns NONE without invoking a model"
0 commit comments