feat(recipe): add progress reporting banners and progress file lifecycle#3487
feat(recipe): add progress reporting banners and progress file lifecycle#3487
Conversation
Emit [recipe-runner] banners to stderr so parent sessions can observe subprocess activity. Add progress file cleanup on completion, and tests for banners, progress file creation/cleanup, and get_recipe_progress(). Changes: - rust_runner.py: Preparing/Launching banners, _cleanup_progress_file() - tests/recipes/test_rust_runner.py: new tests (banners, progress files, get_recipe_progress integration) - tests/recipes/test_rust_runner_execution.py: updated progress file test to capture writes before cleanup removes the file Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Repo Guardian - PassedAll changed files are durable project artifacts — no ephemeral content detected.
No action required.
|
PR #3487 Merge Validation Report1. Scope Check: PASSExactly 3 files changed (verified via
No changes to 2. QA-Team Outside-In Tests: PASSWrote and executed 2 gadugi YAML scenarios with a Python test harness ( Scenario 1 — Progress banners to stderr (
Scenario 2 — Progress file cleanup (
3. Quality Audit — 3 Cycles: PASSCycle 1 (SEEK/VALIDATE):
Cycle 2 (SEEK/VALIDATE — edge cases & security):
Cycle 3 (SEEK/VALIDATE — integration):
4. CI Status: PASS (with documented pre-existing exception)
Atlas failure explanation: The 5. VerdictREADY TO MERGE All merge criteria satisfied:
|
PR Triage ReportRisk: Low | Priority: Medium Assessment
Findings
Recommendation✅ Ready for review and merge. Low risk, well-tested, clear scope. Unblocks parent session observability.
|
Summary
[recipe-runner] Preparing recipe '<name>'...and[recipe-runner] Launching recipe '<name>' (pid N)...banners to stderr so parent sessions can observe subprocess activity_cleanup_progress_file()to remove progress files on recipe completion (best-effort, catches OSError)Redo of closed PR #3473.
Files changed (commit-only)
src/amplihack/recipes/rust_runner.py_cleanup_progress_file(), cleanup in finally blocktests/recipes/test_rust_runner.pytests/recipes/test_rust_runner_execution.pytest_progress_mode_writes_progress_fileto intercept writes before cleanupNo changes to
models.py,parser.py,pyproject.toml,uv.lock, or any YAML recipe files.What already existed (no changes needed)
_write_progress_file()and_stream_process_output_with_progress()inrust_runner_execution.pyget_recipe_progress()indev_intent_router.pyTest evidence
All pre-commit hooks pass (ruff, pyright, ruff-format, secrets detection, print statement check).
Test plan
uv run python -m pytest tests/recipes/test_rust_runner.py -x -q-- 12 passuv run python -m pytest tests/recipes/test_rust_runner_execution.py -x -q-- 23 passgit diff-tree --name-only -r HEADshows only 3 files🤖 Generated with Claude Code