PR_EVENT_REVIEW_CHECKLIST.md
PR Event Review Checklist
P0
apps/server/src/provider/Layers/CursorAdapter.ts:1365validateinput.inputbefore emittingturn.startedor mutatingcontext.turnState; current order can leave a phantom running turn on invalid input.apps/server/src/provider/Layers/CursorAdapter.ts:783preserve the original tool-call classification acrosstool_call_update; do not hard-codeitemType: "command_execution"for every update/completion.apps/server/src/provider/Layers/CodexAdapter.ts:720correlateserverRequest/resolvedback to the original request type instead of emittingrequestType: "unknown"; otherwise approval resolution loses semantic meaning.apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts:320add first-class handling forsession.state.changed; orchestration currently derives session state indirectly and can miss provider-reported waiting/error/stopped transitions.
P1
apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts:320consumethread.metadata.updatedand dispatch thread title/metadata updates where applicable.apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts:320consumeturn.plan.updatedand project plan state or append a structured thread activity so plan updates are not dropped.apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts:320consumeturn.diff.updatedand route it into the existing diff/checkpoint flow if this event is now the provider-side source of truth.apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts:320consumeitem.updatedfor tool lifecycle summaries/progress so mid-tool updates are visible instead of ignored.apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts:320consumeruntime.warningand append non-fatal warning activities; these are currently emitted by providers but disappear downstream.
P2
apps/server/src/provider/Layers/CodexAdapter.ts:904mapwindowsSandbox/setupCompletedto at least onesession.state.changedtransition plus optional warning detail, as called for byEVENTS.md.apps/server/src/provider/Layers/CodexAdapter.ts:468consider emittingsession.configuredwhen session startup config is known, not onlysession.started/session.state.changed.apps/server/src/provider/Layers/CodexAdapter.ts:652widenitem.updatedcoverage beyond reasoning-summary and terminal-interaction boundaries if Codex methods provide meaningful in-progress item mutations.apps/server/src/provider/Layers/ClaudeCodeAdapter.ts:1222verify whether Claudetool_progressshould carry a real human summary instead of synthesizingtask:<id>intosummary; keep raw correlation data separately if needed.apps/server/src/provider/Layers/ClaudeCodeAdapter.ts:1062decide whether any Claude SDK events should map touser-input.requested/user-input.resolved; if unsupported, document that explicitly in tests or comments.
P3
apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts:1reduce reliance on legacy event shims once all adapters and tests are canonical; they currently hide incomplete V2 migration.apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts:320decide whetherauth.status,files.persisted,tool.summary,task.*,hook.*, realtime thread events, and token-usage updates should become activities, session fields, or remain intentionally ignored.apps/server/src/orchestration/projector.ts:360extend read-model fields only after ingestion semantics are finalized, so projector changes reflect intentional product surface rather than raw event exhaust.
Tests To Add
apps/server/src/provider/Layers/CursorAdapter.test.tsassert that invalid empty prompt input emits noturn.startedand leaves session idle.apps/server/src/provider/Layers/CursorAdapter.test.tsassert thattool_callandtool_call_updatekeep the same canonicalitemType.apps/server/src/provider/Layers/CodexAdapter.test.tsadd a case provingserverRequest/resolvedpreserves the original request type.apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.test.tsadd coverage forsession.state.changed,turn.plan.updated,turn.diff.updated,thread.metadata.updated, andruntime.warning.