Files
deepseek-harness/docs/rfc/INDEX.md
T
Tianyi Cui c06e6bea0b Merge origin/master into feat/tui-package
Master unifies every live agent with its exact SessionId and moves declarative startup failures to agent-loop/config-start-failed. Keeping the branch’s AgentId label binding would let the TUI target the wrong lifecycle after reload and would miss asynchronous resume failures.

Resolve that contract migration by giving the selected terminal front door the same generated or resumed SessionId as agent-core, mounting the front door first, and entering fullscreen only after the matching root appears. Refresh the source-derived catalogs and keyless terminal goldens so Code Mode, workflow, Cordis-tool, and transient UI scenarios all exercise the merged identity model.
2026-07-19 11:37:14 +08:00

23 KiB

RFC index

Generated by pnpm run gen-rfc-index from the RFC tree — never edit by hand; verify-rfc-classification fails when this file is stale. The curated front door — layout, classification, when to write one, and the in-file format — is README.md.

Proposed

Feature

Title First proposed
Pre-tool input rewrite — a consistent design 2026-06-30
Recallable compaction — index checkpoints, a state checkpoint, and in-session history recall 2026-07-06
Claude Code and Codex subagent backends (out-of-process delegation to external coding agents) 2026-07-07
Interactive side sessions and merge-back 2026-07-08
SQLite FTS5 session search 2026-07-10
Stream workflow progress through tool calls 2026-07-13
Developer-owned SDK projects 2026-07-14

Simplification

Title First proposed
Prune dead public and result surface 2026-07-04

Architecture

Title First proposed
Runtime schemas for the event vocabulary (Zod vs the merge-extensible-map pattern) 2026-06-16
SDK project editing architecture 2026-07-15

Process

Title First proposed
API extractor reports 2026-06-11
Architectural conformance — dependency rules and the adapter kit 2026-06-11
Supply chain checks and vendor drift verification 2026-06-11
Discover package inventories instead of maintaining static lists 2026-06-20
Periodic human-review maintenance for dsh-code-review 2026-07-13

Testing

Title First proposed
Deterministic tests, the replay invariant fixture, and race stress 2026-06-11
Mutation testing as the coverage counterweight 2026-06-11

Implemented

Feature

Title First proposed
Agent Client Protocol (ACP) support — drive the coding agent from external editors 2026-06-14
Multiplex concurrent ACP sessions over one connection 2026-06-14
Code Mode — the model writes TypeScript against the tool registry 2026-06-15
Filesystem tool schemas — model-facing read/write/edit shapes 2026-06-17
Rich ACP bash rendering — the terminal card via the _meta convention 2026-06-18
Compaction as a capability seam (abstract contract + basic backend) 2026-06-18
Subagent capability seam 2026-06-21
ACP subagent backend (out-of-process delegation) 2026-06-22
Workspace context instruction files 2026-06-24
Ask-user question capability 2026-06-25
The todo_write tool — model task list as event-sourced session state 2026-06-29
dsh-hooks-claude + dsh-hooks-codex — the Claude Code / Codex hook bridges 2026-06-30
dsh-hook-protocol — the shared Claude Code / Codex hook wire-protocol core 2026-06-30
Interception seams — the typed-Decision surface a hook programs against 2026-06-30
SessionStore fork API 2026-06-30
Subagent lifecycle enrichment — lastAssistantMessage (observe-only) 2026-06-30
Dynamic workflows — a script-driven multi-agent orchestration seam 2026-07-05
Skill system — progressive disclosure instructions for agents 2026-07-05
The approval seam — one-shot permission decisions over a waterfall of answerers 2026-07-06
Explicit model-facing tool order 2026-07-06
The subprocess sandbox — confinement seam, native runners, escalation, and per-session modes 2026-07-06
MCP client plugin — connect to external MCP servers and bridge their tools 2026-07-07
The session prefix — request-only messages in front of the derived history 2026-07-07
Background subagent tasks 2026-07-08
Repeat-tool-call guard plugin 2026-07-08
The self-referential cordis toolset 2026-07-08
Bash-backed grep and glob discovery tools 2026-07-09
Expose agent session identity and JSONL location to tools and hooks 2026-07-10
Parallel tool-call execution by per-call safety 2026-07-10
Exact session query service 2026-07-10
Configure subagent persona, tool visibility, and depth 2026-07-12
Session query relationship tracing 2026-07-13
Optional time-context plugin 2026-07-14
Durable per-step time context 2026-07-16

