stdout goes to a terminal nobody is sitting at. file writes something you have to remember to open. A write tool posts somewhere else, which is fine when that somewhere is where you already look and useless when it is not.
px0 did the work and then had nowhere to say so.
What gets delivered
Scheduled and watched runs, by default. Manual ones do not: you were there for a manual run and have just read its output, where a nightly one produced something at 06:00 that nothing has told you about. A rehearsal never delivers - a--dry-run output is a sample, not news.
A workflow can force either answer:
inbox: false opts a scheduled workflow out. px0 config set inbox.auto false turns automatic delivery off everywhere.
An entry is small on purpose - what produced it, a preview, and where the whole thing is. The inbox is a place to triage from, not a second copy of your output.
## PRs you reviewed this week has said what the entry is better than any label px0 could synthesize.
Reading and clearing
Where an entry announces a file, the file is read back from disk rather than from the copy taken at delivery - so you see what is there now, which is what matters when a later run has rewritten it. An entry whose file has since been deleted falls back to its preview and says so.

