Parent
#1
What to build
The switchover: moox/mail-inbox stops talking to Graph and starts talking to the contract. This is the expand step's payoff — after it, the pipeline runs on the driver.
Retype the jobs, service and commands onto the driver contract. Replace the success-boolean settle calls with the outcome enum. Add the additive driver column to the sync-state table with a backfill for existing rows, so no installation has to re-scan its mailbox.
The Graph code stays physically present in moox/mail-inbox for now — deleting it is a later ticket. Keeping both forms alive is what lets this land green.
Every job keeps its progress reporting and its failed() handling; do not move failure handling into listeners or a new job.
Acceptance criteria
Blocked by
Parent
#1
What to build
The switchover:
moox/mail-inboxstops talking to Graph and starts talking to the contract. This is the expand step's payoff — after it, the pipeline runs on the driver.Retype the jobs, service and commands onto the driver contract. Replace the success-boolean settle calls with the outcome enum. Add the additive
drivercolumn to the sync-state table with a backfill for existing rows, so no installation has to re-scan its mailbox.The Graph code stays physically present in
moox/mail-inboxfor now — deleting it is a later ticket. Keeping both forms alive is what lets this land green.Every job keeps its progress reporting and its
failed()handling; do not move failure handling into listeners or a new job.Acceptance criteria
moox/mail-inboxreferences a Graph typefailed()behaviour are preserved on every jobBlocked by