@researai/deepscientist 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/AGENTS.md +26 -0
  2. package/README.md +47 -161
  3. package/assets/connectors/lingzhu/openclaw-bridge/README.md +124 -0
  4. package/assets/connectors/lingzhu/openclaw-bridge/index.ts +162 -0
  5. package/assets/connectors/lingzhu/openclaw-bridge/openclaw.plugin.json +145 -0
  6. package/assets/connectors/lingzhu/openclaw-bridge/package.json +35 -0
  7. package/assets/connectors/lingzhu/openclaw-bridge/src/cli.ts +180 -0
  8. package/assets/connectors/lingzhu/openclaw-bridge/src/config.ts +196 -0
  9. package/assets/connectors/lingzhu/openclaw-bridge/src/debug-log.ts +111 -0
  10. package/assets/connectors/lingzhu/openclaw-bridge/src/events.ts +4 -0
  11. package/assets/connectors/lingzhu/openclaw-bridge/src/http-handler.ts +1133 -0
  12. package/assets/connectors/lingzhu/openclaw-bridge/src/image-cache.ts +75 -0
  13. package/assets/connectors/lingzhu/openclaw-bridge/src/lingzhu-tools.ts +246 -0
  14. package/assets/connectors/lingzhu/openclaw-bridge/src/transform.ts +541 -0
  15. package/assets/connectors/lingzhu/openclaw-bridge/src/types.ts +131 -0
  16. package/assets/connectors/lingzhu/openclaw-bridge/tsconfig.json +14 -0
  17. package/assets/connectors/lingzhu/openclaw.lingzhu.config.template.json +39 -0
  18. package/bin/ds.js +2048 -166
  19. package/docs/en/00_QUICK_START.md +152 -0
  20. package/docs/en/01_SETTINGS_REFERENCE.md +1104 -0
  21. package/docs/en/02_START_RESEARCH_GUIDE.md +404 -0
  22. package/docs/en/03_QQ_CONNECTOR_GUIDE.md +325 -0
  23. package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +216 -0
  24. package/docs/en/05_TUI_GUIDE.md +141 -0
  25. package/docs/en/06_RUNTIME_AND_CANVAS.md +679 -0
  26. package/docs/en/07_MEMORY_AND_MCP.md +253 -0
  27. package/docs/en/08_FIGURE_STYLE_GUIDE.md +97 -0
  28. package/docs/en/09_DOCTOR.md +152 -0
  29. package/docs/en/90_ARCHITECTURE.md +247 -0
  30. package/docs/en/91_DEVELOPMENT.md +195 -0
  31. package/docs/en/99_ACKNOWLEDGEMENTS.md +29 -0
  32. package/docs/zh/00_QUICK_START.md +152 -0
  33. package/docs/zh/01_SETTINGS_REFERENCE.md +1137 -0
  34. package/docs/zh/02_START_RESEARCH_GUIDE.md +414 -0
  35. package/docs/zh/03_QQ_CONNECTOR_GUIDE.md +324 -0
  36. package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +230 -0
  37. package/docs/zh/05_TUI_GUIDE.md +128 -0
  38. package/docs/zh/06_RUNTIME_AND_CANVAS.md +271 -0
  39. package/docs/zh/07_MEMORY_AND_MCP.md +235 -0
  40. package/docs/zh/08_FIGURE_STYLE_GUIDE.md +97 -0
  41. package/docs/zh/09_DOCTOR.md +154 -0
  42. package/docs/zh/99_ACKNOWLEDGEMENTS.md +29 -0
  43. package/install.sh +41 -16
  44. package/package.json +5 -2
  45. package/pyproject.toml +1 -1
  46. package/src/deepscientist/__init__.py +6 -1
  47. package/src/deepscientist/artifact/guidance.py +9 -2
  48. package/src/deepscientist/artifact/service.py +1026 -39
  49. package/src/deepscientist/bash_exec/monitor.py +27 -5
  50. package/src/deepscientist/bash_exec/runtime.py +639 -0
  51. package/src/deepscientist/bash_exec/service.py +99 -16
  52. package/src/deepscientist/bridges/base.py +3 -0
  53. package/src/deepscientist/bridges/connectors.py +292 -13
  54. package/src/deepscientist/channels/qq.py +19 -2
  55. package/src/deepscientist/channels/relay.py +1 -0
  56. package/src/deepscientist/cli.py +32 -25
  57. package/src/deepscientist/config/models.py +28 -2
  58. package/src/deepscientist/config/service.py +202 -7
  59. package/src/deepscientist/connector_runtime.py +2 -0
  60. package/src/deepscientist/daemon/api/handlers.py +68 -6
  61. package/src/deepscientist/daemon/api/router.py +3 -0
  62. package/src/deepscientist/daemon/app.py +531 -15
  63. package/src/deepscientist/doctor.py +511 -0
  64. package/src/deepscientist/gitops/diff.py +3 -0
  65. package/src/deepscientist/home.py +26 -2
  66. package/src/deepscientist/latex_runtime.py +17 -4
  67. package/src/deepscientist/lingzhu_support.py +182 -0
  68. package/src/deepscientist/mcp/context.py +3 -1
  69. package/src/deepscientist/mcp/server.py +55 -2
  70. package/src/deepscientist/prompts/builder.py +222 -58
  71. package/src/deepscientist/quest/layout.py +2 -0
  72. package/src/deepscientist/quest/service.py +133 -14
  73. package/src/deepscientist/quest/stage_views.py +65 -1
  74. package/src/deepscientist/runners/codex.py +2 -0
  75. package/src/deepscientist/runtime_tools/__init__.py +16 -0
  76. package/src/deepscientist/runtime_tools/builtins.py +19 -0
  77. package/src/deepscientist/runtime_tools/models.py +29 -0
  78. package/src/deepscientist/runtime_tools/registry.py +40 -0
  79. package/src/deepscientist/runtime_tools/service.py +59 -0
  80. package/src/deepscientist/runtime_tools/tinytex.py +25 -0
  81. package/src/deepscientist/shared.py +44 -17
  82. package/src/deepscientist/tinytex.py +276 -0
  83. package/src/prompts/connectors/lingzhu.md +15 -0
  84. package/src/prompts/connectors/qq.md +121 -0
  85. package/src/prompts/system.md +214 -37
  86. package/src/skills/analysis-campaign/SKILL.md +46 -7
  87. package/src/skills/baseline/SKILL.md +12 -5
  88. package/src/skills/decision/SKILL.md +7 -5
  89. package/src/skills/experiment/SKILL.md +22 -5
  90. package/src/skills/finalize/SKILL.md +9 -5
  91. package/src/skills/idea/SKILL.md +6 -5
  92. package/src/skills/intake-audit/SKILL.md +277 -0
  93. package/src/skills/intake-audit/references/state-audit-template.md +41 -0
  94. package/src/skills/rebuttal/SKILL.md +409 -0
  95. package/src/skills/rebuttal/references/action-plan-template.md +63 -0
  96. package/src/skills/rebuttal/references/evidence-update-template.md +30 -0
  97. package/src/skills/rebuttal/references/response-letter-template.md +113 -0
  98. package/src/skills/rebuttal/references/review-matrix-template.md +55 -0
  99. package/src/skills/review/SKILL.md +295 -0
  100. package/src/skills/review/references/experiment-todo-template.md +29 -0
  101. package/src/skills/review/references/review-report-template.md +83 -0
  102. package/src/skills/review/references/revision-log-template.md +40 -0
  103. package/src/skills/scout/SKILL.md +6 -5
  104. package/src/skills/write/SKILL.md +8 -4
  105. package/src/tui/dist/components/WelcomePanel.js +17 -43
  106. package/src/tui/dist/components/messages/BashExecOperationMessage.js +3 -2
  107. package/src/tui/package.json +1 -1
  108. package/src/ui/dist/assets/{AiManusChatView-7v-dHngU.js → AiManusChatView-CZpg376x.js} +127 -597
  109. package/src/ui/dist/assets/{AnalysisPlugin-B_Xmz-KE.js → AnalysisPlugin-CtHA22g3.js} +1 -1
  110. package/src/ui/dist/assets/{AutoFigurePlugin-Cko-0tm1.js → AutoFigurePlugin-BSWmLMmF.js} +63 -8
  111. package/src/ui/dist/assets/{CliPlugin-BsU0ht7q.js → CliPlugin-CJ7jdm_s.js} +43 -609
  112. package/src/ui/dist/assets/{CodeEditorPlugin-DcMMP0Rt.js → CodeEditorPlugin-DhInVGFf.js} +8 -8
  113. package/src/ui/dist/assets/{CodeViewerPlugin-BqoQ5QyY.js → CodeViewerPlugin-D1n8S9r5.js} +5 -5
  114. package/src/ui/dist/assets/{DocViewerPlugin-D7eHNhU6.js → DocViewerPlugin-C4XM_kqk.js} +3 -3
  115. package/src/ui/dist/assets/{GitDiffViewerPlugin-DLJN42T5.js → GitDiffViewerPlugin-W6kS9r6v.js} +1 -1
  116. package/src/ui/dist/assets/{ImageViewerPlugin-gJMV7MOu.js → ImageViewerPlugin-DPeUx_Oz.js} +5 -6
  117. package/src/ui/dist/assets/{LabCopilotPanel-B857sfxP.js → LabCopilotPanel-eAelUaub.js} +12 -15
  118. package/src/ui/dist/assets/LabPlugin-BbOrBxKY.js +2676 -0
  119. package/src/ui/dist/assets/{LatexPlugin-DWKEo-Wj.js → LatexPlugin-C-HhkVXY.js} +16 -16
  120. package/src/ui/dist/assets/{MarkdownViewerPlugin-DBzoEmhv.js → MarkdownViewerPlugin-BDIzIBfh.js} +4 -4
  121. package/src/ui/dist/assets/{MarketplacePlugin-DoHc-8vo.js → MarketplacePlugin-DAOJphwr.js} +3 -3
  122. package/src/ui/dist/assets/{NotebookEditor-CKjKH-yS.js → NotebookEditor-BsoMvDoU.js} +3 -3
  123. package/src/ui/dist/assets/{PdfLoader-zFoL0VPo.js → PdfLoader-fiC7RtHf.js} +1 -1
  124. package/src/ui/dist/assets/{PdfMarkdownPlugin-DXPaL9Nt.js → PdfMarkdownPlugin-C5OxZBFK.js} +3 -3
  125. package/src/ui/dist/assets/{PdfViewerPlugin-DhK8qCFp.js → PdfViewerPlugin-CAbxQebk.js} +10 -10
  126. package/src/ui/dist/assets/{SearchPlugin-CdSi6krf.js → SearchPlugin-SE33Lb9B.js} +1 -1
  127. package/src/ui/dist/assets/{Stepper-V-WiDQJl.js → Stepper-0Av7GfV7.js} +1 -1
  128. package/src/ui/dist/assets/{TextViewerPlugin-hIs1Efiu.js → TextViewerPlugin-Daf2gJDI.js} +4 -4
  129. package/src/ui/dist/assets/{VNCViewer-DG8b0q2X.js → VNCViewer-BKrMUIOX.js} +9 -10
  130. package/src/ui/dist/assets/{bibtex-HDac6fVW.js → bibtex-JBdOEe45.js} +1 -1
  131. package/src/ui/dist/assets/{code-BnBeNxBc.js → code-B0TDFCZz.js} +1 -1
  132. package/src/ui/dist/assets/{file-content-IRQ3jHb8.js → file-content-3YtrSacz.js} +1 -1
  133. package/src/ui/dist/assets/{file-diff-panel-DZoQ9I6r.js → file-diff-panel-CJEg5OG1.js} +1 -1
  134. package/src/ui/dist/assets/{file-socket-BMCdLc-P.js → file-socket-CYQYdmB1.js} +1 -1
  135. package/src/ui/dist/assets/{file-utils-CltILB3w.js → file-utils-Cd1C9Ppl.js} +1 -1
  136. package/src/ui/dist/assets/{image-Boe6ffhu.js → image-B33ctrvC.js} +1 -1
  137. package/src/ui/dist/assets/{index-2Zf65FZt.js → index-9CLPVeZh.js} +1 -1
  138. package/src/ui/dist/assets/{index-DZqJ-qAM.js → index-BNQWqmJ2.js} +60 -2154
  139. package/src/ui/dist/assets/{index-DO43pFZP.js → index-BVXsmS7V.js} +84086 -84365
  140. package/src/ui/dist/assets/{index-BlplpvE1.js → index-Buw_N1VQ.js} +2 -2
  141. package/src/ui/dist/assets/{index-Bq2bvfkl.css → index-SwmFAld3.css} +2622 -2619
  142. package/src/ui/dist/assets/{message-square-mUHn_Ssb.js → message-square-D0cUJ9yU.js} +1 -1
  143. package/src/ui/dist/assets/{monaco-fe0arNEU.js → monaco-UZLYkp2n.js} +1 -1
  144. package/src/ui/dist/assets/{popover-D_7i19qU.js → popover-CTeiY-dK.js} +1 -1
  145. package/src/ui/dist/assets/{project-sync-DyVGrU7H.js → project-sync-Dbs01Xky.js} +2 -8
  146. package/src/ui/dist/assets/{sigma-BzazRyxQ.js → sigma-CM08S-xT.js} +1 -1
  147. package/src/ui/dist/assets/{tooltip-DN_yjHFH.js → tooltip-pDtzvU9p.js} +1 -1
  148. package/src/ui/dist/assets/trash-YvPCP-da.js +32 -0
  149. package/src/ui/dist/assets/{useCliAccess-DV2L2Qxy.js → useCliAccess-Bavi74Ac.js} +12 -42
  150. package/src/ui/dist/assets/{useFileDiffOverlay-DyTj-p_V.js → useFileDiffOverlay-CVXY6oeg.js} +1 -1
  151. package/src/ui/dist/assets/{wrap-text-ozYHtUwq.js → wrap-text-Cf4flRW7.js} +1 -1
  152. package/src/ui/dist/assets/{zoom-out-BN9MUyCQ.js → zoom-out-Hb0Z1YpT.js} +1 -1
  153. package/src/ui/dist/index.html +2 -2
  154. package/uv.lock +1155 -0
  155. package/assets/fonts/Inter-Variable.ttf +0 -0
  156. package/assets/fonts/NotoSerifSC-Regular-C94HN_ZN.ttf +0 -0
  157. package/assets/fonts/NunitoSans-Variable.ttf +0 -0
  158. package/assets/fonts/Satoshi-Medium-ByP-Zb-9.woff2 +0 -0
  159. package/assets/fonts/SourceSans3-Variable.ttf +0 -0
  160. package/assets/fonts/ds-fonts.css +0 -83
  161. package/src/ui/dist/assets/Inter-Variable-VF2RPR_K.ttf +0 -0
  162. package/src/ui/dist/assets/LabPlugin-bL7rpic8.js +0 -43
  163. package/src/ui/dist/assets/NotoSerifSC-Regular-C94HN_ZN-C94HN_ZN.ttf +0 -0
  164. package/src/ui/dist/assets/NunitoSans-Variable-B_ZymHAd.ttf +0 -0
  165. package/src/ui/dist/assets/Satoshi-Medium-ByP-Zb-9-GkA34YXu.woff2 +0 -0
  166. package/src/ui/dist/assets/SourceSans3-Variable-CD-WOsSK.ttf +0 -0
  167. package/src/ui/dist/assets/info-CcsK_htA.js +0 -18
  168. package/src/ui/dist/assets/user-plus-BusDx-hF.js +0 -79
