format v4 error: producer-owned source kind fix
The format v4 error looks like three versions, but there is one cause: the message source kind is not producer-owned. Determine whether it is a write or read failure, then follow three recovery steps.
Three prefixes, one cause
One admission failure surfaces in three forms.
| Prefix | Where | Meaning |
|---|---|---|
| format v4 message requires a producer-owned source kind | Raw error | Admission failed |
| This turn failed + raw error | Chinese UI | Turn-level wrapper |
| this turn failed + raw error | English UI or log | Same, English wording |
The fix is identical. The prefix only changes where you see it; diagnose the raw error, then apply the same steps.
"This turn failed" does not mean the session is corrupted. It means this write or read failed; history usually remains (source).
Why reads fail too
format v4 validates source kind on both encode and decode.
Write path: when a plugin writes a message, v4 admission checks the source shape and rejects the old plugin wrapper.
Read path: when a session opens, decoding runs the same check; an invalid source makes the message unreadable, which looks like a session that will not open.
Both paths accept only producer-owned kinds. A generic wrapper is rejected, not a permission or corruption issue.
Fix the writer, not the reader. The unreadable state is a result; the cause is an invalid source written earlier (source).
Step one: find the writer
Find the plugin that writes to the session. Not every plugin writes.
- Recall which plugins were installed or upgraded recently, especially session, message, summary, or panel plugins.
- Check the Installed list for recent versions and update times.
- Read the stack or context in system logs to identify the package.
- Disable the suspect and repeat the operation; if the error disappears, the writer is found.
"What changed recently" beats "what the error says." These failures track recent changes; narrow to one or two plugins first.
Do not disable everything. It removes the error but not the cause; disable one at a time.
Step two: three recovery paths
From cheapest to most expensive.
- Upgrade the plugin. Prefer a version built for format v4; restart and retest both write and read. Most cases end here.
- Change the source kind. If the plugin exposes the source type, replace the generic plugin wrapper with a producer-owned value; retest the same message.
- Uninstall. If neither works, remove the plugin so it stops writing invalid shapes; affected sessions need migration or cleanup.
Upgrade before hand-editing configuration. Authors usually ship a v4 fix; manual kind changes may conflict with later versions.
Uninstall is damage control, not repair. It stops new invalid messages; existing data still needs migration or cleanup.
Step three: verify both paths
After the fix, verify write and read, not just one.
- Open a new session and run a write operation with the suspect plugin.
- Close and reopen the session; confirm content is complete.
- Read an old session and confirm the same error does not return.
- Check logs for remaining source-kind records; if present, another plugin still writes old shapes.
- Record the fixed version and steps.
Verifying only writes misses decoding. A successful write with a failed read means historical data still has invalid sources.
Old sessions do not fix themselves. Upgrading the plugin does not rewrite existing data; migrate or clean when necessary.
Difference from migration refusal
Both involve session format, in opposite directions.
| Error | Where | Essence |
|---|---|---|
| format v4 message requires a producer-owned source kind | Write/decode admission | Invalid source shape |
| session format migration refusal | Old-session migration | Missing manifest entry |
One is "the new format rejects old sources"; the other is "the migration manifest rejects old data." Fix the writer for the first and the manifest for the second.
Check for source kind in the message. Present means the first; only migration, manifest, or missing entries means the second.
They can occur together. Fix source kind first, then migration; reversing the order makes migration fail repeatedly.
Prevention: check compatibility before upgrading
The error is avoidable at the cost of reading one line before upgrading.
- Check the compatible version. v4-ready plugins usually state support.
- Upgrade core before plugins. Core reaches v4 first; reversing it creates plugins writing a format the core does not accept.
- Run a minimal write after upgrading. One message verifies the chain.
- Keep a pre-upgrade snapshot. Session directory and plugin list, for rollback.
Compatibility statements matter more than version numbers. Version order does not guarantee support.
Upgrade one plugin at a time. One change makes diagnosis easy; ten changes force disabling everything.
Next steps
Find the writer, upgrade or change kind, verify both paths. For the full root cause, read format v4 producer-owned source kind. For migration refusal, read Session format migration refusal. For session storage, read Where DeepSeek Harness sessions live.
Sources: deepseek-ai/deepseek-harness, DeepSeek Harness docs - Web UI guide, Community plugin dsh-tui-compact-carry
FAQ
The three prefixes of the format v4 message share one root cause and one fix. The prefix only shows where it surfaced: raw admission, a Chinese turn-level message, or an English turn-level message.
A session that cannot write or read is not two bugs: format v4 validates source kind on both encode and decode in DeepSeek Harness. An incompatible plugin triggers both a write rejection and a read rejection.
When the format v4 error remains after an upgrade, confirm you upgraded the plugin that actually writes to the session. Then check the session format and whether the plugin declares v4 support.
The format v4 error and session format migration refusal are different. The first is new-format admission of source kind, while the second rejects legitimate old data because the migration manifest is incomplete.
Related Terms
- source kind
- source kind identifies the origin of a session event; format v4 requires a producer-owned value and no longer accepts a generic plugin wrapper.— deepseek-ai/deepseek-harness
- format v4
- format v4 is a generation of the DeepSeek Harness session schema with stricter message-source admission checked on both encode and decode.— deepseek-ai/deepseek-harness
- producer-owned kind
- A producer-owned kind is a source type declared by the message producer; third-party plugins use a prefixed value and official components use official types.— deepseek-ai/deepseek-harness
- migration refusal
- Migration refusal happens when an old session is upgraded and the migration manifest misses an entry, so legitimate data is rejected as invalid format.— deepseek-ai/deepseek-harness
Sources
- deepseek-ai/deepseek-harness· deepseek-ai
- DeepSeek Harness docs - Web UI guide· deepseek-ai
- Community plugin dsh-tui-compact-carry· community