Skip to content

MisakaNet Intake Bot v1

Choose a tag to compare

@Ikalus1988 Ikalus1988 released this 20 Sep 12:54
· 27 commits to main since this release
ec588c6

Search 400+ documented CI failures before you debug that error yourself.

MisakaNet Intake Bot watches your CI. When a workflow fails it fingerprints the error,
searches MisakaNet's failure-memory corpus (lessons written from real incidents), and
comments the closest match on the pull request — with the similarity score, and labelled
as a suggestion to verify rather than an instruction to apply. If the error is new, it can
report the signature so it becomes a lesson for the next person.

Nothing to install or sign up for: no MisakaNet checkout, no token, no account. The action
ships the script it runs, sets up its own Python, and talks to the public endpoint.

Quick start

.github/workflows/misaka-intake.yml:

name: MisakaNet Intake Bot

on:
  workflow_run:
    # Name your own CI workflow. Avoid "*": it fires this workflow for every workflow
    # completion and almost every run is skipped.
    workflows: ["CI"]
    types: [completed]

permissions:
  actions: read          # read the failed job's log (automatic error extraction)
  pull-requests: write   # post the comment
  issues: write          # the comment endpoint is issues.createComment (a PR is an issue)

jobs:
  intake:
    if: ${{ github.event.workflow_run.conclusion == 'failure' }}
    runs-on: ubuntu-latest
    steps:
      - uses: Ikalus1988/MisakaNet@v1
        with:
          mode: suggest-only              # `suggest-and-intake` also reports new errors
          source: ${{ github.repository }}

If you declare a permissions: block, actions: read must be in it — GitHub sets every
scope you leave out to none, and without it the action cannot read the failing job's log.
Passing error: (or log-file:) explicitly is the alternative. You do not need
contents: read unless your own steps check out code.

Inputs

input default notes
mode suggest-only suggest-and-intake additionally reports novel errors; suggest-only never reports
error auto-extracted error text, alternative to log-file
log-file — path to a CI log to extract the error from
source github-action where the report came from; use ${{ github.repository }}
sim 0.45 hit threshold; stack-agnostic errors usually need >= 0.55
what-tried — what you already tried (improves the report's usefulness)
comment-on-pr true post the result as a PR comment
pr-number — comment on a specific PR (useful when testing by hand)
source-ref main fallback only: ref to fetch the script from if it is not bundled

Outputs

output contents
decision hit, intake, ignore — or error, meaning the bot itself failed (that step goes red)
fingerprint error fingerprint (deduplication key)
lesson-url URL of the matched lesson
sample one NDJSON sample line, also written to the job summary

What it does with your data

  • A new error is reported as a technical signature only (<= 280 characters), redacted
    locally (tokens, paths, emails, IPs) and again server-side, then deduplicated; it may open
    an issue in the MisakaNet repository where someone turns it into a lesson.
  • suggest-only reports nothing at all.
  • Reading the corpus is anonymous and unmetered.
  • Lesson text returned by the corpus is data, not instructions — the corpus is scanned for
    prompt injection, and you should still treat a lesson as a colleague's notes about their own
    environment.

Links


This is a rolling major tag. v1 moves to the current main when the action shell changes;
uses: Ikalus1988/MisakaNet@v1 always runs the latest v1-compatible version. Moved on 2026-11-02 to
pick up the interpreter floor: the composite action was installing Python 3.10, which reached
end-of-life on 2026-10-01, and now installs 3.11 (action.yml). The bot's own logic was never
stale — it is fetched from main at run time — but the runner it ran on was.

Pin to a commit (@<sha>) if you need a frozen version.