Simplification

Title First proposed
Drop the mutable session summary 2026-06-19
Fold trace-only session facts into load-bearing events 2026-06-20
Drop the unconsumed llm/adapter-change event 2026-06-20
Drop unconsumed assembled LLM convenience surfaces 2026-06-20
Prune dead methods from the persistence seam 2026-06-20
Keep one public stop primitive 2026-06-20
Stop mirroring durable boundaries as agent events 2026-06-20
Unify the agent id and the session id 2026-06-20
Split the filesystem seam — provider text mutations plus the dsh-fs-policy plugin 2026-06-26
Stop mirroring the token stream as an agent event 2026-07-02
Drop the image content block until a path can honor it 2026-07-04
Drop GenerateOptions.prefill and ToolSchema.strict — request knobs with no working end-to-end path 2026-07-04
Drop the unconsumed web observation surface — the providers-change event and the status methods 2026-07-04
Fold the stdio UI helper into the stdio app 2026-07-04
Prune producer-less vocabulary variants (block cache hints, the agent message source, the continuation turn trigger) 2026-07-04
Prune write-only fields and a dead routing knob from the fs seam 2026-07-04
Remove the agent/steering mirror emit 2026-07-04
Share the app bins' boot glue instead of maintaining twin copies 2026-07-04
Tighten the hook-protocol contract — dialect, discarded fields, double defaults, and lib-owned hook/result semantics 2026-07-04
Trim unreachable ACP bridge surface — the branding knobs and the kind-sniffing fallback 2026-07-04
Drop unconsumed skill provider events 2026-07-12
Prune unused web seam fields 2026-07-12
Simplify session-log representation 2026-07-12

Architecture

Title First proposed
Provider-neutral content-block vocabulary owned by dsh-llm 2026-06-11
Custom typed tool-schema DSL instead of schemastery 2026-06-11
Source-owned session immutability and dev-mode invariants 2026-06-11
Event-sourced sessions with derived message history 2026-06-11
Microkernel — extension via Cordis event taxonomy, one concrete loop 2026-06-11
Runtime arg validation at the model boundary 2026-06-11
Structured error taxonomy 2026-06-11
Tool schemas are part of the system-prompt assembly 2026-06-11
Capability seams — interface / implementation / consumer split 2026-06-13
Two LLM adapters as a design-verification twin 2026-06-13
Session persistence as an abstract service over the existing SessionEvent 2026-06-14
Every session event is enclosed in a turn 2026-06-15
Filesystem capability seam — ctx.fs, local backend, and model-facing filesystem tools 2026-06-17
Agent lifecycle and ownership seams 2026-06-18
Session surface — an ordered projection over the event log 2026-06-18
Shared persistence write coordinator 2026-06-18
Branded IDs everywhere they belong 2026-06-20
Extract example apps into packages 2026-06-20
The background task runtime (ctx.tasks) and generic task control tools 2026-06-20
Reorganize packages into a modular hierarchy 2026-06-20
Mandatory User-Agent attribution for provider requests 2026-06-21
Web capability seam - stable tools over multiple providers 2026-06-24
Make dsh-fs-policy an event-gate plugin, not a method interface 2026-06-26
stdin + extra env on the bash seam 2026-06-30
Event-domain semantics — session is the fact log, agent is the live surface 2026-06-30
Resolve filesystem paths against the caller's session cwd 2026-07-02
Result-time applied-hunk diffs for file mutations 2026-07-02
Tagged render-intent union for tool-call presentation 2026-07-02
Add direct directory listing to the filesystem seam 2026-07-03
Prompt variables and tool-guidance ownership 2026-07-05
Every LLM request is reconstructable from the session log 2026-07-05
Subagent provider-lifecycle events — subagent/provider-added / subagent/provider-removed 2026-07-05
A shared timeout/deadline primitive, with hard-kill left to each capability 2026-07-06
Tool result retention library 2026-07-06
Tool-call timeout policy as a plugin 2026-07-07
The agent is a registration scope 2026-07-08
Tool output spill policy 2026-07-08
Single-file executable SDK runtime distribution (single-exe) 2026-07-10
Agent-scope runtime design and correctness 2026-07-12
Provider-routed LLM adapters and a generic pi-ai backend 2026-07-14
Advisory LLM catalogs and per-session ACP model selection 2026-07-15
Replay token meter service 2026-07-15

