A thread is the conversation. A package is one briefing on it. You do not start a new product for a reply; you add a package to the thread you are already in.
What sits on one thread
Who is in it — usually two people, or you alone if you sent it to yourself. The topic. Every package either of you put on it, in order. The delivery events the sender is allowed to see.
Participants are unique. A hand-off does not create a second "you."
list_threads pages through conversations you are in. thread_status is the same list with a state on each row, optionally narrowed to one contact. Both end with a line that says where the next page starts. The filter is in the query, not "the fifty most recent, then hope."
Who is waiting
thread_status reports one of three words:
- awaiting_you — the latest package is for you to deal with.
- awaiting_them — you sent the latest one, and a reply is still the point.
- idle — nothing is owed.
"Seen," for that status, is their assistant pulling the briefing, a reply, or someone pressing acknowledged. A fetch of the email link is not consulted. A portal view is not consulted. Those fire for scanners and for opening a page.
An FYI expects no response. Once it has been seen, the thread is idle, not an open obligation.
A hand-off is a thread with one participant
You are always the last sender, so the ordinary rule would report awaiting them forever. What it is waiting on is one of your assistants picking the package up. Until that pull, it is awaiting you. After, idle — whatever response shape you gave it. A hand-off is an FYI to yourself.
No email goes out. There is nobody else to notify.
How a reply finds the thread
draft_package with the thread, or as a reply to a package on it. A typed reply in the portal or on the package page lands on the same row. An emailed reply matches the token and writes a package there.
Starting a new thread with someone who has an account still needs an accepted pair. A thread they already participate in stays open after they activate, so a conversation that began as cold email does not slam shut the day they sign in. A block still ends it.
What's new folds threads awaiting you into the same call as unread mail. If you only want the status on one person, thread_status with their address is the narrower tool.