Skip to content

feat(background): separate execution results from report delivery - #3392

Merged
nonoqing merged 1 commit into
mainfrom
codex/background-result-delivery
Oct 15, 2026
Merged

nonoqing merged 1 commit into
mainfrom
codex/background-result-delivery

Conversation

@nonoqing

@nonoqing nonoqing commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Scheduled runs can finish successfully without a report, but a model acknowledgement such as “remaining quiet” previously still appeared as a reply and could create unread work or notifications. Independent failure events also lacked an OS notification subscription. This change separates execution, report delivery and history-read state, preserving the complete original execution.

  • Persist a run/generation-bound delivery decision; accept structured report proposals and adjudicate legacy acknowledgements against task instructions with a tool-free compatibility request. Uncertain or failed decisions retain visible delivery.
  • Fold quiet runs into expandable, searchable execution records across Web UI/mobile; preserve earlier unread results and report actual failures. Apply the durable decision to Weixin proactive output.
  • Recover history-read failures by resynchronizing from the owning host without rerunning the task. Keep stale requests fenced and reject controller-local fallback for detached history.

Type and Areas

Feature / bug fix. Rust Runtime and Core, session persistence, shared event contracts, Web UI, mobile web, Remote Connect, documentation.

Motivation / Impact

A conditional monitor that has no reportable change stays quiet even when its model writes a silence acknowledgement. Failures remain visible. A quiet 11:00 run cannot replace the unread identity of a 09:00 report. Older jobs/events remain readable; unknown policy strings survive round trips, unsupported descriptors stay visible, and peer policy writes negotiate background_result_delivery_v1.

The current producer is the native scheduler. Detached job completion and other producers are not silently opted into suppression.

Verification

AI-assisted implementation; focused policy, persistence, UI and compatibility coverage. Prior implementation validation passed:

  • Core background contracts: 4 tests; cron scheduling/tool contracts: 37; Runtime decisions: 4; DTO serialization: 2.
  • Session metadata/storage: 35; Remote Connect contracts: 75; event projections: 13; remote-surface registry: 20.
  • Web delivery/unread/notification/API/peer tests: 182; search/timeline/receipt: 20 (one overlapping receipt test); source snapshot safety: 7.
  • Real Chrome mobile receipt rendering at 390/768/1280 px, raw detail expansion, visible failures/questions, generation fences; 2 host-stream browser tests with simulated host/relay.
  • Web/mobile type checks, i18n audit, Appearance contracts, core boundaries, changed-Rust formatting and diff/object-size checks passed.

Rebased onto upstream/main 96557706b. Rebase verification passed 271 tests across 16 Web/notification/next-input-suggestion integration files, Web type checking, 3 real Chrome mobile/host-stream browser tests, i18n audit and core boundaries. All 4 Core background finalization/persistence/upgrade/bot tests also passed after the rebase. No product-code conflicts remained; the one guide conflict retains both verification commands.

Known full-check limitations: check:web encounters 25 pre-existing typography violations in unchanged design-system files. Local theme:color-audit:all passes the color roots but discovers an unrelated pre-existing untracked MiniApp; that directory is excluded from this PR. No baselines were loosened. Real SSH/Docker, a real peer device, live IM delivery and semantic accuracy against a configured model provider were not exercised.

Reviewer Notes

See the design and compatibility boundaries or 中文说明. Additional adjudication usage is recorded separately; raw task output is retained. There are no dependency or packaging changes.

Checklist

  • This PR is focused and excludes secrets, temporary prompts, scratch files and unrelated artifacts.
  • Relevant verification and remaining coverage limits are recorded above.
  • User-facing strings, docs and locales are updated where applicable.

@nonoqing
nonoqing merged commit 3ed1129 into main Oct 15, 2026
11 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant