dev@bfd:~/dev-diary$ git show 2026-02
commit 2026-02-12-unify-voice-and-overhaul-recipe-system
Author: MJ
Date: Feb 12, 2026

2026-02-12 - Unify Voice and Overhaul Recipe System

Timeline

  • (Context) Recipe system tested by running \recipe open_configs —do-it — revealed three systemic problems
  • (Action) Fixed —do-it flag propagation in shell.py dispatch and _handle_recipe
  • (Action) Created _step_summary() for human-readable step display in recipe previews
  • (Action) Rewrote all 8 existing recipe JSON files — titles, descriptions, notes
  • (Action) Added 5 new multi-tool recipes: downloads_cleanup, design_a_tool, clean_and_organize, project_kickstart, safe_then_learn
  • (Action) Reformulated AWAKENING_PROMPT and FALLBACK_INTRODUCTION in awakening.py — Gemma as companion, not executor
  • (Action) Deep OVERALL_VOICE.md alignment audit across shell.py, awakening.py, paths.py, recipes, launch_items.json, advanced_command_insight HTML
  • (Action) Verified advanced_command_insight.html matches _build_insight_html() output after all changes
  • (Action) Added Human-AI easter egg to tour finish step (user subsequently edited to own voice)
  • (Observation) Grep sweeps confirmed removal of banned terms: “curated”, “pipeline”, “WARNING”, “LLM”, “RAG”
  • (Open Thread) End-to-end tour validation with Ollama and Docker still pending

Context

  • User tested \recipe open_configs —do-it and found —do-it was silently discarded — dispatch at shell.py only passed recipe name, dropped extra args
  • Recipe output showed raw tool names and args dicts (e.g., quick_launch {‘name’: ‘tool_registry’}) — confusing for beginners
  • Recipe titles used jargon prefixes (“Pipeline:”, “Workflow:”, “Ritual:”) that contradicted OVERALL_VOICE.md
  • Only 8 recipes existed for 9 tools — many obvious multi-tool combinations were missing
  • Gemma’s self-introduction still framed her as a “tool executor” rather than the companion/guide role developed through the course

Actions

  • Fixed recipe dispatch to pass parts[2:] to _handle_recipe(), added _inject_do_it() helper to merge do_it into each step’s args dict before execution
  • Created _step_summary() function converting raw tool/args into readable descriptions like “Open: tool_registry” or “Clean CSV: dirty_data.csv”
  • Truncated verbose multi-line tool messages to first line only in _run_steps chain output
  • Rewrote all 8 existing recipes with warm, clear language — dropped “Pipeline:”, “Workflow:”, “Ritual:” prefixes
  • Added do_it: true to open_configs recipe steps so it actually opens files when confirmed
  • Added REPLACE: placeholders to csv_repair and safety_ritual recipes for user input prompts
  • Created 5 new recipes expanding coverage from 8 to 13 total: downloads_cleanup (organize by type), design_a_tool (blueprint then prompt), clean_and_organize (redact then sort), project_kickstart (blueprint, prompt, notes), safe_then_learn (sandbox then save)
  • Rewrote AWAKENING_PROMPT: changed “local AI agent” to “local AI companion”, removed tool executor framing, added example prompts for users to try
  • Rewrote FALLBACK_INTRODUCTION: same companion voice shift, added “You run the tools. I guide you to the right ones.”
  • Updated COURSE_END_CONTEXT: header to “Your Local AI Companion”, command table to match help menu voice, “let Ollama propose” to “let Gemma design”
  • Audited and fixed help menu, ghost puzzle text, confirm prompts, guided hints, chain log output in shell.py
  • Replaced “LLM” with “AI assistant” in context_pack recipe, HTML document, and Gemma chat prompt
  • Changed “WARNING:” to “Important:” in confirm prompts per OVERALL_VOICE.md policy
  • Removed —json flag from user-facing pilot command in paths.py
  • Updated advanced_command_insight.html: recipe table from 8 to 13, pathway titles, closing quote, all jargon replaced
  • Rewrote launch_items.json descriptions to match course voice
  • Added expanded farewell message to tour finish step celebrating the Pilot/Engine partnership

Observations

  • The —do-it flag was never wired through because the original dispatch only extracted parts[1] (recipe name) — a simple oversight with significant UX impact
  • Recipe previews showing raw Python dicts ({args_dict}) was a transparency feature that backfired — beginners saw implementation details instead of intent
  • Jargon accumulates invisibly: “curated”, “pipeline”, “LLM”, “RAG” each seemed fine individually but collectively created a wall of unfamiliar terms
  • The OVERALL_VOICE.md principle “If a beginner reads this sentence and feels stupid, rewrite it” proved to be the most useful single test for every string
  • Gemma’s identity shift from executor to companion required changes in awakening.py, shell.py chat prompt, COURSE_END_CONTEXT, and help menu — the framing touched more files than expected
  • The HTML document needed updating in both the static file and the _build_insight_html() generator function — dual-source risk

Open Threads

  • End-to-end tour validation with Ollama running and Docker active — needs live testing of all 11 steps
  • Fresh-eyes walkthrough of entire student path from Module 00 through Module 09 awakening
  • Verify all 13 recipes execute correctly with —do-it propagation in real tool runs
  • The 5 new recipes use REPLACE: placeholders — confirm placeholder resolution works for all input types

Boundary Reminder: Seeds. No maintenance. No roadmap.