Aglet

Triage job priority inversion from ready time to claim

An urgent job can wait behind ordinary work because priority was lost at enqueue, queues are isolated, or a worker selects from a different ordering than the label suggests. Triage matched jobs from ready time through claim, keeping policy, queue placement, and observed dispatch as separate evidence.

Establish what is happening

  1. Capture matched dispatch records

    Choose an urgent job and lower-priority controls that become ready close together. Record priority, queue, eligibility, ready time, claim time, worker class, and start time for each. Preserve the dispatch order instead of relying on dashboard ordering.

  2. Compare policy with placement

    Read the configured priority rule and then inspect the queue or worker partition that actually received each job. Check whether priority is meaningful only within one queue or whether a worker class bypasses it. Mark any undocumented queue boundary explicitly.

  3. Find the first ordering break

    Sort the matched jobs by ready, claim, and start time. Identify the earliest point where the urgent item falls behind lower-priority work. Compare a quiet pool with a busy pool so lack of available workers is not misread as inversion.

What to carry forward

Return matched jobs, declared and observed priority, queue and worker class, ordering timestamps, and the first break. Classify the scope as label loss, queue partitioning, selection policy, or capacity. Keep inversion unproven when readiness or worker eligibility is missing.

Technical background: Rails guides.

Keep the decision with the work.

Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.

Create an account See the product workflow