@@ -13,14 +13,15 @@ It absorbs the essential old DeepScientist reproducer discipline into one stage
13
13
  - Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
14
14
  - If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before continuing baseline work.
15
15
  - Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
16
- - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only at real checkpoints, but poll more actively during live work: usually every 3 to 8 tool calls, before another multi-step batch, and before or after long-running `bash_exec` work. Keep updates high-signal and never filler.
17
- - Each progress update must state completed work, the durable output touched, and the immediate next step.
18
- - Message templates are references only. Adapt to the actual context and vary wording so updates feel respectful, human, and non-robotic.
16
+ - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: the first meaningful signal of long work, a meaningful checkpoint, or an occasional keepalive during truly long work. Do not update by tool-call cadence.
17
+ - Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
18
+ - Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
19
+ - Message templates are references only. Adapt to the actual context and vary wording so updates feel natural and non-robotic.
19
20
  - Use `reply_mode='blocking'` only for real user decisions that cannot be resolved from local evidence.
20
- - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, wait up to 1 day when feasible, then choose the best option yourself and notify the user of the chosen option if the timeout expires.
21
+ - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, and wait up to 1 day when feasible. If the blocker is a missing external credential or secret that only the user can provide, keep the quest waiting, ask the user to supply it or choose an alternative, and do not self-resolve; if resumed without that credential and no other work is possible, a long low-frequency wait such as `bash_exec(command='sleep 3600', mode='await', timeout_seconds=3700)` is acceptable. Otherwise choose the best option yourself and notify the user of the chosen option if the timeout expires.
21
22
  - If a threaded user reply arrives, interpret it relative to the latest baseline progress update before assuming the task changed completely.
