micro--go-micro
1c8d8f0ff6
`micro loop init` writes an autonomous improvement loop into any repository —
the same planner/builder/triage loop that maintains go-micro, generalized:
- planner (loop-planner.yml): keeps a ranked queue in .github/loop/PRIORITIES.md
- builder (loop-builder.yml): builds the top open item as a single-concern PR,
auto-merged on green CI
- triage (loop-triage.yml): turns CI failures into scoped fix issues
plus .github/loop/NORTH_STAR.md (direction) and PRIORITIES.md (queue).
The agent adapter is mention-based, not hardcoded to Codex: `--agent @codex`
(or any @mention agent that responds on an issue and can run gh), `--token-secret`,
`--branch`, `--ci-workflow`, and cron flags are the whole config-vs-core boundary.
Templates use << >> delimiters so GitHub Actions' own ${{ }} expressions pass
through untouched. `micro loop verify` checks the wiring and flags the two things
the CLI can't: the token secret and branch protection (the green-CI gate).
Built inside go-micro with the config/core split already drawn, so the workflows
can later be extracted to a standalone reusable-workflows repo without a rewrite.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL
47 行
2.5 KiB
Cheetah
47 行
2.5 KiB
Cheetah
name: "Loop: Triage"
|
|
|
|
# Generated by `micro loop init`. The feedback path of the evaluator: when the
|
|
# CI workflow ("<< .CIWorkflow >>") fails on a non-PR run, this dispatches the
|
|
# agent to root-cause the failure and file scoped fix issues back into the
|
|
# planner's queue — so failures become fixes with no human in the middle, short
|
|
# of a decision that is genuinely a human's. Gated on << .TokenSecret >>.
|
|
|
|
on:
|
|
workflow_run:
|
|
workflows: ["<< .CIWorkflow >>"]
|
|
types: [completed]
|
|
|
|
permissions:
|
|
issues: write
|
|
|
|
concurrency:
|
|
group: loop-triage
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
triage:
|
|
# Only real failures on branch pushes/schedules — not PR-run failures, which
|
|
# the PR author already sees.
|
|
if: ${{ github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.event != 'pull_request' }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: File a triage issue and dispatch the agent
|
|
env:
|
|
GH_TOKEN: ${{ secrets.<< .TokenSecret >> || github.token }}
|
|
HAS_TOKEN: ${{ secrets.<< .TokenSecret >> != '' }}
|
|
REPO: ${{ github.repository }}
|
|
RUN_ID: ${{ github.event.workflow_run.id }}
|
|
RUN_URL: ${{ github.event.workflow_run.html_url }}
|
|
run: |
|
|
if [ "$HAS_TOKEN" != "true" ]; then
|
|
echo "<< .TokenSecret >> is not set — skipping (see loop-planner.yml)."
|
|
exit 0
|
|
fi
|
|
ISSUE_URL=$(gh issue create --repo "$REPO" \
|
|
--title "Loop: triage failed run $RUN_ID" \
|
|
--body "The '<< .CIWorkflow >>' workflow failed: $RUN_URL")
|
|
ISSUE_NUM="${ISSUE_URL##*/}"
|
|
echo "Opened issue #$ISSUE_NUM — dispatching triage."
|
|
gh issue comment "$ISSUE_NUM" --repo "$REPO" --body \
|
|
"<< .AgentMention >> Triage the failed CI run at $RUN_URL. Read the logs and root-cause each distinct failure. DEDUPE against open issues — if a failure matches an existing issue, comment 'recurred' there instead of filing a duplicate. For each genuine, self-contained defect, file a scoped issue (\`gh issue create --title \"<scoped fix>\" --body \"<root cause, where, acceptance>\"\`) so the planner/builder can pick it up and the next CI run verifies it. IGNORE transient flakes (network blips, provider outages, timeouts with no code cause). Anything needing a breaking or architectural change: label it needs-human and describe it — do NOT auto-file it as a routine fix. Close this issue (\`gh issue close $ISSUE_NUM\`) when triage is done."
|