# Assigning priority to a thread, end to end

Triage assigns a priority to a thread as it is classified, and the engine reads that value when it chooses its next piece of work. Overriding it is therefore not a display preference: a raised thread is worked sooner and a lowered one is worked later. What priority never changes is permission — an approval, a suppression or a spent allowance still holds regardless of it.

- **Status:** Available
- **Audience:** both
- **Channels:** email
- **In the app:** #/inbox, #/needs-you
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/workflows/priority-assignment/

## The flow, stage by stage

1. Trigger — a message lands on a thread, or a person changes the thread's priority by hand.
2. User or external event — an arriving message classified by triage, or a deliberate correction on the Conversations screen.
3. Authentication and workspace resolution — a correction is a scoped write on a canonical row, so the thread must belong to the session's workspace.
4. Ingest — for an arriving message, the canonical message is written before it can influence anything.
5. Canonical record — priority lives on the thread itself, beside the person's other marks, rather than in a separate queue.
6. Classification and reasoning — triage weighs what the message asks for, who it is from and what the thread has already been through.
7. Knowledge, memory and rules — standing instructions about a contact or a channel are part of what triage reads, so 'this account always comes first' can be stated once.
8. Autonomy and approval — unaffected. Priority orders work; autonomy decides whether Connect may act on it.
9. Action through a provider — none. Priority is internal and nothing is sent because of it.
10. Result — the engine's choice of next work changes, and the Conversations list reflects the same value.
11. Relationship, timeline and memory — a manual correction is the person's own mark on the thread, not a fact about the customer.
12. Audit, usage and Needs You — the change is recorded, and a thread raised high enough to need a person can surface in the queue.

## Automatic and manual, and how they meet

| Source | When it applies | How durable |
|---|---|---|
| Triage on arrival | Every message that lands on the thread | Re-evaluated as the conversation develops |
| A person's correction | From the moment it is saved | Stays until somebody changes it again |
| A standing instruction | Whenever triage runs for that contact or channel | Durable, and applies to conversations that do not exist yet |

The third row is the one worth using. Correcting the same customer's priority every week teaches Connect nothing; recording it as a standing instruction changes how the next conversation is classified before anybody has to look at it. A correction is a decision about one thread; an instruction is a lesson.

## What the override changes

- **The order work is chosen in.** The engine reads priority when it picks the next thread, so this is a change to behaviour rather than to a view.
- **Where the thread sits for a person.** The same value orders the Conversations list and ranks what appears in Needs You.
- **Nothing about permission.** A held draft stays held; a suppressed recipient stays suppressed; a spent allowance still refuses. Priority moves a thread up the queue, not through a gate.
- **Nothing about the customer's record.** A priority is your workspace's mark on a conversation, not a fact recorded against the person.

> **Careful** Raising everything is the same as raising nothing. Priority is only useful while it discriminates, and a workspace where every thread is urgent has bought itself an arrival-order queue with extra steps.

## Using it well

1. During a backlog, raise the few threads that genuinely cannot wait.
   - Result: Those threads are worked first. This is the single most effective correction available while mail is queued.
2. Lower a thread that is noise rather than deleting it.
   - Result: The history stays, and the thread stops competing for attention. Deleting is a person's mark too, and it is a heavier one.
3. If a customer is always urgent, record that as a standing instruction against the contact.
   - Result: Triage applies it to future conversations, including ones that start on another channel.
4. Check the thread is actually held rather than merely low, if raising it changes nothing.
   - Result: A draft waiting for approval, a suppressed recipient or a spent allowance will not move for any priority.

## When a raised thread still does not move

**The reply is waiting for a person** — The autonomy rule for that mailbox holds it. Approve it, or change the rule for the scope that matters.
**The recipient is suppressed** — Compliance is checked before any outbound message, and priority is not consulted at that gate at all.
**The allowance is spent** — The work is held with its reason shown; the reset, not the priority, is what releases it.
**The thread needs nothing** — Triage may have decided correctly that no reply is due. Guidance on the thread is how you disagree with that.
**Ingest is behind** — If the message you are prioritising has not been taken in yet, the priority is on a thread that does not have it.

## Questions

### Does changing priority just re-sort my inbox?

No. The engine reads a thread's priority when it decides what to work on next, so the correction changes what actually happens. That is a deliberate design choice: a triage mark that only affected a screen would be a mark nobody could trust.

### Will a high priority push a reply past an approval?

No. Priority orders work; autonomy, suppression and the allowance decide whether the work may be done. A high-priority thread whose reply needs a person will reach that person sooner and then wait exactly as long as they take.

### Should I correct a priority or record an instruction?

Correct the thread when this one conversation is unusual. Record an instruction when the pattern will repeat — it applies to conversations that have not started yet, and it works across channels rather than on one mailbox.

## Related

- [Triage and priority](https://connectbyjbrh.com/docs/email/triage/)
- [Giving guidance on a thread](https://connectbyjbrh.com/docs/email/guidance/)
- [Ingesting a burst of mail, end to end](https://connectbyjbrh.com/docs/workflows/burst-ingest/)
- [Held drafts](https://connectbyjbrh.com/docs/email/held-drafts/)
- [Structured business memory instead of a longer prompt](https://connectbyjbrh.com/research/structured-business-memory/)

## What this page is based on

- CHANNELS.md §1 — triage and blocking
- GENERAL.md §3 and §5 — `threads.priority`, autonomy and Needs You
- `backend/app/triage_console.py`, `runner.py` — triage marks and work selection
- Connect capability registry (docs-source/facts.py) — `needs_you`
