@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.
- package/AGENTS.md +26 -0
- package/README.md +47 -161
- package/assets/connectors/lingzhu/openclaw-bridge/README.md +124 -0
- package/assets/connectors/lingzhu/openclaw-bridge/index.ts +162 -0
- package/assets/connectors/lingzhu/openclaw-bridge/openclaw.plugin.json +145 -0
- package/assets/connectors/lingzhu/openclaw-bridge/package.json +35 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/cli.ts +180 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/config.ts +196 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/debug-log.ts +111 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/events.ts +4 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/http-handler.ts +1133 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/image-cache.ts +75 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/lingzhu-tools.ts +246 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/transform.ts +541 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/types.ts +131 -0
- package/assets/connectors/lingzhu/openclaw-bridge/tsconfig.json +14 -0
- package/assets/connectors/lingzhu/openclaw.lingzhu.config.template.json +39 -0
- package/bin/ds.js +2048 -166
- package/docs/en/00_QUICK_START.md +152 -0
- package/docs/en/01_SETTINGS_REFERENCE.md +1104 -0
- package/docs/en/02_START_RESEARCH_GUIDE.md +404 -0
- package/docs/en/03_QQ_CONNECTOR_GUIDE.md +325 -0
- package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +216 -0
- package/docs/en/05_TUI_GUIDE.md +141 -0
- package/docs/en/06_RUNTIME_AND_CANVAS.md +679 -0
- package/docs/en/07_MEMORY_AND_MCP.md +253 -0
- package/docs/en/08_FIGURE_STYLE_GUIDE.md +97 -0
- package/docs/en/09_DOCTOR.md +152 -0
- package/docs/en/90_ARCHITECTURE.md +247 -0
- package/docs/en/91_DEVELOPMENT.md +195 -0
- package/docs/en/99_ACKNOWLEDGEMENTS.md +29 -0
- package/docs/zh/00_QUICK_START.md +152 -0
- package/docs/zh/01_SETTINGS_REFERENCE.md +1137 -0
- package/docs/zh/02_START_RESEARCH_GUIDE.md +414 -0
- package/docs/zh/03_QQ_CONNECTOR_GUIDE.md +324 -0
- package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +230 -0
- package/docs/zh/05_TUI_GUIDE.md +128 -0
- package/docs/zh/06_RUNTIME_AND_CANVAS.md +271 -0
- package/docs/zh/07_MEMORY_AND_MCP.md +235 -0
- package/docs/zh/08_FIGURE_STYLE_GUIDE.md +97 -0
- package/docs/zh/09_DOCTOR.md +154 -0
- package/docs/zh/99_ACKNOWLEDGEMENTS.md +29 -0
- package/install.sh +41 -16
- package/package.json +5 -2
- package/pyproject.toml +1 -1
- package/src/deepscientist/__init__.py +6 -1
- package/src/deepscientist/artifact/guidance.py +9 -2
- package/src/deepscientist/artifact/service.py +1026 -39
- package/src/deepscientist/bash_exec/monitor.py +27 -5
- package/src/deepscientist/bash_exec/runtime.py +639 -0
- package/src/deepscientist/bash_exec/service.py +99 -16
- package/src/deepscientist/bridges/base.py +3 -0
- package/src/deepscientist/bridges/connectors.py +292 -13
- package/src/deepscientist/channels/qq.py +19 -2
- package/src/deepscientist/channels/relay.py +1 -0
- package/src/deepscientist/cli.py +32 -25
- package/src/deepscientist/config/models.py +28 -2
- package/src/deepscientist/config/service.py +202 -7
- package/src/deepscientist/connector_runtime.py +2 -0
- package/src/deepscientist/daemon/api/handlers.py +68 -6
- package/src/deepscientist/daemon/api/router.py +3 -0
- package/src/deepscientist/daemon/app.py +531 -15
- package/src/deepscientist/doctor.py +511 -0
- package/src/deepscientist/gitops/diff.py +3 -0
- package/src/deepscientist/home.py +26 -2
- package/src/deepscientist/latex_runtime.py +17 -4
- package/src/deepscientist/lingzhu_support.py +182 -0
- package/src/deepscientist/mcp/context.py +3 -1
- package/src/deepscientist/mcp/server.py +55 -2
- package/src/deepscientist/prompts/builder.py +222 -58
- package/src/deepscientist/quest/layout.py +2 -0
- package/src/deepscientist/quest/service.py +133 -14
- package/src/deepscientist/quest/stage_views.py +65 -1
- package/src/deepscientist/runners/codex.py +2 -0
- package/src/deepscientist/runtime_tools/__init__.py +16 -0
- package/src/deepscientist/runtime_tools/builtins.py +19 -0
- package/src/deepscientist/runtime_tools/models.py +29 -0
- package/src/deepscientist/runtime_tools/registry.py +40 -0
- package/src/deepscientist/runtime_tools/service.py +59 -0
- package/src/deepscientist/runtime_tools/tinytex.py +25 -0
- package/src/deepscientist/shared.py +44 -17
- package/src/deepscientist/tinytex.py +276 -0
- package/src/prompts/connectors/lingzhu.md +15 -0
- package/src/prompts/connectors/qq.md +121 -0
- package/src/prompts/system.md +214 -37
- package/src/skills/analysis-campaign/SKILL.md +46 -7
- package/src/skills/baseline/SKILL.md +12 -5
- package/src/skills/decision/SKILL.md +7 -5
- package/src/skills/experiment/SKILL.md +22 -5
- package/src/skills/finalize/SKILL.md +9 -5
- package/src/skills/idea/SKILL.md +6 -5
- package/src/skills/intake-audit/SKILL.md +277 -0
- package/src/skills/intake-audit/references/state-audit-template.md +41 -0
- package/src/skills/rebuttal/SKILL.md +409 -0
- package/src/skills/rebuttal/references/action-plan-template.md +63 -0
- package/src/skills/rebuttal/references/evidence-update-template.md +30 -0
- package/src/skills/rebuttal/references/response-letter-template.md +113 -0
- package/src/skills/rebuttal/references/review-matrix-template.md +55 -0
- package/src/skills/review/SKILL.md +295 -0
- package/src/skills/review/references/experiment-todo-template.md +29 -0
- package/src/skills/review/references/review-report-template.md +83 -0
- package/src/skills/review/references/revision-log-template.md +40 -0
- package/src/skills/scout/SKILL.md +6 -5
- package/src/skills/write/SKILL.md +8 -4
- package/src/tui/dist/components/WelcomePanel.js +17 -43
- package/src/tui/dist/components/messages/BashExecOperationMessage.js +3 -2
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-7v-dHngU.js → AiManusChatView-CZpg376x.js} +127 -597
- package/src/ui/dist/assets/{AnalysisPlugin-B_Xmz-KE.js → AnalysisPlugin-CtHA22g3.js} +1 -1
- package/src/ui/dist/assets/{AutoFigurePlugin-Cko-0tm1.js → AutoFigurePlugin-BSWmLMmF.js} +63 -8
- package/src/ui/dist/assets/{CliPlugin-BsU0ht7q.js → CliPlugin-CJ7jdm_s.js} +43 -609
- package/src/ui/dist/assets/{CodeEditorPlugin-DcMMP0Rt.js → CodeEditorPlugin-DhInVGFf.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-BqoQ5QyY.js → CodeViewerPlugin-D1n8S9r5.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-D7eHNhU6.js → DocViewerPlugin-C4XM_kqk.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-DLJN42T5.js → GitDiffViewerPlugin-W6kS9r6v.js} +1 -1
- package/src/ui/dist/assets/{ImageViewerPlugin-gJMV7MOu.js → ImageViewerPlugin-DPeUx_Oz.js} +5 -6
- package/src/ui/dist/assets/{LabCopilotPanel-B857sfxP.js → LabCopilotPanel-eAelUaub.js} +12 -15
- package/src/ui/dist/assets/LabPlugin-BbOrBxKY.js +2676 -0
- package/src/ui/dist/assets/{LatexPlugin-DWKEo-Wj.js → LatexPlugin-C-HhkVXY.js} +16 -16
- package/src/ui/dist/assets/{MarkdownViewerPlugin-DBzoEmhv.js → MarkdownViewerPlugin-BDIzIBfh.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-DoHc-8vo.js → MarketplacePlugin-DAOJphwr.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-CKjKH-yS.js → NotebookEditor-BsoMvDoU.js} +3 -3
- package/src/ui/dist/assets/{PdfLoader-zFoL0VPo.js → PdfLoader-fiC7RtHf.js} +1 -1
- package/src/ui/dist/assets/{PdfMarkdownPlugin-DXPaL9Nt.js → PdfMarkdownPlugin-C5OxZBFK.js} +3 -3
- package/src/ui/dist/assets/{PdfViewerPlugin-DhK8qCFp.js → PdfViewerPlugin-CAbxQebk.js} +10 -10
- package/src/ui/dist/assets/{SearchPlugin-CdSi6krf.js → SearchPlugin-SE33Lb9B.js} +1 -1
- package/src/ui/dist/assets/{Stepper-V-WiDQJl.js → Stepper-0Av7GfV7.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-hIs1Efiu.js → TextViewerPlugin-Daf2gJDI.js} +4 -4
- package/src/ui/dist/assets/{VNCViewer-DG8b0q2X.js → VNCViewer-BKrMUIOX.js} +9 -10
- package/src/ui/dist/assets/{bibtex-HDac6fVW.js → bibtex-JBdOEe45.js} +1 -1
- package/src/ui/dist/assets/{code-BnBeNxBc.js → code-B0TDFCZz.js} +1 -1
- package/src/ui/dist/assets/{file-content-IRQ3jHb8.js → file-content-3YtrSacz.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-DZoQ9I6r.js → file-diff-panel-CJEg5OG1.js} +1 -1
- package/src/ui/dist/assets/{file-socket-BMCdLc-P.js → file-socket-CYQYdmB1.js} +1 -1
- package/src/ui/dist/assets/{file-utils-CltILB3w.js → file-utils-Cd1C9Ppl.js} +1 -1
- package/src/ui/dist/assets/{image-Boe6ffhu.js → image-B33ctrvC.js} +1 -1
- package/src/ui/dist/assets/{index-2Zf65FZt.js → index-9CLPVeZh.js} +1 -1
- package/src/ui/dist/assets/{index-DZqJ-qAM.js → index-BNQWqmJ2.js} +60 -2154
- package/src/ui/dist/assets/{index-DO43pFZP.js → index-BVXsmS7V.js} +84086 -84365
- package/src/ui/dist/assets/{index-BlplpvE1.js → index-Buw_N1VQ.js} +2 -2
- package/src/ui/dist/assets/{index-Bq2bvfkl.css → index-SwmFAld3.css} +2622 -2619
- package/src/ui/dist/assets/{message-square-mUHn_Ssb.js → message-square-D0cUJ9yU.js} +1 -1
- package/src/ui/dist/assets/{monaco-fe0arNEU.js → monaco-UZLYkp2n.js} +1 -1
- package/src/ui/dist/assets/{popover-D_7i19qU.js → popover-CTeiY-dK.js} +1 -1
- package/src/ui/dist/assets/{project-sync-DyVGrU7H.js → project-sync-Dbs01Xky.js} +2 -8
- package/src/ui/dist/assets/{sigma-BzazRyxQ.js → sigma-CM08S-xT.js} +1 -1
- package/src/ui/dist/assets/{tooltip-DN_yjHFH.js → tooltip-pDtzvU9p.js} +1 -1
- package/src/ui/dist/assets/trash-YvPCP-da.js +32 -0
- package/src/ui/dist/assets/{useCliAccess-DV2L2Qxy.js → useCliAccess-Bavi74Ac.js} +12 -42
- package/src/ui/dist/assets/{useFileDiffOverlay-DyTj-p_V.js → useFileDiffOverlay-CVXY6oeg.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-ozYHtUwq.js → wrap-text-Cf4flRW7.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-BN9MUyCQ.js → zoom-out-Hb0Z1YpT.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/uv.lock +1155 -0
- package/assets/fonts/Inter-Variable.ttf +0 -0
- package/assets/fonts/NotoSerifSC-Regular-C94HN_ZN.ttf +0 -0
- package/assets/fonts/NunitoSans-Variable.ttf +0 -0
- package/assets/fonts/Satoshi-Medium-ByP-Zb-9.woff2 +0 -0
- package/assets/fonts/SourceSans3-Variable.ttf +0 -0
- package/assets/fonts/ds-fonts.css +0 -83
- package/src/ui/dist/assets/Inter-Variable-VF2RPR_K.ttf +0 -0
- package/src/ui/dist/assets/LabPlugin-bL7rpic8.js +0 -43
- package/src/ui/dist/assets/NotoSerifSC-Regular-C94HN_ZN-C94HN_ZN.ttf +0 -0
- package/src/ui/dist/assets/NunitoSans-Variable-B_ZymHAd.ttf +0 -0
- package/src/ui/dist/assets/Satoshi-Medium-ByP-Zb-9-GkA34YXu.woff2 +0 -0
- package/src/ui/dist/assets/SourceSans3-Variable-CD-WOsSK.ttf +0 -0
- package/src/ui/dist/assets/info-CcsK_htA.js +0 -18
- 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
|
|
17
|
-
-
|
|
18
|
-
-
|
|
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,
|
|
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
|
|
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', ...)`
|
|
16
|
-
- Message templates are references only. Adapt to context and vary wording so updates feel
|
|
17
|
-
-
|
|
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,
|
|
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
|
|
16
|
-
-
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
16
|
-
-
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
package/src/skills/idea/SKILL.md
CHANGED
|
@@ -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
|
|
16
|
-
-
|
|
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
|
|
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
|
|
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,
|
|
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:
|