22
23
  - Prefer `bash_exec` for setup, reproduction, and verification commands so each baseline action keeps a durable quest-local session id and log trail.
23
- - When the baseline route is durably chosen, confirmed, waived, or blocked with a clear next action, send one richer `artifact.interact(kind='milestone', reply_mode='threaded', ...)` update naming the route, the trusted evidence, the accepted baseline identity if known, and the recommended next anchor.
24
+ - When the baseline route is durably chosen, confirmed, waived, or blocked with a clear next action, send one richer `artifact.interact(kind='milestone', reply_mode='threaded', ...)` update that says whether the baseline is trusted, blocked, or waived, why that matters, and what the next stage is.
24
25
 
25
26
  ## Non-negotiable rules
26
27
 
@@ -203,6 +204,12 @@ Global reusable registry paths:
203
204
  Do not invent parallel durable locations when these runtime contracts already exist.
204
205
  Do not leave the authoritative metric contract only in chat, memory, or prose once the baseline is accepted.
205
206
 
207
+ If a baseline is reproduced only because an analysis campaign needs an extra comparator:
208
+
209
+ - still place it under `<quest_root>/baselines/local/<baseline_id>/` or `<quest_root>/baselines/imported/<baseline_id>/`
210
+ - treat it as a supplementary analysis baseline unless the quest explicitly promotes it into the canonical gate
211
+ - do not call `artifact.confirm_baseline(...)` for that supplementary case unless the quest truly intends to replace the canonical baseline
212
+
206
213
  ## Baseline id and variant rules
