Wenchao An 1b76ab9060
feat: add opt-in task notes and compacted history recall (#5382)
* feat: add opt-in task notes and compacted history recall

* fix: validate task continuity state and preserve user answers

Honor explicit opt-out, preserve clarification replies and capture failure statuses, validate notebook writes, and clear branch archive references. Update the config version and audit optional LLM credentials, with regression and integration evidence.

* fix: align Helm config version with task continuity schema

* fix: preserve mixed task history and declare continuity policies

* fix: recover malformed history and evict archives atomically
2026-09-12 21:01:46 +08:00

46 lines
3.7 KiB
JSON

{
"base_commit": "4501c76b0f44cc55af6332d65ac2e7f5311f71fd",
"script": "backend/scripts/manual_task_continuity_check.py",
"script_sha256": "763fdccdffd3bd9c2566638b5f199bb806a01951c48014ea9c63031b7765f548",
"model": "qwen3.8-flash-next",
"scope": "Synthetic controlled integration using the production compaction middleware, checkpoint state and tools; not a full DeerFlow Gateway or deployment benchmark.",
"summary_condition": "The live summary is explicitly instructed to omit exact batch codes.",
"acceptance": [
"source captured after compaction",
"code absent from active messages and summary",
"graph rebuilt using same checkpointer",
"history_search and history_read called by the model",
"cited task_note saved",
"model wrote an exactly correct JSON manifest"
],
"phases": {
"environment-blocked.json": "Initial sandbox denied network access; three APIConnectionError outcomes retained.",
"initial-network.json": "First integrated archive/notes implementation: 3/3 passed.",
"pre-sync-network.json": "Notes consolidated into existing durable data channel: 3/3 passed.",
"final-network.json": "Final sync/async tools and lazy optional state channels: 3/3 passed.",
"review-network.json": "Final review implementation with validation on all task-note channel writes, including first writes and Overwrite: 3/3 passed. These remain controlled recovery cases, not a Gateway or production benchmark.",
"review-initial-network.json": "First review integration rerun before the final state-channel refinement: 3/3 passed."
},
"limitations": [
"No restart of the hosting process or deployment was exercised.",
"InMemorySaver is reused across graph reconstruction; filesystem source storage is real SQLite.",
"Tool instructions explicitly request search/read/note/write; these cases test execution and recovery mechanics, not spontaneous recall strategy.",
"Artifact bytes were verified before temporary workspaces were cleaned; the metadata retains SHA-256 hashes."
],
"review_initial_source_sha256": {
"backend/packages/harness/deerflow/agents/task_continuity/archive.py": "ba821a6aa8d406d5fa2aeebe2108aee38f35b681412268bc7518b9c0ec61f428",
"backend/packages/harness/deerflow/agents/task_continuity/state.py": "92c52527d5c846150c1ed481cda2b7e19e74aa50552651745ca5b76e6afb7ae9",
"backend/packages/harness/deerflow/agents/task_continuity/tools.py": "d86570525feb805a15c862a1f4032f7e204282e3fd0e65966a36dbf5e20057f4",
"backend/packages/harness/deerflow/agents/middlewares/summarization_middleware.py": "bf5e12d4ca44eae77e030fc7743ffeec3f1bf2538f9ee4cc606d7adcebe94325",
"backend/packages/harness/deerflow/agents/middlewares/durable_context_middleware.py": "2adfe86b877fa207635d63a365711d5b5a87bfc0cf7e932fc7d4daec6f8f0833"
},
"review_source_sha256": {
"backend/packages/harness/deerflow/agents/task_continuity/archive.py": "ba821a6aa8d406d5fa2aeebe2108aee38f35b681412268bc7518b9c0ec61f428",
"backend/packages/harness/deerflow/agents/task_continuity/state.py": "feb780e202d88a14d74d62d80067bcd7a3a9c119e83a050c9e564e59aabffc6e",
"backend/packages/harness/deerflow/agents/task_continuity/tools.py": "d86570525feb805a15c862a1f4032f7e204282e3fd0e65966a36dbf5e20057f4",
"backend/packages/harness/deerflow/agents/middlewares/summarization_middleware.py": "bf5e12d4ca44eae77e030fc7743ffeec3f1bf2538f9ee4cc606d7adcebe94325",
"backend/packages/harness/deerflow/agents/middlewares/durable_context_middleware.py": "2adfe86b877fa207635d63a365711d5b5a87bfc0cf7e932fc7d4daec6f8f0833",
"backend/packages/harness/deerflow/agents/thread_state.py": "04e10d910f721f6ff9996b0b8bdef09c9560ed4234678712c4ce3d514d7b796f"
}
}