deepseek-harness/docs
imccyu fe4da9244f fix(tool-cordis): validate a dynamic tool's execute return shape after the realm round-trip
The sandbox execute wrapper JSON round-tripped the return and blindly cast it
to ToolExecuteReturn. A JSON-valid but wrong-shape return — a bare string,
{ content: 'ok' }, blocks without a type tag — sailed through: the registry
spreads result.content, so { content: 'ok' } became ['o','k'], passed the
session log's isJsonValue gate, and the DeepSeek serializer then flattened it
to '(no output)' — silent corruption of the next model request and every
replay, instead of a contained tool error.

The round-tripped value is now shape-checked against the two ToolExecuteReturn
forms (array of content blocks, or { content: blocks, meta? }); block checks
are structural only (plain object + string type tag) because the ContentBlock
union is merge-extensible. A wrong shape — and the formerly cryptic
forgot-return/bare-string cases — fails that one call with a teaching error
echoing a truncated preview of what was returned and the two valid forms.
New specs pin the object-form pass-through (meta included), six rejection
shapes, and the preview truncation; per-file 100% coverage holds.
2026-07-09 22:12:30 +08:00
..
cookbook docs: the governing principle — every LLM request is reconstructable from the session log 2026-07-06 03:49:35 +08:00
cordis-catalog refactor: colocate user interaction with ui packages 2026-07-09 17:59:02 +08:00
core-data-structures refactor: colocate user interaction with ui packages 2026-07-09 17:59:02 +08:00
i18n docs: equal-authority pairing with sidecar consistency records 2026-07-03 07:41:24 -07:00
postmortem fix(docs): address Codex review round 3 — last three moved-policy citations 2026-07-04 16:02:39 +08:00
rfc fix(tool-cordis): validate a dynamic tool's execute return shape after the realm round-trip 2026-07-09 22:12:30 +08:00
agent-lifecycle.md docs: address graph review placement 2026-07-05 02:54:01 +08:00
AGENTS.md docs: tighten development onboarding wording 2026-07-07 19:03:14 +08:00
architecture.md Merge remote-tracking branch 'origin/master' into timeout-design 2026-07-08 15:40:56 +08:00
capability-seams.md Merge remote-tracking branch 'origin/master' into tool-cordis 2026-07-09 22:02:06 +08:00
config-catalog.md Merge remote-tracking branch 'origin/master' into tool-cordis 2026-07-09 22:02:06 +08:00
cordis-primer.md docs: split cordis primer from architecture map 2026-07-05 19:07:34 +08:00
defensive-patterns.md docs(AGENTS): rewrite the root standing orders to the 1,500-word budget 2026-07-04 14:22:47 +08:00
development.i18n.yaml Merge remote-tracking branch 'origin/master' into worktree-node-22-18-compat 2026-07-07 21:33:40 +08:00
development.md Merge remote-tracking branch 'origin/master' into worktree-node-22-18-compat 2026-07-07 21:33:40 +08:00
development.zh.md Merge remote-tracking branch 'origin/master' into worktree-node-22-18-compat 2026-07-07 21:33:40 +08:00
event-producer-consumer.md Merge remote-tracking branch 'origin/master' into timeout-design 2026-07-09 11:52:18 +08:00
graph-atlas.md chore: register the cordis group across repo gates and docs 2026-07-09 13:57:03 +08:00
module-graph.md Merge remote-tracking branch 'origin/master' into tool-cordis 2026-07-09 22:02:06 +08:00
persistence-catalog.md Merge remote-tracking branch 'origin/master' into worktree-export-jsdoc-gate 2026-07-07 09:34:12 +08:00
testing.md Merge remote-tracking branch 'origin/master' into code-runtime-worker 2026-07-08 14:44:23 +08:00
tool-catalog.md Merge remote-tracking branch 'origin/master' into tool-cordis 2026-07-09 22:02:06 +08:00
tool-execution-pipeline.md feat(timeout): add tools/execute seam + tool-timeout policy plugin 2026-07-08 10:10:37 +08:00