Files
deepseek-harness/docs/event-producer-consumer.md
Tianyi Cui c5b1a7941f fix(scope): harden lifecycle ownership foundation
Make Cordis construction and teardown ownership reentrancy-safe, then carry caller and provider ownership through reservation, setup, publication, quiescence, and sentinel retirement.

Stabilize registry carriers and factory/workflow boundaries, add adversarial lifecycle regressions, and align the rewritten RFC plus generated contracts with the enforced behavior.
2026-07-12 08:57:05 +08:00

10 KiB

Event Producer And Consumer Matrix

This matrix shows which packages dispatch each harness-owned event and which packages listen to it. It is intentionally a table rather than one large graph: events are many-to-many, and dense relation data is easier to review in rows. Dynamic dispatch overrides cover sites that deliberately bypass ctx.emit, such as subagent lifecycle containment.

Event Mode Declared in Dispatchers Listeners
agent/created emit packages/core/agent/src/types.ts:307 agent (events.dispatch) stdio-agent
agent/disposed emit packages/core/agent/src/types.ts:322 agent (events.dispatch) stdio-agent
agent/error emit packages/core/agent/src/types.ts:596 agent-loop (emit) -
agent/pre-step serial packages/core/agent/src/types.ts:428 agent-loop (serial) compact-basic, user-approval
agent/prompt-submit waterfall packages/core/agent/src/types.ts:446 agent-loop (waterfall) acp, hooks-claude, hooks-codex, repeat-tool-guard
agent/queued emit packages/core/agent/src/types.ts:350 agent-loop (emit) -
agent/request waterfall packages/core/agent/src/types.ts:475 agent-loop (waterfall) -
agent/session-prefix waterfall packages/core/agent/src/types.ts:527 agent-loop (waterfall) tool-skill
agent/session-start emit packages/core/agent/src/types.ts:371 agent-loop (emit) hooks-claude, hooks-codex, invariants
agent/status emit packages/core/agent/src/types.ts:336 agent-loop (emit) acp, invariants, repeat-tool-guard, stdio-agent
agent/step-result waterfall packages/core/agent/src/types.ts:542 agent-loop (waterfall) -
agent/turn-continuation waterfall packages/core/agent/src/types.ts:560 agent-loop (waterfall) hooks-claude, hooks-codex
agent/turn-stop serial packages/core/agent/src/types.ts:579 agent-loop (strictSerial (serial)) subagent-inprocess
approval/request waterfall packages/ui/user-approval/src/index.ts:72 user-approval (waterfall) acp
fs/edit-intent waterfall packages/fs/fs/src/index.ts:123 tool-fs (waterfall) fs-policy
fs/observed emit packages/fs/fs/src/index.ts:138 tool-fs (emit) fs-policy
fs/write-intent waterfall packages/fs/fs/src/index.ts:109 tool-fs (waterfall) fs-policy
llm/stream waterfall packages/llm/llm/src/index.ts:39 llm (waterfall) invariants, llm-replay
session/created emit packages/core/session/src/index.ts:52 session (events.dispatch) invariants, session-persistence
session/disposed emit packages/core/session/src/index.ts:64 session (events.dispatch) -
session/event emit packages/core/session/src/index.ts:78 session (emit) acp, invariants, session-persistence, stdio-agent
session/flush parallel packages/core/session/src/index.ts:96 session (parallel) session-persistence
skill/provider-added emit packages/skill/skill/src/index.ts:132 skill (emit) -
skill/provider-removed emit packages/skill/skill/src/index.ts:138 skill (emit) -
subagent/end emit packages/subagent/subagent/src/index.ts:115 subagent (events.dispatch) hooks-claude
subagent/provider-added emit packages/subagent/subagent/src/index.ts:76 subagent (emit) tool-subagent
subagent/provider-removed emit packages/subagent/subagent/src/index.ts:87 subagent (events.dispatch) tool-subagent
subagent/start emit packages/subagent/subagent/src/index.ts:102 subagent (events.dispatch) hooks-claude
system-prompt/assemble waterfall packages/core/system-prompt/src/index.ts:46 system-prompt (waterfall) -
system-prompt/change emit packages/core/system-prompt/src/index.ts:56 system-prompt (emit) -
tools/change emit packages/core/tools/src/index.ts:176 tools (emit) -
tools/execute waterfall packages/core/tools/src/index.ts:131 tools (waterfall) timeout-policy
tools/post-execute waterfall packages/core/tools/src/index.ts:151 tools (waterfall) hooks-claude, hooks-codex, repeat-tool-guard
tools/pre-execute waterfall packages/core/tools/src/index.ts:104 tools (waterfall) hooks-claude, hooks-codex
tools/result parallel packages/core/tools/src/index.ts:166 tools (events.dispatch) subagent-inprocess
workflow/agent-end emit packages/workflow/workflow/src/index.ts:98 workflow (events.dispatch) -
workflow/agent-start emit packages/workflow/workflow/src/index.ts:87 workflow (events.dispatch) -
workflow/end emit packages/workflow/workflow/src/index.ts:108 workflow (events.dispatch) -
workflow/log emit packages/workflow/workflow/src/index.ts:77 workflow (events.dispatch) -
workflow/phase emit packages/workflow/workflow/src/index.ts:70 workflow (events.dispatch) -
workflow/start emit packages/workflow/workflow/src/index.ts:62 workflow (events.dispatch) -

Non-harness or undeclared event strings seen in package source

Event string Dispatchers Listeners
internal/dispatch - invariants

Maintenance mode: hybrid generated: Cordis event declarations and most producer/listener edges are AST-scanned; dynamic dispatch sites are classified in scripts/gen-doc-graphs.ts.