video-workbench/investigations/2026-06-24-thread-notificat...
wantsong fc681035c8 完成第五轮测试和回调调研 2026-06-24 20:58:05 +08:00
..
README.md 完成第五轮测试和回调调研 2026-06-24 20:58:05 +08:00
test-1-child-result.md 完成第五轮测试和回调调研 2026-06-24 20:58:05 +08:00
test-1-parent-dispatch.md 完成第五轮测试和回调调研 2026-06-24 20:58:05 +08:00
test-1-report.md 完成第五轮测试和回调调研 2026-06-24 20:58:05 +08:00

README.md

Thread Notification Wakeup Investigation

Date: 2026-06-24

Status

  • Status: Test 1 passed; workflow promotion pending production-shaped validation.
  • Scope: Codex app thread notification / wakeup behavior for Video Workbench child-session orchestration.
  • Not a stable workflow rule until accepted conclusions are promoted into docs/workflows/, VIDEO_WORKBENCH.md, or AGENTS.md.

Problem

The current slide-task workflow uses parent-side waiting and polling:

main session starts child session
-> main session sleeps
-> main session polls child session until completion or timeout

This keeps the parent session active for long child runs. The desired behavior is:

main session starts child session
-> main session ends the current turn
-> child session completes work later
-> child session sends a callback to the parent thread
-> parent session wakes and consumes the child handoff

User-Authorized Parent Thread Discovery

There is no known user-facing shell command for the user to obtain the current Codex thread id.

For this investigation, the user explicitly authorizes the parent session to discover the parent thread id through the Codex app thread list at runtime, with this precondition:

The user guarantees only one active main Video Workbench session is running.

Discovery rule:

  1. Query Codex app threads.
  2. Select the thread with:
    • status: active;
    • cwd: C:\Users\wangq\Documents\Codex\video-workbench;
    • title / preview matching the active notification-wakeup investigation.
  3. Treat the result as a runtime observation, not as a stable external API.

Observed parent thread for Test 1:

019ef999-07d2-7333-99b4-d5d2da040406

Observation caveat:

  • The thread list may contain old idle or not-loaded sessions.
  • The selection is considered safe only when the user-controlled precondition holds: one active main Video Workbench session.

Test 1 Design

Goal:

Prove whether a child Codex thread can wake the parent thread by sending a message to the observed parent thread id after a delay.

Carrier:

Clean visible child Codex thread in the same local `video-workbench` project.

Steps:

  1. Parent records this investigation design.
  2. Parent creates one clean child thread.
  3. Child waits for 2 minutes.
  4. Child sends a callback message to the parent thread id using send_message_to_thread.
  5. Child writes a local result file under this investigation directory.
  6. Parent does not poll the child thread.
  7. If the parent thread wakes from the child callback, the parent records the result report.

Success criteria:

  • Parent receives a child callback without parent-side polling.
  • Parent can continue from the callback and record a result report.
  • Child result file exists and identifies the child thread, parent thread, callback time, and callback method.

Failure / inconclusive criteria:

  • Child completes but parent is not activated.
  • Child cannot access send_message_to_thread.
  • Child cannot send to the parent thread id.
  • Parent wakes only because of unrelated manual/user action.

Test 1 Runtime Values

parent_thread_id: 019ef999-07d2-7333-99b4-d5d2da040406
child_thread_id: 019ef9a5-5efc-7500-9a7d-4e7ec6920e84
parent_thread_observation_method: Codex app list_threads
workspace: C:\Users\wangq\Documents\Codex\video-workbench
delay: 2 minutes
parent_polling_allowed: no

Expected child result path:

investigations/2026-06-24-thread-notification-wakeup/test-1-child-result.md

Expected parent report path if awakened:

investigations/2026-06-24-thread-notification-wakeup/test-1-report.md

Test 1 Result

Result:

pass

Summary:

  • The child slept 120 seconds.
  • The child sent a callback with send_message_to_thread.
  • The parent thread received the child callback without parent-side polling.
  • Detailed report: test-1-report.md.

Promotion status:

Do not promote into the production slide-task workflow until a production-shaped slide-package test confirms the same callback path.