fix(distillery-sync): reframe prompt imperatively to prevent empty-output runs - #316
Conversation
…tput runs The agent (pinned to Haiku) read the third-person prompt as a specification handed to it for review and replied asking for clarification, making zero tool calls and no safe output — so every scheduled run failed with "No Safe Outputs Generated" and the store/status issue went stale. Reframe the opening as an imperative task with a headless directive (never ask for clarification on a non-interactive run; act on the documented deterministic defaults) and require a terminal safe output (always upsert the status issue; noop only if genuinely unable to act). Model stays pinned to claude-haiku-4-5; only the embedded prompt text changes in the recompiled lock. Closes #315 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0143kv2BRrRqGxmVwwHskQtS
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughSummary by CodeRabbit
WalkthroughAdds an explicit autonomous/non-interactive directive block to the Distillery-sync agent prompt in both the source instructions markdown and the compiled lockfile. The new text forbids clarification requests, enforces deterministic defaults, and mandates that every agent run terminates with a safe output (status-issue upsert or ChangesDistillery-sync Agent Prompt Hardening
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
The reframed prompt's terminal-action guard may call noop as a last resort, so it must be in the safe-outputs allowlist (test-safe-output-allowlists.py contract). Declare it; recompile. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0143kv2BRrRqGxmVwwHskQtS
Closes #315.
Root cause
distillery-sync failed every scheduled/push run with "No Safe Outputs Generated", and the store + status issue went stale. Not connectivity — the Distillery MCP connected and registered tools. The prompt opened third-person ("This agentic workflow keeps the Distillery knowledge store current… It runs when…"), and the pinned Haiku model read it as a spec handed to it for review:
It then ended the turn (
num_turns=1, zero tool calls), never callingdistillery_*ornoop→ empty output → failure. Evidence in #315.Fix (prompt-only; model stays pinned)
nooponly if genuinely unable to act. Never end a turn with no tool calls and no safe output.Model remains
claude-haiku-4-5; only the embedded prompt text changes in the recompiled lock (verified: no other lock touched, safe-outputs config and engine unchanged).Verify
gh aw compile distillery-sync→ 0 errors/0 warnings.claude-haiku-4-5still pinned.After merge: retag
v0.3.0to deploy to consumers (same flow as #309).🤖 Generated with Claude Code