Repeated activations shared one item ID
A follow-up sent to an existing subagent could overwrite or collapse the earlier work-log row.
The branch now keeps every activation of the same Codex or Claude subagent as a separate work-log entry, restores the latest activation correctly, and removes a mobile action that pointed at a thread the client cannot open.
A follow-up sent to an existing subagent could overwrite or collapse the earlier work-log row.
The server could restore the wrong work item and could adopt subagents from another provider instance.
Subagent rows showed “Open” even though provider-native subagents do not have an app thread to navigate to.
Codex and Claude now allocate a fresh turn-item identity for activation 2 and later, including their progress and result records.
Hydration chooses the latest activation’s work item, filters by driver and provider instance, and limits concurrent reads to eight.
Only real thread and fork rows get an “Open” action. Subagent activity remains visible as status and output.
/root/proof_agent, appears in both work-log rows.ROOT_PROOF_ONE result.ROOT_PROOF_TWO result.| Activation | Run | Turn item identity | Status |
|---|---|---|---|
| 1 | ordinal:1 | native-item:call_… | Completed |
| 2 | ordinal:2 | native-item:call_…:activation:2 | Completed |
The screenshot proves the rendered result. The isolated SQLite projection proves both rows have distinct persisted identities and map to separate runs.
/root/proof_agent · Codex · gpt-5.6-sol remains visible with the second result. The invalid “Open agent thread” button is absent.
ROOT_PROOF_TWO, proving the follow-up finished.| Scope | Result | What It Covers |
|---|---|---|
| Server focused suites | 141 passed | Codex, Claude, turn start, projection replay |
| Server orchestration matrix | 295 passed · 1 known baseline failure | Broad orchestration regression pass |
| Web | 81 passed | Timeline grouping and repeated activation rendering |
| Mobile | 46 passed | Work-log labels, presentation, and navigation eligibility |
| Shared packages | 7 passed | Supporting contract and runtime behavior |
| Typecheck, lint, format | Clean | All touched scopes |
One pre-existing replay test still fails in the larger server matrix. A separate app-owned delegated-thread reuse gap also remains. Neither issue is caused by these changes, and neither invalidates the provider-native Codex and Claude activation path proven above.