Omniscio documentation
Browse all documentation
  1. Getting Started20
  2. Sessions & Agents134
  3. Inbox & Notifications68
  4. Projects & Tasks98
  5. Automation & Scheduling80
  6. Knowledge & Memory28
  7. AI Features71
  8. Integrations110
  9. Plugins & Marketplace36
  10. Cloud & Teams53
  11. Settings & Customization73
  12. Account & Billing28
  13. Troubleshooting79
  14. CLI & API Reference27
  15. Legal & Policies5
  16. Uncategorised17

PR problem router

Every 15 minutes Omniscio reads the open pull requests, records each one's state (ready, behind, conflicting, red checks, held by the auto-lander, stale, unknown, draft), and tells one live agent about each problem, once per problem: the session that owns the branch, the author's agent lane through Remote Sync, the Remote Sync session, or your inbox. With no live agent it starts at most ten fixer sessions a day. GET /pr-problems answers "what needs landing" at any time.

What it does

  • Every 15 minutes it reads the open pull requests on the tracked repository and gives each one a class.
  • A problem class is one of: held by the auto-lander, red checks, conflicting, a PR Merge Queue review lane, or stale (no update for 14 days).
  • A pull request whose base branch is not master is tracked as not-master and never told to anyone.
  • Everything else is ready, behind, draft, or unknown. Ready means GitHub measured the PR as clean. Unknown means GitHub has not finished measuring it yet. Unknown is never treated as a problem. Each run asks GitHub about up to 100 unmeasured PRs, so the unknown count shrinks run by run.
  • Each problem is told once per pull request per class. It is told again only when the class changes, or when the problem clears and comes back.

Who gets told

  1. A live session on this computer that owns the PR's branch, or that opened the PR.
  2. The author's own agent lane. The message goes to the Remote Sync session, which passes it on over the lane. A problem already told to Remote Sync is passed on once more this way when the author's lane learns their GitHub login later.
  3. The Remote Sync session (Remote Sync Foreman #5), for another developer's pull request.
  4. When no agent is live, it starts one fixer session for that problem. There are at most ten a day, and never two for the same PR and class. Past the cap, the problem goes to one inbox card.

Each message names the exact problem (the failing check, the conflicting files, the hold reason) and the one road that clears it. An agent gets at most one message an hour, carrying at most 25 problems.

Asking what needs landing

  • GET /pr-problems returns the counts by class, author and recipient, the top 20 problems, the last run, and how many fixers started today.
  • GET /pr-problems?class=conflicting also lists every PR in that class.
  • node scripts/ops/pr-problem-router.mjs --report --class conflicting gives the same answer without the app.

Switches

  • Pause the AMC-pr-problem-router scheduled job to stop it completely.
  • AMC_PR_PROBLEM_ROUTER=0 (or the older AMC_PR_PROBLEMS_DELIVER=0) keeps tracking but tells nobody.
  • AMC_PR_PROBLEM_SPAWN=0 stops the fixer sessions. Problems with no live agent then go to the inbox card.

Limits

  • It never pushes, merges, closes, labels or comments on a pull request. A fixer it starts may push only to that PR's own branch.
  • GitHub can take minutes to answer a page of pull requests while it works out mergeability. Each run reads as many pages as fit in eight minutes, and the next run carries on from where it stopped.
  • Three failed runs in a row raise one inbox card. Until then the tracker keeps showing its last good reading.

Last verified 2026-10-15