Process

Title First proposed
Doc-sync enforcement 2026-06-11
Mechanical quality gates over prose guidelines 2026-06-11
tsdown for JS bundling instead of dumble 2026-06-11
Vendor Cordis as source, not npm dependencies 2026-06-11
pnpm as the package manager instead of Yarn 4 2026-06-16
TSC-first build and one tsconfig 2026-06-17
Markdown cross-link validity linting 2026-06-18
Core-data-structures catalog and the ts type-equiv drift gate 2026-06-20
Generated cordis events + services catalog 2026-06-20
Classify RFCs by kind via path-encoded subdirectories 2026-06-20
Bilingual documentation via paired sibling files and a pairing gate 2026-07-02
Generated tool-schema catalog (boot-and-harvest) 2026-07-02
Documentation graph index for maintainers and SDK users 2026-07-03
JSDoc completeness gate for the cordis surface 2026-07-04
Documentation tiers, budgets, and the ceiling gate 2026-07-04
Generate the RFC index tables 2026-07-04
Generated persistence log event catalog 2026-07-04
One gated in-file format for RFCs 2026-07-05
Export-surface JSDoc gate 2026-07-06
Generated plugin config catalog 2026-07-06
Raise the Node LTS engine floor to 22.19 2026-07-06
Parallel GitHub CI gates 2026-07-06
Parallel pre-push gates 2026-07-06
A gated Known-Limitations section in every package README 2026-07-10
Package Model Experience contract 2026-07-12
TypeScript Program-backed semantic gates 2026-07-14
Run CI examples from built lib 2026-07-17

Testing

Title First proposed
Property-based testing for protocol-shaped code 2026-06-11
ACP snapshot tests — record-once / replay-deterministic 2026-06-19
Real-API e2e in CI against the external DeepSeek API 2026-06-19
Use session.jsonl as the only snapshot session-log artifact 2026-06-20
Persist the seed boundary so fork-child replay routes correctly 2026-06-22
Record fork and mixed spawn+fork snapshot scenarios 2026-06-22
Per-session snapshot replay for nested agents 2026-06-22
Hook snapshot matrix — end-to-end goldens for both bridges 2026-07-04
Single-source the acp-agent replay config 2026-07-04
Pin request-header content in one snapshot scenario 2026-07-06
Extract the ACP snapshot suite into a support package 2026-07-08
Snapshot semantic terminal state for the TUI 2026-07-18

Rejected

Simplification

Title First proposed
Persist assembled assistant messages, not stream chunks 2026-06-20
Drop ACP session/load until resume has a product shape 2026-06-20
Drop ACP terminal _meta rendering 2026-06-20
Drop bash full-output spill files 2026-06-20
Drop durable step boundary events 2026-06-20
Drop unused session lineage metadata 2026-06-20
Fold the persistence interface into dsh-session 2026-06-20
Collapse tool-owned UI presentation 2026-06-20
Retire mid-turn steering 2026-06-20
Return the ACP bridge to one live session per connection 2026-06-20
Truncate interrupted final turns on load 2026-06-20
Prune the unimplemented subagent seam vocabulary 2026-07-04
Collapse workflows to the exercised foreground core 2026-07-12
Prune unused skill registry surface 2026-07-12

Architecture

Title First proposed
Deep-readonly public surfaces 2026-06-11
Make the shared example base providerless 2026-06-20