207
214
 
208
215
  Baseline identity should be stable and path-safe.
@@ -12,13 +12,14 @@ Use this skill whenever continuation is non-trivial.
12
12
  - Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
13
13
  - If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before making the next decision.
14
14
  - Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
15
- - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` at real checkpoints while the decision analysis spans multiple concrete steps, usually every 3 to 8 tool calls during active work. Keep updates high-signal and never filler.
16
- - Message templates are references only. Adapt to context and vary wording so updates feel respectful, human, and non-robotic.
17
- - Each progress update must state completed reasoning or evidence gathering, the durable output touched, and the immediate next step.
15
+ - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: a meaningful checkpoint, a route-shaping update, or an occasional keepalive during truly long decision analysis. Do not update by tool-call cadence.
16
+ - Message templates are references only. Adapt to context and vary wording so updates feel natural and non-robotic.
17
+ - Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
18
+ - Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
18
19
  - If the runtime starts an auto-continue turn with no new user message, continue from the active requirements and durable quest state instead of replaying the previous user turn.
19
20
  - If `startup_contract.decision_policy = autonomous`, do not emit ordinary `artifact.interact(kind='decision_request', ...)` calls; decide the route yourself, record the reason, and continue.
20
21
  - Use `reply_mode='blocking'` for the actual decision request only when the user must choose before safe continuation and the quest contract still allows a user-gated decision.
21
- - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, wait up to 1 day when feasible, then choose the best option yourself and notify the user of the chosen option if the timeout expires.
22
+ - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, and wait up to 1 day when feasible. If the blocker is a missing external credential or secret that only the user can provide, keep the quest waiting, ask the user to supply it or choose an alternative, and do not self-resolve; if resumed without that credential and no other work is possible, a long low-frequency wait such as `bash_exec(command='sleep 3600', mode='await', timeout_seconds=3700)` is acceptable. Otherwise choose the best option yourself and notify the user of the chosen option if the timeout expires.
22
23
  - If a threaded user reply arrives, interpret it relative to the latest decision or progress interaction before assuming the task changed completely.
23
24
  - Quest completion is a special terminal decision: first ask for explicit completion approval with `artifact.interact(kind='decision_request', reply_mode='blocking', reply_schema={'decision_type': 'quest_completion_approval'}, ...)`, and only after an explicit approval reply should you call `artifact.complete_quest(...)`.
24
25
 
@@ -318,7 +319,7 @@ When asking, use a structured decision request with:
318
319
  - tradeoffs, including the main pros and cons for each option
319
320
  - recommended option first
320
321
  - explicit reply format
321
- - a stated timeout window; normally wait up to 1 day before self-resolving if no user reply arrives
322
+ - a stated timeout window; normally wait up to 1 day before self-resolving if no user reply arrives, except when the only blocker is a missing external credential or secret that only the user can provide
322
323
 
323
324
  ### 6. Record the decision durably
324
325
 
@@ -326,6 +327,7 @@ Use `artifact.record(kind='decision', ...)` for the final decision.
326
327
 
327
328
  If user input is needed, also use `artifact.interact(kind='decision_request', ...)`.
328
329
  If the timeout expires without a user reply, choose the best option yourself, record why, and notify the user of the chosen option before moving on.
330
+ This does not apply when the only blocker is a missing external credential or secret that only the user can provide; in that case keep the interaction waiting and, if resumed without the credential, you may park with `bash_exec(command='sleep 3600', mode='await', timeout_seconds=3700)` instead of busy-looping.
329
331
 
330
332
  If `startup_contract.decision_policy = autonomous`, ordinary route ambiguity is not by itself grounds to request user input.
331
333
  In that mode, only explicit approval-style exceptions such as quest completion should normally become blocking user decisions.
@@ -12,10 +12,11 @@ Use this skill for the main evidence-producing runs of the quest.
12
12
  - Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
13
13
  - If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before continuing the run plan.
14
14
  - Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
15
- - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only at real checkpoints, but poll more actively during live work: usually every 3 to 8 tool calls, before another multi-step batch, and before or after long-running `bash_exec` work. Keep updates high-signal and never filler.
16
- - Each progress update must state completed work, the durable output touched, and the immediate next run step.
15
+ - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: the first meaningful signal of long work, a meaningful checkpoint, or an occasional keepalive during truly long work. Do not update by tool-call cadence.
16
+ - Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
17
+ - Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
17
18
  - Keep ordinary subtask completions concise. When a main experiment actually finishes or reaches a stage-significant checkpoint, upgrade to a richer `artifact.interact(kind='milestone', reply_mode='threaded', ...)` report rather than another short progress line.
18
- - That richer experiment-stage milestone report should normally cover: what run finished, where the durable run artifacts/logs/metrics live, the key metrics versus baseline or expectation, the main failure modes or caveats, and the exact recommended next action.
19
+ - That richer experiment-stage milestone report should normally cover: what run finished, the headline result versus baseline or expectation, the main caveat, and the exact recommended next action.
19
20
  - That richer milestone report is still normally non-blocking. If the next route is already justified locally, continue automatically after reporting rather than idling for acknowledgment.
20
21
  - If the active communication surface is QQ and QQ milestone media is enabled in config, a completed main experiment may attach one summary PNG to that richer milestone update.
21
22
  - That PNG should be a connector-facing report chart, not a raw debug plot and not a draft paper figure.
@@ -42,7 +43,7 @@ Use this skill for the main evidence-producing runs of the quest.
42
43
  - If the runtime starts an auto-continue turn with no new user message, continue from the current run state, logs, artifacts, and active requirements instead of replaying the previous user turn.
43
44
  - Progress message templates are references only. Adapt to the actual context and vary wording so messages feel human, respectful, and non-robotic.
44
45
  - Use `reply_mode='blocking'` only for real user decisions that cannot be resolved from local evidence.
45
- - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, wait up to 1 day when feasible, then choose the best option yourself and notify the user of the chosen option if the timeout expires.
46
+ - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, and wait up to 1 day when feasible. If the blocker is a missing external credential or secret that only the user can provide, keep the quest waiting, ask the user to supply it or choose an alternative, and do not self-resolve; if resumed without that credential and no other work is possible, a long low-frequency wait such as `bash_exec(command='sleep 3600', mode='await', timeout_seconds=3700)` is acceptable. Otherwise choose the best option yourself and notify the user of the chosen option if the timeout expires.
46
47
  - If a threaded user reply arrives, interpret it relative to the latest experiment progress update before assuming the task changed completely.
47
48
  - Prefer `bash_exec` for experiment commands so each run gets a durable session id, quest-local log folder, and later `read/list/kill` control.
48
49
 
@@ -465,6 +466,22 @@ That call is responsible for writing:
465
466
  - evidence paths
466
467
  - changed files
467
468
  - relevant config paths when applicable
469
+ - `evaluation_summary` with exactly these six fields:
470
+ - `takeaway`
471
+ - `claim_update`
472
+ - `baseline_relation`
473
+ - `comparability`
474
+ - `failure_mode`
475
+ - `next_action`
476
+
477
+ Use `evaluation_summary` as the short structured judgment layer on top of the longer narrative fields:
478
+
479
+ - `takeaway`: one sentence the next reader can reuse directly
480
+ - `claim_update`: `strengthens`, `weakens`, `narrows`, or `neutral`
481
+ - `baseline_relation`: `better`, `worse`, `mixed`, or `not_comparable`
482
+ - `comparability`: `high`, `medium`, or `low`
483
+ - `failure_mode`: `none`, `implementation`, `evaluation`, `environment`, or `direction`
484
+ - `next_action`: the immediate route such as `continue`, `revise_idea`, `analysis_campaign`, `write`, or `stop`
468
485
 
469
486
  After `artifact.record_main_experiment(...)` succeeds, do not assume the same branch should absorb the next round by default.
470
487
  Interpret the measured result first, then either:
@@ -478,7 +495,7 @@ That milestone should state:
478
495
  - the research question that was tested
479
496
  - the primary result and baseline delta
480
497
  - whether the run supports, weakens, or leaves the idea inconclusive
481
- - the durable files or artifact ids that now represent the evidence
498
+ - the main caveat or confidence note that still matters
482
499
  - the exact recommended next move
483
500
 
484
501
  Do not treat a main run as durably complete until `artifact.record_main_experiment(...)` succeeds.
@@ -12,13 +12,14 @@ Use this skill to close or pause a quest responsibly.
12
12
  - Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
13
13
  - If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before closing or pausing the quest.
14
14
  - Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
15
- - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only at real checkpoints, but poll more actively during live work: usually every 3 to 8 tool calls, before another multi-step batch, and before or after long-running `bash_exec` work. Keep updates high-signal and never filler.
16
- - Each progress update must state completed consolidation work, the durable output touched, and the immediate next closure step.
15
+ - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: the first meaningful signal of long work, a meaningful checkpoint, or an occasional keepalive during truly long work. Do not update by tool-call cadence.
16
+ - Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
17
+ - Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
17
18
  - If the runtime starts an auto-continue turn with no new user message, keep finalizing from the durable quest state and active requirements instead of replaying the previous user turn.
18
19
  - Use `reply_mode='blocking'` only for real user decisions that cannot be resolved from local evidence.
19
- - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, wait up to 1 day when feasible, then choose the best option yourself and notify the user of the chosen option if the timeout expires.
20
+ - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, and wait up to 1 day when feasible. If the blocker is a missing external credential or secret that only the user can provide, keep the quest waiting, ask the user to supply it or choose an alternative, and do not self-resolve; if resumed without that credential and no other work is possible, a long low-frequency wait such as `bash_exec(command='sleep 3600', mode='await', timeout_seconds=3700)` is acceptable. Otherwise choose the best option yourself and notify the user of the chosen option if the timeout expires.
20
21
  - If a threaded user reply arrives, interpret it relative to the latest finalize progress update before assuming the task changed completely.
21
- - When finalize reaches a real closure state, pause-ready packet, or route-back decision, send one threaded `artifact.interact(kind='milestone', ...)` update that names the recommendation, the strongest evidence behind it, and any reopen condition that still matters.
22
+ - When finalize reaches a real closure state, pause-ready packet, or route-back decision, send one threaded `artifact.interact(kind='milestone', ...)` update that names the recommendation, why it is the right call, and any reopen condition that still matters.
22
23
  - True quest completion still requires explicit user approval through the runtime completion flow before calling `artifact.complete_quest(...)`.
23
24
 
24
25
  ## Stage purpose
@@ -114,7 +115,7 @@ State clearly:
114
115
  - key deliverables that exist and where they live
115
116
 
116
117
  Do not only say that evidence exists.
117
- Name the paths or artifact ids that matter.
118
+ Say clearly what exists and why it matters. Name concrete paths or artifact ids only when the user asks for them or needs them to act.
118
119
  When a paper bundle exists, verify the manifest inventory explicitly, including:
119
120
 
120
121
  - `paper/paper_bundle_manifest.json`
@@ -123,9 +124,12 @@ When a paper bundle exists, verify the manifest inventory explicitly, including:
123
124
  - referenced `writing_plan_path`
124
125
  - referenced `references_path`
125
126
  - referenced `claim_evidence_map_path`
127
+ - referenced `baseline_inventory_path`
126
128
  - referenced `compile_report_path`
127
129
  - referenced `pdf_path`
128
130
  - referenced `latex_root_path`
131
+ - `release/open_source/manifest.json` when open-source preparation has started
132
+ - `release/open_source/cleanup_plan.md` when the paper line is being prepared for a public code release
129
133
 
130
134
  ### 2. Build the final claim ledger
131
135
 
@@ -12,15 +12,16 @@ Use this skill to turn the current baseline and problem frame into concrete, lit
12
12
  - Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
13
13
  - If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before selecting or refining ideas.
14
14
  - Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
15
- - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only at real checkpoints, but poll more actively during live work: usually every 3 to 8 tool calls, before another multi-step batch, and before or after long-running `bash_exec` work. Keep updates high-signal and never filler.
16
- - Each progress update must state completed analysis, the durable output touched, and the immediate next ideation step.
15
+ - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: the first meaningful signal of long work, a meaningful checkpoint, or an occasional keepalive during truly long work. Do not update by tool-call cadence.
16
+ - Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
17
+ - Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
17
18
  - Keep ordinary subtask completions concise. When the idea stage actually finishes a meaningful deliverable such as a selected idea package, a rejected-ideas summary, or a route-shaping ideation checkpoint, upgrade to a richer `artifact.interact(kind='milestone', reply_mode='threaded', ...)` report.
18
- - That richer idea-stage milestone report should normally cover: the final selected/rejected directions, the strongest supporting literature/codebase evidence, the concrete files or artifacts produced, the main residual risks, and the exact recommended next stage or experiment.
19
+ - That richer idea-stage milestone report should normally cover: the final selected or rejected direction, why it won or lost, the main remaining risk, and the exact recommended next stage or experiment.
19
20
  - That richer milestone report is still normally non-blocking. If the next experiment or route is already clear from durable evidence, continue automatically after reporting instead of waiting.
20
21
  - If the runtime starts an auto-continue turn with no new user message, keep advancing from the active requirements and current durable state instead of re-answering the previous user turn.
21
- - Message templates are references only. Adapt to the actual context and vary wording so updates feel respectful, human, and non-robotic.
22
+ - Message templates are references only. Adapt to the actual context and vary wording so updates feel natural and non-robotic.
22
23
  - Use `reply_mode='blocking'` only for real user decisions that cannot be resolved from local evidence.
23
- - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, wait up to 1 day when feasible, then choose the best option yourself and notify the user of the chosen option if the timeout expires.
24
+ - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, and wait up to 1 day when feasible. If the blocker is a missing external credential or secret that only the user can provide, keep the quest waiting, ask the user to supply it or choose an alternative, and do not self-resolve; if resumed without that credential and no other work is possible, a long low-frequency wait such as `bash_exec(command='sleep 3600', mode='await', timeout_seconds=3700)` is acceptable. Otherwise choose the best option yourself and notify the user of the chosen option if the timeout expires.
24
25
  - If a threaded user reply arrives, interpret it relative to the latest idea progress update before assuming the task changed completely.
25
26
 
26
27
  ## Stage purpose
@@ -0,0 +1,277 @@
1
+ ---
2
+ name: intake-audit
3
+ description: Use when a quest does not start from a blank state and the agent must first audit, trust-rank, and reconcile existing baselines, results, drafts, or review materials before choosing the next anchor.
4
+ ---
5
+
6
+ # Intake Audit
7
+
8
+ Use this skill when the quest already has meaningful state and the first job is to normalize that state instead of restarting the canonical research loop from zero.
9
+
10
+ ## Interaction discipline
11
+
12
+ - Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
13
+ - If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before continuing the audit.
14
+ - Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
15
+ - Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: the first meaningful signal of the audit, a meaningful checkpoint, or an occasional keepalive during truly long work. Do not update by tool-call cadence.
16
+ - Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
17
+ - Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
18
+ - Message templates are references only. Adapt to the actual context and vary wording so updates feel natural and non-robotic.
19
+ - Use `reply_mode='blocking'` only for real user decisions that cannot be resolved from local evidence.
20
+ - For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, and wait up to 1 day when feasible. If the blocker is a missing external credential or secret that only the user can provide, keep the quest waiting, ask the user to supply it or choose an alternative, and do not self-resolve; if resumed without that credential and no other work is possible, a long low-frequency wait such as `bash_exec(command='sleep 3600', mode='await', timeout_seconds=3700)` is acceptable. Otherwise choose the best option yourself and notify the user of the chosen option if the timeout expires.
21
+ - If a threaded user reply arrives, interpret it relative to the latest intake-audit progress update before assuming the task changed completely.
22
+ - When the audit reaches a durable route recommendation, send one richer `artifact.interact(kind='milestone', reply_mode='threaded', ...)` update that says what state is trusted, what still needs work, and which anchor should run next.
23
+
24
+ ## Purpose
25
+
26
+ `intake-audit` is an auxiliary entry skill, not a normal long-running anchor.
27
+
28
+ Its purpose is to answer four questions before deeper work begins:
29
+
30
+ 1. what already exists?
31
+ 2. what is trustworthy?
32
+ 3. what can be reused directly?
33
+ 4. which skill should take over next?
34
+
35
+ This skill exists because many quests do **not** start from a clean slate.
36
+ Common non-blank starts include:
37
+
38
+ - a baseline already exists and may already be confirmed
39
+ - a main experiment has already finished and only needs durable recording or interpretation
40
+ - analysis results already exist across child branches or worktrees
41
+ - a draft or paper bundle already exists
42
+ - reviewer comments already exist and the quest is really a revision/rebuttal task
43
+ - the user explicitly says not to rerun from scratch
44
+
45
+ Do not treat these as edge cases.
46
+ They are common research entry states.
47
+
48
+ ## Use when
49
+
50
+ - `startup_contract.launch_mode = custom` and the profile implies existing work
51
+ - the quest root already contains meaningful baseline, experiment, analysis, or paper assets
52
+ - the user says:
53
+ - “baseline 已经有了”
54
+ - “不要重新复现”
55
+ - “先整理现有结果”
56
+ - “已有论文/草稿,先基于现有状态继续”
57
+ - review materials exist but the current paper/result state is still unclear
58
+
59
+ ## Do not use when
60
+
61
+ - the quest is genuinely blank and should start with ordinary `scout` or `baseline`
62
+ - the active state is already well-normalized and the next anchor is obvious
63
+ - the task is a pure non-research request
64
+
65
+ ## Non-negotiable rules
66
+
67
+ - Do not rerun expensive work just because files exist. First decide whether a trust gap actually requires rerunning.
68
+ - Do not fabricate missing durable records in order to make the quest look cleaner.
69
+ - Do not mark an existing baseline as trusted unless the metric contract, source, and comparability are clear enough.
70
+ - Do not mark an existing experiment as a durable main result unless it is genuinely the main run for an accepted idea line.
71
+ - Do not silently import old drafts, plots, or notes as the active contract if they belong to a different idea line or branch line.
72
+ - Do not lose provenance. If an artifact is reused, record where it came from and why it is trusted enough.
73
+ - If the quest is really a review/revision task, route to `rebuttal` instead of pretending this is a normal fresh paper-writing pass.
74
+
75
+ ## Typical intake states
76
+
77
+ Classify the current quest into one or more of these buckets:
78
+
79
+ - `baseline_ready`
80
+ - `baseline_partial`
81
+ - `main_result_ready`
82
+ - `analysis_ready`
83
+ - `draft_ready`
84
+ - `paper_bundle_ready`
85
+ - `review_package_ready`
86
+ - `unclear_state`
87
+
88
+ Also classify every important asset by trust:
89
+
90
+ - `trusted`
91
+ - `usable_with_verification`
92
+ - `reference_only`
93
+ - `stale_or_conflicting`
94
+ - `missing_context`
95
+
96
+ ## Primary truth sources
97
+
98
+ Use, in roughly this order:
99
+
100
+ - `startup_contract`
101
+ - especially `launch_mode`, `custom_profile`, `entry_state_summary`, `review_summary`, and `custom_brief` when present
102
+ - quest continuity files:
103
+ - `brief.md`
104
+ - `plan.md`
105
+ - `status.md`
106
+ - `SUMMARY.md`
107
+ - recent durable artifact state and quest snapshot
108
+ - current workspace tree and visible quest files
109
+ - prior memory cards and decisions
110
+ - git history and current branch topology when needed
111
+ - user messages
112
+
113
+ Do not trust chat recollection over durable state.
114
+
115
+ ## Workflow
116
+
117
+ ### 1. Read startup intent first
118
+
119
+ Before touching the workspace, inspect:
120
+
121
+ - `startup_contract`
122
+ - the latest user message
123
+ - recent quest status
124
+
125
+ Interpret these fields specially when present:
126
+
127
+ - `launch_mode = custom`
128
+ - do not force the standard full-research route
129
+ - `custom_profile = continue_existing_state`
130
+ - expect reusable assets and state normalization
131
+ - `custom_profile = revision_rebuttal`
132
+ - expect a paper/review package and likely handoff to `rebuttal`
133
+ - `custom_profile = freeform`
134
+ - prefer the custom brief over the default stage ordering
135
+
136
+ ### 2. Retrieve memory before filesystem triage
137
+
138
+ Stage-start requirement:
139
+
140
+ - run `memory.list_recent(scope='quest', limit=5)`
141
+ - run at least one `memory.search(...)` using:
142
+ - the quest title or central topic
143
+ - any known baseline id or method name
144
+ - any known paper title or venue short name
145
+ - any known review keyword such as `rebuttal`, `review`, or `revision`
146
+
147
+ The point is to reuse prior route knowledge before re-auditing the same state from scratch.
148
+
149
+ ### 3. Inventory the quest state
150
+
151
+ Create or refresh a durable audit note using `references/state-audit-template.md`.
152
+
153
+ The inventory should cover:
154
+
155
+ - baseline assets
156
+ - main experiment assets
157
+ - analysis assets
158
+ - writing assets
159
+ - review assets
160
+ - git / branch / worktree state
161
+ - missing or conflicting state
162
+
163
+ Useful places to inspect include:
164
+
165
+ - `artifacts/`
166
+ - `baselines/`
167
+ - `experiments/main/`
168
+ - `experiments/analysis/`
169
+ - `paper/`
170
+ - `reviews/` or equivalent user-provided review folders
171
+
172
+ Do not over-read the entire tree.
173
+ Read enough to classify the state and locate the likely trust anchors.
174
+
175
+ ### 4. Trust-rank and reconcile
176
+
177
+ For each major asset, decide:
178
+
179
+ - can it be trusted as-is?
180
+ - does it need a light verification pass?
181
+ - is it only reference material?
182
+ - is it stale or conflicting?
183
+
184
+ Then reconcile it with the durable artifact layer:
185
+
186
+ - existing reusable baseline:
187
+ - `artifact.attach_baseline(...)`
188
+ - then `artifact.confirm_baseline(...)` when trust is justified
189
+ - existing main result:
190
+ - `artifact.record_main_experiment(...)` only if the run is genuinely the accepted main run and the required fields can be filled honestly
191
+ - existing analysis results:
192
+ - if the campaign already exists, use `artifact.record_analysis_slice(...)` for each real finished slice that needs durable registration
193
+ - existing outline:
194
+ - `artifact.submit_paper_outline(mode='select'|'revise', ...)` when there is a real durable outline contract
195
+ - existing paper bundle:
196
+ - `artifact.submit_paper_bundle(...)` when the draft/package state is genuinely ready
197
+
198
+ If the evidence is insufficient for a durable backfill, record that insufficiency explicitly instead of inventing a cleaned-up history.
199
+
200
+ ### 5. Choose the next anchor
201
+
202
+ After reconciliation, write one durable route decision with `artifact.record(kind='decision', ...)`.
203
+
204
+ Typical next anchors:
205
+
206
+ - baseline exists but trust is incomplete -> `baseline`
207
+ - baseline and route are ready, but no durable main result exists -> `experiment`
208
+ - main result exists, but follow-up evidence is missing -> `analysis-campaign`
209
+ - evidence is strong and writing should begin -> `write`
210
+ - review package is active -> `rebuttal`
211
+ - the quest is effectively complete or should pause -> `finalize`
212
+
213
+ ### 6. Report and hand off
214
+
215
+ At the end of the intake pass, send one threaded `artifact.interact(kind='milestone', ...)` update that says:
216
+
217
+ - what already exists and is trusted
218
+ - what remains untrusted or incomplete
219
+ - which next skill should take over
220
+ - whether the user needs to provide anything else
221
+
222
+ ## Recommended durable outputs
223
+
224
+ - `artifacts/intake/state_audit.md`
225
+ - `artifacts/intake/recommended_next_step.md`
226
+ - one `decision` artifact for the post-audit route
227
+ - one or more repair/backfill artifact calls when justified
228
+
229
+ ## Companion skill routing
230
+
231
+ Open additional skills only when the audit indicates they are necessary:
232
+
233
+ - `baseline`
234
+ - when an existing baseline must be validated, repaired, confirmed, or waived
235
+ - `experiment`
236
+ - when the accepted route lacks a durably recorded main result
237
+ - `analysis-campaign`
238
+ - when the main result exists but the evidence boundary is still weak
239
+ - `write`
240
+ - when a trustworthy draft or outline should become the active writing line
241
+ - `rebuttal`
242
+ - when reviewer comments, revision requests, or meta-review materials define the real task
243
+ - `decision`
244
+ - when more than one next anchor remains plausible
245
+
246
+ ## Memory discipline
247
+
248
+ Stage-end requirement:
249
+
250
+ - if the intake pass produced a durable route choice, trust judgment, or asset-reuse rule, write at least one `memory.write(...)`
251
+
252
+ Useful tags include:
253
+
254
+ - `stage:intake-audit`
255
+ - `type:state-audit`
256
+ - `type:route-handoff`
257
+ - `type:reuse-rule`
258
+ - `state:trusted`
259
+ - `state:needs-verification`
260
+
261
+ When the audit concerns a specific existing line, include identifiers when known:
262
+
263
+ - `baseline_id`
264
+ - `idea_id`
265
+ - `run_id`
266
+ - `branch`
267
+ - `paper_state`
268
+
269
+ ## Success condition
270
+
271
+ `intake-audit` is successful when:
272
+
273
+ - the quest's current state is understandable
274
+ - the trustworthy reusable assets are explicit
275
+ - the untrusted gaps are explicit
276
+ - the next anchor is explicit
277
+ - the system can continue without pretending the quest started from zero
@@ -0,0 +1,41 @@
1
+ # State Audit Template
2
+
3
+ ## Intake Summary
4
+
5
+ - launch mode:
6
+ - custom profile:
7
+ - user intent:
8
+ - recommended next anchor:
9
+
10
+ ## Asset Matrix
11
+
12
+ | Area | Current asset | Trust level | Why | Missing proof | Recommended action |
13
+ | --- | --- | --- | --- | --- | --- |
14
+ | Baseline | | | | | |
15
+ | Main experiment | | | | | |
16
+ | Analysis | | | | | |
17
+ | Draft / paper | | | | | |
18
+ | Review package | | | | | |
19
+ | Git / branches | | | | | |
20
+
21
+ ## Reusable Assets
22
+
23
+ - baseline:
24
+ - metrics:
25
+ - figures:
26
+ - draft sections:
27
+ - review materials:
28
+
29
+ ## Conflicts / Unknowns
30
+
31
+ - conflicting baseline/result state:
32
+ - unclear provenance:
33
+ - missing metric contract:
34
+ - stale draft risk:
35
+
36
+ ## Route Recommendation
37
+
38
+ - next anchor:
39
+ - why now:
40
+ - what should not be repeated:
41
+ - what still needs verification: