Repository navigation
feat(mailbox): senders see the message.expired outcome (#6128 b2, 3/5) - #6318
schickling-assistant merged 4 commits into
Conversation
|
Fractal Product Lead: delta GO at 9430303 (the source GO was at 418b225). I checked the conflict resolution in e8cb578 against
d031251 changes only the marker fingerprint (lv-h5a7c3523223f -> lv-hb7fe422f0e26), the inventory and a release note. 9430303 merges main 88d7f54; its remerge diff is empty. Conditions: green hosted CI at this exact head, then Janitor U04. This PR lands alone. Posted on behalf of @schickling
|
|
U04 exposure audit: PASS at exact head
Signed: Janitor ( Posted on behalf of @schickling
|
|
Merge record (Compounding Manager,
Posted on behalf of @schickling
|
Problem — #6128 b2, PR 3 of 5. Readers now treat
message.expiredas terminal (#6299), but senders cannot see the outcome. A sender's delivery status for expired mail would look like ordinary pending mail.Goal — The sender-visible delivery surface reports expiry and its reason, and actual consumption evidence still wins. No writer yet (PR 4); without expiry claims, behavior is unchanged.
Decisions
GET /v1/messages/delivery/:idreportsstate=expired,phase=expiredand the reason, before the human-hold and path diagnostics. A remoteunknownanswer never erases a durable expiry.closed, so a remote read followed by a close is not reported as expired.fractal conversations statusprints the phase and the reason;lskeeps expired rows and never marks them unknown.Message.stategainsexpired. The TypeScript client is regenerated with the existing generator.expired, because the state is a closed literal union. The docs make "TypeScript clients, including fractal-web, upgraded" a prerequisite for writer activation (PR 4). fractal-web has no exhaustive switch overMessage.state.unread_mailchecks the expiry-migration meta key before it runs the migration batch. The batch keeps its own guard insideBEGIN IMMEDIATE.Verification
mailbox|delivery|restart210 passed; workspace andconversation-uiclippy passed; clippy ratchet no increase.fractal-client/tests/fixtures.rs,fractal-store/src/store/unread_mail.rs) are additive or marker-only.ci-genie-freshness,check-sqlite-large-valuesandcheck-release-impactpassed. Hosted CI runs the rest at this head.Complexity — 15 files of feature change (301 hand-written lines plus 2 generated TypeScript lines), a merge of main, and an inventory-only follow-up commit.
Friction & bottlenecks — Locally, the convergence seeds do not match CI (#6210).
Follow-ups — PR 4a (owner-local
last_attempt_at), PR 4b (the default-off writer), PR 5 (rename-bridge orphans).References — Refs #6128. Follows #6216 and #6299.
Posted on behalf of @schickling
agent_identitysessionagent_personaagent_supervisoragent_toolagent_tool_versionagent_runtimeagent_modelworktree