Issue Fixer Pipeline — Configuration and Setup Reference #35

Closed
opened 2026-05-12 19:37:59 +00:00 by Mark · 1 comment
Owner

Cron Job Configuration

issue-fixer-autorun

  • job_id: 76e2a36dcea4
  • schedule: every 15m
  • prompt: Run the cron-get-issue orchestrator (python3 ~/.hermes/scripts/cron-get-issue.py) to process the next issue via the GSD engine.
  • model: deepseek-v4-flash
  • provider: opencode-go
  • workdir: /home/b
  • enabled_toolsets: terminal, file
  • deliver: origin
  • skills: (none)

feature-triage

  • job_id: f2cf3de5fff6
  • schedule: every 60m
  • script: feature-triage.py (no_agent mode, script output injected as LLM context)
  • prompt: The script feature-triage.py was run automatically. Read its output from the injected context and deliver the structured triage report.
  • enabled_toolsets: terminal, file
  • deliver: origin

Output Directory

All cron output is written to:
~/.hermes/cron/output/<job_id>/.md

Last N runs are preserved for debugging.

State Management

issue-fixer-state.json structure:

{
"visited": ["repo#N", ...],
"completed": ["repo#N", ...],
"blocked": [{"key": "repo#N", "reason": "...", "gate": "..."}, ...],
"pending": [],
"last_issue": "repo#N"
}

feature-triage-state.json structure:

{
"pending": [],
"auto_approved": ["repo#N", ...],
"deferred": [{"key": "repo#N", "title": "...", "assessment": {...}, "defer_until": "ISO-date"}, ...],
"blocked": [{"key": "repo#N", "title": "...", "assessment": {...}, "date": "ISO-date"}, ...],
"visited": ["repo#N", ...]
}

Forgejo Labels Used

Labels the pipeline interacts with:

  • feature-request: Applied by next-issue.sh to auto-skip feature-like issues
  • triage-approved: Applied by feature-triage or manually to bypass feature filter
  • blocked:needs-decision: Applied by feature-triage when a decision is needed
  • blocked (generic): Applied by pipeline for various block reasons
  • wontfix: Issues that should never be picked up

Managing the Pipeline

To stop the pipeline:

Use: "stop issue-fixer-autorun" or "stop feature-triage" in chat

To trigger a manual run (bypasses schedule):

Use cronjob(action='run', job_id='76e2a36dcea4')

To manually dispatch an issue:

Add the triage-approved label to any Forgejo issue. next-issue.sh will pick it up on the next cycle.

To check status:

Look at the state files above, or the latest cron output in ~/.hermes/cron/output/<job_id>/

Known Limitations

  1. The pre-dispatch gate still occasionally blocks pipelines when implementation scripts don't call it explicitly
  2. Feature request deferrals are fixed at 24h - no configurable defer window
  3. All 24 repos are scanned every cycle - no repo-level filtering
  4. State files are append-only (no garbage collection of old entries)
## Cron Job Configuration ### issue-fixer-autorun - job_id: 76e2a36dcea4 - schedule: every 15m - prompt: Run the cron-get-issue orchestrator (python3 ~/.hermes/scripts/cron-get-issue.py) to process the next issue via the GSD engine. - model: deepseek-v4-flash - provider: opencode-go - workdir: /home/b - enabled_toolsets: terminal, file - deliver: origin - skills: (none) ### feature-triage - job_id: f2cf3de5fff6 - schedule: every 60m - script: feature-triage.py (no_agent mode, script output injected as LLM context) - prompt: The script feature-triage.py was run automatically. Read its output from the injected context and deliver the structured triage report. - enabled_toolsets: terminal, file - deliver: origin ## Output Directory All cron output is written to: ~/.hermes/cron/output/<job_id>/<ISO-timestamp>.md Last N runs are preserved for debugging. ## State Management ### issue-fixer-state.json structure: { "visited": ["repo#N", ...], "completed": ["repo#N", ...], "blocked": [{"key": "repo#N", "reason": "...", "gate": "..."}, ...], "pending": [], "last_issue": "repo#N" } ### feature-triage-state.json structure: { "pending": [], "auto_approved": ["repo#N", ...], "deferred": [{"key": "repo#N", "title": "...", "assessment": {...}, "defer_until": "ISO-date"}, ...], "blocked": [{"key": "repo#N", "title": "...", "assessment": {...}, "date": "ISO-date"}, ...], "visited": ["repo#N", ...] } ## Forgejo Labels Used Labels the pipeline interacts with: - feature-request: Applied by next-issue.sh to auto-skip feature-like issues - triage-approved: Applied by feature-triage or manually to bypass feature filter - blocked:needs-decision: Applied by feature-triage when a decision is needed - blocked (generic): Applied by pipeline for various block reasons - wontfix: Issues that should never be picked up ## Managing the Pipeline ### To stop the pipeline: Use: "stop issue-fixer-autorun" or "stop feature-triage" in chat ### To trigger a manual run (bypasses schedule): Use cronjob(action='run', job_id='76e2a36dcea4') ### To manually dispatch an issue: Add the triage-approved label to any Forgejo issue. next-issue.sh will pick it up on the next cycle. ### To check status: Look at the state files above, or the latest cron output in ~/.hermes/cron/output/<job_id>/ ## Known Limitations 1. The pre-dispatch gate still occasionally blocks pipelines when implementation scripts don't call it explicitly 2. Feature request deferrals are fixed at 24h - no configurable defer window 3. All 24 repos are scanned every cycle - no repo-level filtering 4. State files are append-only (no garbage collection of old entries)
Author
Owner

Fixed in commit. Closing.

Fixed in commit. Closing.
Mark closed this issue 2026-05-14 01:28:25 +00:00
Sign in to join this conversation.
No description provided.