Docs self-healing workflow improvements: Add ultra-light Haiku triage before Router#3065
Merged
Docs self-healing workflow improvements: Add ultra-light Haiku triage before Router#3065
Conversation
New step reads only PR title + body (no diff, no sidebars, no agent prompts) and decides if the PR might need docs. Obvious "no" cases (internal refactors, race condition fixes, etc.) are eliminated before the Router loads its heavier context. Pipeline: bash filter → Triage (Haiku ~$0.01) → Router (Haiku ~$0.05) → Drafter (Sonnet, only if needed) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
pwizla
added a commit
that referenced
this pull request
Apr 17, 2026
The Write tool is denied by permissionMode: default in claude-code-action. Triage and Router must use Bash heredoc to write their result files to /tmp/. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pwizla
added a commit
that referenced
this pull request
Apr 17, 2026
Haiku treated the previous prompt as a role description and waited for instructions. Rewritten to say "Execute these steps NOW" with no preamble. Also removed chatty framing. Fix #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pwizla
added a commit
that referenced
this pull request
Apr 17, 2026
Previously fell back to passing all PRs to Router, wasting tokens. Now stops cleanly and reports the failure in the summary. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pwizla
added a commit
that referenced
this pull request
Apr 17, 2026
…Sat only (#3066) * Fix: instruct agents to write files via Bash, not Write tool The Write tool is denied by permissionMode: default in claude-code-action. Triage and Router must use Bash heredoc to write their result files to /tmp/. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Make triage prompt imperative so Haiku acts immediately Haiku treated the previous prompt as a role description and waited for instructions. Rewritten to say "Execute these steps NOW" with no preamble. Also removed chatty framing. Fix #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Stop pipeline if Triage fails to produce results Previously fell back to passing all PRs to Router, wasting tokens. Now stops cleanly and reports the failure in the summary. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Skip PRs with flag: documentation label in self-healing PRs manually flagged for documentation by humans are skipped by the automation — they're already identified and will be handled via /autodoc. Shown in the summary as "Manually flagged for docs". Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Move label check before title filter in self-healing pipeline PRs with flag: documentation are now separated first, so they always appear in the summary even if their title would have been filtered. Order: label check → title filter → idempotency → Claude. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Run self-healing Tue-Sat only (no weekend merges on strapi/strapi) Saves 2 unnecessary runs per week. Tuesday morning covers Monday merges, Saturday morning covers Friday merges. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pwizla
added a commit
that referenced
this pull request
Apr 17, 2026
* Fix: instruct agents to write files via Bash, not Write tool The Write tool is denied by permissionMode: default in claude-code-action. Triage and Router must use Bash heredoc to write their result files to /tmp/. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Make triage prompt imperative so Haiku acts immediately Haiku treated the previous prompt as a role description and waited for instructions. Rewritten to say "Execute these steps NOW" with no preamble. Also removed chatty framing. Fix #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Stop pipeline if Triage fails to produce results Previously fell back to passing all PRs to Router, wasting tokens. Now stops cleanly and reports the failure in the summary. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Add ignore list for self-healing workflow New .github/self-healing-ignore.json lets Pierre temporarily exclude specific strapi/strapi PRs from automation. The workflow reads the file and skips matching PR numbers before title filtering. First entry: #25886 (strapi.ai namespace, decision pending). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Add clickable link to ignored PRs in summary Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Move ignore list to first position in pipeline Order: ignore list → label check → title filter → idempotency → ... Summary follows the same order. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pwizla
added a commit
that referenced
this pull request
Apr 17, 2026
* Fix: instruct agents to write files via Bash, not Write tool The Write tool is denied by permissionMode: default in claude-code-action. Triage and Router must use Bash heredoc to write their result files to /tmp/. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Make triage prompt imperative so Haiku acts immediately Haiku treated the previous prompt as a role description and waited for instructions. Rewritten to say "Execute these steps NOW" with no preamble. Also removed chatty framing. Fix #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Stop pipeline if Triage fails to produce results Previously fell back to passing all PRs to Router, wasting tokens. Now stops cleanly and reports the failure in the summary. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Add Slack notification to #documentation-ops after each run Posts a summary to Slack via incoming webhook with: - Run result (no PRs / triage skip / router skip / PRs created) - Links to created doc PRs - Errors if any - Link to the GitHub Actions run for details Non-blocking: if webhook fails, run still succeeds. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Use :noted: for created PRs, add failure notification - :noted: instead of 🎉 when doc PRs are created - 🚨 message when any step fails - Checks job.status for failure detection Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Use custom Slack emojis for notifications :pepe_alarm: for failures, :frog_shrug: for router skip,⚠️ for errors. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pwizla
added a commit
that referenced
this pull request
Apr 17, 2026
…tails (#3073) * Fix: instruct agents to write files via Bash, not Write tool The Write tool is denied by permissionMode: default in claude-code-action. Triage and Router must use Bash heredoc to write their result files to /tmp/. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Make triage prompt imperative so Haiku acts immediately Haiku treated the previous prompt as a role description and waited for instructions. Rewritten to say "Execute these steps NOW" with no preamble. Also removed chatty framing. Fix #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Stop pipeline if Triage fails to produce results Previously fell back to passing all PRs to Router, wasting tokens. Now stops cleanly and reports the failure in the summary. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Upgrade Slack notification to use Bot API with threaded details Replace incoming webhook with chat.postMessage API for thread support. Main message stays short (result + View run + see thread). Thread reply contains the full breakdown: pre-filtering, triage, router, drafter. Requires SLACK_BOT_TOKEN and SLACK_DOCUMENTATION_OPS_CHANNEL_ID secrets. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pwizla
added a commit
that referenced
this pull request
Apr 17, 2026
…ep Summary for thread (#3074) * Fix: instruct agents to write files via Bash, not Write tool The Write tool is denied by permissionMode: default in claude-code-action. Triage and Router must use Bash heredoc to write their result files to /tmp/. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Make triage prompt imperative so Haiku acts immediately Haiku treated the previous prompt as a role description and waited for instructions. Rewritten to say "Execute these steps NOW" with no preamble. Also removed chatty framing. Fix #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Stop pipeline if Triage fails to produce results Previously fell back to passing all PRs to Router, wasting tokens. Now stops cleanly and reports the failure in the summary. Fixes #3065 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix Slack newlines and use Step Summary for thread detail Use printf to convert \n to real newlines in main message. Thread reply now reads the GitHub Step Summary directly and converts Markdown to Slack mrkdwn format. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Pipeline (4 stages)
Each stage is a gate: if it eliminates everything, subsequent stages don't run.
Estimated cost comparison per nightly run
Test plan
workflow_dispatchwith internal-only PRs → Triage says "no", Router NOT invokedworkflow_dispatchwith a feature PR → Triage says "yes", Router runs/tmp/triage-results.jsonformat🤖 Generated with Claude Code