scientify 2.1.0 → 3.1.0
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/README.en.md +21 -1
- package/README.md +27 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -77
- package/dist/index.js.map +1 -1
- package/dist/src/cli/research.d.ts.map +1 -1
- package/dist/src/cli/research.js +47 -23
- package/dist/src/cli/research.js.map +1 -1
- package/dist/src/commands/metabolism-status.d.ts.map +1 -1
- package/dist/src/commands/metabolism-status.js +5 -25
- package/dist/src/commands/metabolism-status.js.map +1 -1
- package/dist/src/commands.d.ts +8 -8
- package/dist/src/commands.d.ts.map +1 -1
- package/dist/src/commands.js +230 -243
- package/dist/src/commands.js.map +1 -1
- package/dist/src/release-gate.d.ts +14 -0
- package/dist/src/release-gate.d.ts.map +1 -0
- package/dist/src/release-gate.js +124 -0
- package/dist/src/release-gate.js.map +1 -0
- package/dist/src/templates/bootstrap.d.ts.map +1 -1
- package/dist/src/templates/bootstrap.js +157 -94
- package/dist/src/templates/bootstrap.js.map +1 -1
- package/dist/src/types.d.ts +2 -10
- package/dist/src/types.d.ts.map +1 -1
- package/openclaw.plugin.json +11 -17
- package/package.json +2 -3
- package/skills/algorithm-selection/SKILL.md +103 -0
- package/skills/algorithm-selection/references/candidate-template.md +13 -0
- package/skills/algorithm-selection/references/selection-template.md +39 -0
- package/skills/artifact-review/SKILL.md +146 -0
- package/skills/artifact-review/references/release-gate-template.md +40 -0
- package/skills/artifact-review/references/review-checklist.md +45 -0
- package/skills/artifact-review/references/style-review-checklist.md +30 -0
- package/skills/baseline-runner/SKILL.md +103 -0
- package/skills/baseline-runner/references/baseline-matrix-template.md +9 -0
- package/skills/baseline-runner/references/baseline-report-template.md +25 -0
- package/skills/dataset-validate/SKILL.md +104 -0
- package/skills/dataset-validate/references/data-validation-template.md +38 -0
- package/skills/figure-standardize/SKILL.md +110 -0
- package/skills/figure-standardize/references/caption-template.md +12 -0
- package/skills/figure-standardize/references/figure-placement-template.md +30 -0
- package/skills/figure-standardize/references/figure-style-guide.md +36 -0
- package/skills/idea-generation/SKILL.md +20 -44
- package/skills/idea-generation/references/code-mapping.md +3 -3
- package/skills/idea-generation/references/idea-template.md +1 -1
- package/skills/idea-generation/references/reading-long-papers.md +3 -3
- package/skills/metabolism/SKILL.md +80 -36
- package/skills/paper-download/SKILL.md +61 -0
- package/skills/release-layout/SKILL.md +73 -0
- package/skills/release-layout/references/page-structure.md +14 -0
- package/skills/research-collect/SKILL.md +41 -111
- package/skills/research-experiment/SKILL.md +20 -12
- package/skills/research-implement/SKILL.md +10 -11
- package/skills/research-pipeline/SKILL.md +23 -31
- package/skills/research-plan/SKILL.md +7 -11
- package/skills/research-review/SKILL.md +21 -22
- package/skills/research-survey/SKILL.md +28 -25
- package/skills/write-paper/SKILL.md +252 -0
- package/skills/write-paper/references/boundary-notes-template.md +34 -0
- package/skills/write-paper/references/claim-inventory-template.md +32 -0
- package/skills/write-paper/references/evidence-contract.md +57 -0
- package/skills/write-paper/references/figure-callout-template.md +38 -0
- package/skills/write-paper/references/figures-manifest-template.md +44 -0
- package/skills/write-paper/references/latex/README.md +22 -0
- package/skills/write-paper/references/latex/build_paper.sh +41 -0
- package/skills/write-paper/references/latex/manuscript.tex +39 -0
- package/skills/write-paper/references/latex/references.bib +10 -0
- package/skills/write-paper/references/latex/sections/ablations.tex +3 -0
- package/skills/write-paper/references/latex/sections/abstract.tex +3 -0
- package/skills/write-paper/references/latex/sections/conclusion.tex +3 -0
- package/skills/write-paper/references/latex/sections/discussion_scope.tex +7 -0
- package/skills/write-paper/references/latex/sections/experimental_protocol.tex +3 -0
- package/skills/write-paper/references/latex/sections/introduction.tex +3 -0
- package/skills/write-paper/references/latex/sections/main_results.tex +9 -0
- package/skills/write-paper/references/latex/sections/method_system.tex +3 -0
- package/skills/write-paper/references/latex/sections/problem_setup.tex +3 -0
- package/skills/write-paper/references/latex/sections/related_work.tex +3 -0
- package/skills/write-paper/references/paper-template.md +155 -0
- package/skills/write-paper/references/paragraph-contract.md +139 -0
- package/skills/write-paper/references/paragraph-examples.md +171 -0
- package/skills/write-paper/references/style-banlist.md +81 -0
- package/skills/write-review-paper/SKILL.md +22 -16
- package/skills/write-review-paper/references/note-template.md +1 -1
- package/skills/write-review-paper/references/survey-template.md +1 -1
- package/dist/src/hooks/research-mode.d.ts +0 -22
- package/dist/src/hooks/research-mode.d.ts.map +0 -1
- package/dist/src/hooks/research-mode.js +0 -35
- package/dist/src/hooks/research-mode.js.map +0 -1
- package/dist/src/hooks/scientify-cron-autofill.d.ts +0 -15
- package/dist/src/hooks/scientify-cron-autofill.d.ts.map +0 -1
- package/dist/src/hooks/scientify-cron-autofill.js +0 -156
- package/dist/src/hooks/scientify-cron-autofill.js.map +0 -1
- package/dist/src/hooks/scientify-signature.d.ts +0 -21
- package/dist/src/hooks/scientify-signature.d.ts.map +0 -1
- package/dist/src/hooks/scientify-signature.js +0 -150
- package/dist/src/hooks/scientify-signature.js.map +0 -1
- package/dist/src/knowledge-state/project.d.ts +0 -13
- package/dist/src/knowledge-state/project.d.ts.map +0 -1
- package/dist/src/knowledge-state/project.js +0 -88
- package/dist/src/knowledge-state/project.js.map +0 -1
- package/dist/src/knowledge-state/render.d.ts +0 -63
- package/dist/src/knowledge-state/render.d.ts.map +0 -1
- package/dist/src/knowledge-state/render.js +0 -368
- package/dist/src/knowledge-state/render.js.map +0 -1
- package/dist/src/knowledge-state/store.d.ts +0 -19
- package/dist/src/knowledge-state/store.d.ts.map +0 -1
- package/dist/src/knowledge-state/store.js +0 -978
- package/dist/src/knowledge-state/store.js.map +0 -1
- package/dist/src/knowledge-state/types.d.ts +0 -182
- package/dist/src/knowledge-state/types.d.ts.map +0 -1
- package/dist/src/knowledge-state/types.js +0 -2
- package/dist/src/knowledge-state/types.js.map +0 -1
- package/dist/src/literature/subscription-state.d.ts +0 -112
- package/dist/src/literature/subscription-state.d.ts.map +0 -1
- package/dist/src/literature/subscription-state.js +0 -696
- package/dist/src/literature/subscription-state.js.map +0 -1
- package/dist/src/research-subscriptions/constants.d.ts +0 -16
- package/dist/src/research-subscriptions/constants.d.ts.map +0 -1
- package/dist/src/research-subscriptions/constants.js +0 -59
- package/dist/src/research-subscriptions/constants.js.map +0 -1
- package/dist/src/research-subscriptions/cron-client.d.ts +0 -8
- package/dist/src/research-subscriptions/cron-client.d.ts.map +0 -1
- package/dist/src/research-subscriptions/cron-client.js +0 -81
- package/dist/src/research-subscriptions/cron-client.js.map +0 -1
- package/dist/src/research-subscriptions/delivery.d.ts +0 -10
- package/dist/src/research-subscriptions/delivery.d.ts.map +0 -1
- package/dist/src/research-subscriptions/delivery.js +0 -82
- package/dist/src/research-subscriptions/delivery.js.map +0 -1
- package/dist/src/research-subscriptions/handlers.d.ts +0 -6
- package/dist/src/research-subscriptions/handlers.d.ts.map +0 -1
- package/dist/src/research-subscriptions/handlers.js +0 -204
- package/dist/src/research-subscriptions/handlers.js.map +0 -1
- package/dist/src/research-subscriptions/parse.d.ts +0 -11
- package/dist/src/research-subscriptions/parse.d.ts.map +0 -1
- package/dist/src/research-subscriptions/parse.js +0 -492
- package/dist/src/research-subscriptions/parse.js.map +0 -1
- package/dist/src/research-subscriptions/prompt.d.ts +0 -5
- package/dist/src/research-subscriptions/prompt.d.ts.map +0 -1
- package/dist/src/research-subscriptions/prompt.js +0 -347
- package/dist/src/research-subscriptions/prompt.js.map +0 -1
- package/dist/src/research-subscriptions/types.d.ts +0 -66
- package/dist/src/research-subscriptions/types.d.ts.map +0 -1
- package/dist/src/research-subscriptions/types.js +0 -2
- package/dist/src/research-subscriptions/types.js.map +0 -1
- package/dist/src/research-subscriptions.d.ts +0 -2
- package/dist/src/research-subscriptions.d.ts.map +0 -1
- package/dist/src/research-subscriptions.js +0 -2
- package/dist/src/research-subscriptions.js.map +0 -1
- package/dist/src/services/auto-updater.d.ts +0 -15
- package/dist/src/services/auto-updater.d.ts.map +0 -1
- package/dist/src/services/auto-updater.js +0 -188
- package/dist/src/services/auto-updater.js.map +0 -1
- package/dist/src/tools/arxiv-download.d.ts +0 -24
- package/dist/src/tools/arxiv-download.d.ts.map +0 -1
- package/dist/src/tools/arxiv-download.js +0 -177
- package/dist/src/tools/arxiv-download.js.map +0 -1
- package/dist/src/tools/github-search-tool.d.ts +0 -25
- package/dist/src/tools/github-search-tool.d.ts.map +0 -1
- package/dist/src/tools/github-search-tool.js +0 -114
- package/dist/src/tools/github-search-tool.js.map +0 -1
- package/dist/src/tools/openreview-lookup.d.ts +0 -31
- package/dist/src/tools/openreview-lookup.d.ts.map +0 -1
- package/dist/src/tools/openreview-lookup.js +0 -414
- package/dist/src/tools/openreview-lookup.js.map +0 -1
- package/dist/src/tools/paper-browser.d.ts +0 -23
- package/dist/src/tools/paper-browser.d.ts.map +0 -1
- package/dist/src/tools/paper-browser.js +0 -121
- package/dist/src/tools/paper-browser.js.map +0 -1
- package/dist/src/tools/scientify-cron.d.ts +0 -63
- package/dist/src/tools/scientify-cron.d.ts.map +0 -1
- package/dist/src/tools/scientify-cron.js +0 -265
- package/dist/src/tools/scientify-cron.js.map +0 -1
- package/dist/src/tools/scientify-literature-state.d.ts +0 -303
- package/dist/src/tools/scientify-literature-state.d.ts.map +0 -1
- package/dist/src/tools/scientify-literature-state.js +0 -957
- package/dist/src/tools/scientify-literature-state.js.map +0 -1
- package/dist/src/tools/unpaywall-download.d.ts +0 -21
- package/dist/src/tools/unpaywall-download.d.ts.map +0 -1
- package/dist/src/tools/unpaywall-download.js +0 -169
- package/dist/src/tools/unpaywall-download.js.map +0 -1
- package/dist/src/tools/workspace.d.ts +0 -32
- package/dist/src/tools/workspace.d.ts.map +0 -1
- package/dist/src/tools/workspace.js +0 -69
- package/dist/src/tools/workspace.js.map +0 -1
- package/skills/metabolism-init/SKILL.md +0 -80
- package/skills/research-subscription/SKILL.md +0 -119
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
function isReleaseVerdict(value) {
|
|
4
|
+
return value === "HOLD" || value === "CONDITIONAL_GO" || value === "GO";
|
|
5
|
+
}
|
|
6
|
+
function normalizeStringArray(value) {
|
|
7
|
+
return Array.isArray(value)
|
|
8
|
+
? value.filter((item) => typeof item === "string" && item.length > 0)
|
|
9
|
+
: [];
|
|
10
|
+
}
|
|
11
|
+
function defaultReleaseGateInputs(workspace) {
|
|
12
|
+
const candidates = [
|
|
13
|
+
"paper/draft.md",
|
|
14
|
+
"paper/claim_inventory.md",
|
|
15
|
+
"paper/figures_manifest.md",
|
|
16
|
+
"paper/manuscript.tex",
|
|
17
|
+
"README.md",
|
|
18
|
+
"docs/index.html",
|
|
19
|
+
];
|
|
20
|
+
return candidates.filter((relativePath) => fs.existsSync(path.join(workspace, relativePath)));
|
|
21
|
+
}
|
|
22
|
+
function resolveWorkspacePath(workspace, candidate) {
|
|
23
|
+
return path.isAbsolute(candidate) ? candidate : path.join(workspace, candidate);
|
|
24
|
+
}
|
|
25
|
+
export function hasReleaseFacingArtifacts(workspace) {
|
|
26
|
+
return defaultReleaseGateInputs(workspace).length > 0;
|
|
27
|
+
}
|
|
28
|
+
export function readReleaseGateStatus(workspace) {
|
|
29
|
+
const gatePath = path.join(workspace, "review", "release_gate.json");
|
|
30
|
+
if (!fs.existsSync(gatePath)) {
|
|
31
|
+
return {
|
|
32
|
+
state: "missing",
|
|
33
|
+
gatePath,
|
|
34
|
+
checkedFiles: [],
|
|
35
|
+
staleReasons: [],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
let parsed;
|
|
39
|
+
try {
|
|
40
|
+
parsed = JSON.parse(fs.readFileSync(gatePath, "utf-8"));
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return {
|
|
44
|
+
state: "invalid",
|
|
45
|
+
gatePath,
|
|
46
|
+
checkedFiles: [],
|
|
47
|
+
staleReasons: ["release_gate.json is not valid JSON"],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (!isReleaseVerdict(parsed.release_verdict)) {
|
|
51
|
+
return {
|
|
52
|
+
state: "invalid",
|
|
53
|
+
gatePath,
|
|
54
|
+
checkedFiles: [],
|
|
55
|
+
staleReasons: ["release_gate.json is missing a valid release_verdict"],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const checkedFiles = normalizeStringArray(parsed.checked_files);
|
|
59
|
+
const freshnessInputs = normalizeStringArray(parsed.stale_if_any_newer_than);
|
|
60
|
+
const trackedInputs = freshnessInputs.length > 0
|
|
61
|
+
? freshnessInputs
|
|
62
|
+
: checkedFiles.length > 0
|
|
63
|
+
? checkedFiles
|
|
64
|
+
: defaultReleaseGateInputs(workspace);
|
|
65
|
+
const gateMtimeMs = fs.statSync(gatePath).mtimeMs;
|
|
66
|
+
const staleReasons = [];
|
|
67
|
+
for (const candidate of trackedInputs) {
|
|
68
|
+
const candidatePath = resolveWorkspacePath(workspace, candidate);
|
|
69
|
+
const displayPath = path.isAbsolute(candidate) ? candidate : candidate;
|
|
70
|
+
if (!fs.existsSync(candidatePath)) {
|
|
71
|
+
staleReasons.push(`${displayPath} is missing`);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (fs.statSync(candidatePath).mtimeMs > gateMtimeMs) {
|
|
75
|
+
staleReasons.push(`${displayPath} changed after the last gate`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
state: staleReasons.length > 0 ? "stale" : "fresh",
|
|
80
|
+
verdict: parsed.release_verdict,
|
|
81
|
+
gatePath,
|
|
82
|
+
checkedFiles,
|
|
83
|
+
staleReasons,
|
|
84
|
+
generatedAt: parsed.generated_at,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export function formatReleaseGateStatus(status) {
|
|
88
|
+
switch (status.state) {
|
|
89
|
+
case "missing":
|
|
90
|
+
return "not run";
|
|
91
|
+
case "invalid":
|
|
92
|
+
return "invalid";
|
|
93
|
+
case "stale":
|
|
94
|
+
return status.verdict ? `${status.verdict} (stale)` : "stale";
|
|
95
|
+
case "fresh":
|
|
96
|
+
return status.verdict ? `${status.verdict} (fresh)` : "fresh";
|
|
97
|
+
default:
|
|
98
|
+
return status.state;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export function getReleaseGateNextStep(workspace, status) {
|
|
102
|
+
if (!hasReleaseFacingArtifacts(workspace) && status.state === "missing") {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
switch (status.state) {
|
|
106
|
+
case "missing":
|
|
107
|
+
return "Run `/artifact-review` before sharing the current paper, figures, or release page.";
|
|
108
|
+
case "invalid":
|
|
109
|
+
return "Rerun `/artifact-review` to regenerate a valid `review/release_gate.json`.";
|
|
110
|
+
case "stale":
|
|
111
|
+
return "Rerun `/artifact-review` because one or more reviewed artifacts changed after the last gate.";
|
|
112
|
+
case "fresh":
|
|
113
|
+
if (status.verdict === "HOLD") {
|
|
114
|
+
return "Fix the blocking findings in `review/artifact_review.md`, then rerun `/artifact-review`.";
|
|
115
|
+
}
|
|
116
|
+
if (status.verdict === "CONDITIONAL_GO") {
|
|
117
|
+
return "Resolve the remaining P1 findings or explicitly accept a conditional release before sharing.";
|
|
118
|
+
}
|
|
119
|
+
return "Release gate is fresh. You can proceed to `/release-layout` or share the reviewed artifacts.";
|
|
120
|
+
default:
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=release-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-gate.js","sourceRoot":"","sources":["../../src/release-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA4D7D;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAaxD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAuIvC"}
|
|
@@ -5,63 +5,76 @@
|
|
|
5
5
|
export function renderBootstrapMd(projectName) {
|
|
6
6
|
return `# Research Agent Bootstrap
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
1.
|
|
13
|
-
2.
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
3.
|
|
18
|
-
4.
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
5.
|
|
22
|
-
-
|
|
23
|
-
6.
|
|
24
|
-
|
|
25
|
-
|
|
8
|
+
You were just created as the research agent for project "${projectName}". Complete the initial setup before starting downstream work.
|
|
9
|
+
|
|
10
|
+
## Bootstrap Flow
|
|
11
|
+
|
|
12
|
+
1. Greet the user, explain that you are the research agent for project "${projectName}", and ask them to describe the research direction.
|
|
13
|
+
2. Based on the user's answer, extract:
|
|
14
|
+
- core-domain keywords (3-5)
|
|
15
|
+
- suggested arXiv categories (for example "cs.LG", "cs.AI"); leave empty if the topic is outside arXiv coverage
|
|
16
|
+
- preferred literature sources ("arxiv", "openalex", or both)
|
|
17
|
+
3. Discuss scope and priorities with the user, confirm the configuration, and accept adjustments.
|
|
18
|
+
4. Once confirmed, write the following files:
|
|
19
|
+
- update SOUL.md with the project direction and domain fields
|
|
20
|
+
- generate config.json using the template below
|
|
21
|
+
5. Ask whether the user wants to run Day 0 immediately to build the initial knowledge state.
|
|
22
|
+
- If yes, run /metabolism to perform the first literature retrieval and knowledge-base construction pass.
|
|
23
|
+
6. If the project already has partial outputs, use the shortest matching path instead of restarting from Day 0:
|
|
24
|
+
- existing papers/ -> /research-survey
|
|
25
|
+
- existing survey_res.md, but route still undecided -> /algorithm-selection
|
|
26
|
+
- existing survey_res.md -> /research-plan
|
|
27
|
+
- existing plan_res.md, but data quality still needs review -> /dataset-validate
|
|
28
|
+
- existing plan_res.md, and matched baseline evidence is needed -> /baseline-runner
|
|
29
|
+
- existing implementation code -> /research-review
|
|
30
|
+
- existing review PASS -> /research-experiment
|
|
31
|
+
- existing experiment_res.md plus figures -> /write-paper
|
|
32
|
+
- existing paper/draft.md -> /artifact-review
|
|
33
|
+
- existing figures with inconsistent captions or style -> /figure-standardize
|
|
34
|
+
- preparing README.md or release-facing docs -> /release-layout after a fresh release gate exists
|
|
35
|
+
7. After the initial setup, tell the user the recommended next command and expected output files, then delete this file (BOOTSTRAP.md).
|
|
36
|
+
|
|
37
|
+
## Common Entry Paths
|
|
38
|
+
|
|
39
|
+
- I only have a research direction and no materials yet -> finish setup, then run /metabolism
|
|
40
|
+
- I already have a batch of papers -> run /research-survey
|
|
41
|
+
- I finished the survey but have not chosen a model route -> run /algorithm-selection
|
|
42
|
+
- I already have a plan and want to validate the data first -> run /dataset-validate
|
|
43
|
+
- I already have a plan and want honest baseline numbers first -> run /baseline-runner
|
|
44
|
+
- I already have implementation code -> run /research-review
|
|
45
|
+
- I already have experiment results and figures -> run /write-paper
|
|
46
|
+
- I already have a draft that needs review -> run /artifact-review
|
|
47
|
+
|
|
48
|
+
## config.json Template
|
|
26
49
|
|
|
27
50
|
\`\`\`json
|
|
28
51
|
{
|
|
29
52
|
"projectId": "${projectName}",
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"dateMode": "daily-new"
|
|
34
|
-
},
|
|
35
|
-
"monitorZone": {
|
|
36
|
-
"categories": ["相邻领域分类"],
|
|
37
|
-
"enabled": true
|
|
38
|
-
},
|
|
39
|
-
"heartbeat": {
|
|
40
|
-
"cronExpression": "0 6 * * *",
|
|
41
|
-
"timezone": "Asia/Shanghai",
|
|
42
|
-
"enabled": true
|
|
43
|
-
},
|
|
44
|
-
"agentId": "research-${projectName}",
|
|
53
|
+
"keywords": ["keyword-1", "keyword-2"],
|
|
54
|
+
"arxivCategories": ["cs.LG"],
|
|
55
|
+
"sources": ["arxiv", "openalex"],
|
|
45
56
|
"currentDay": 0,
|
|
57
|
+
"processed_ids": [],
|
|
46
58
|
"createdAt": "${new Date().toISOString()}"
|
|
47
59
|
}
|
|
48
60
|
\`\`\`
|
|
61
|
+
|
|
62
|
+
> **Note:** Configure \`arxivCategories\` and \`sources\` based on the research domain.
|
|
63
|
+
> For natural science, social science, or other non-CS topics, it is fine to set \`arxivCategories\` to \`[]\` and rely primarily on OpenAlex.
|
|
49
64
|
`;
|
|
50
65
|
}
|
|
51
66
|
export function renderSoulMd(projectName) {
|
|
52
67
|
return `# Project Agent — ${projectName}
|
|
53
68
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
## 研究方向
|
|
57
|
-
{由 BOOTSTRAP 流程填写}
|
|
69
|
+
You are the research agent for project "${projectName}".
|
|
58
70
|
|
|
59
|
-
##
|
|
60
|
-
|
|
61
|
-
arXiv 分类: {由 BOOTSTRAP 流程填写}
|
|
71
|
+
## Research Direction
|
|
72
|
+
{Filled during the BOOTSTRAP flow}
|
|
62
73
|
|
|
63
|
-
##
|
|
64
|
-
|
|
74
|
+
## Core Domain
|
|
75
|
+
Keywords: {Filled during the BOOTSTRAP flow}
|
|
76
|
+
arXiv Categories: {Filled during the BOOTSTRAP flow; leave empty if not applicable}
|
|
77
|
+
Literature Sources: {arXiv / OpenAlex / both}
|
|
65
78
|
`;
|
|
66
79
|
}
|
|
67
80
|
export function renderAgentsMd() {
|
|
@@ -69,85 +82,135 @@ export function renderAgentsMd() {
|
|
|
69
82
|
|
|
70
83
|
## Workspace Layout
|
|
71
84
|
|
|
72
|
-
|
|
85
|
+
The agent workspace root is the project root (\`$W\`). All files are organized relative to \`$W\`:
|
|
73
86
|
|
|
74
87
|
\`\`\`
|
|
75
88
|
$W/
|
|
76
|
-
├── SOUL.md #
|
|
77
|
-
├── AGENTS.md #
|
|
78
|
-
├──
|
|
79
|
-
|
|
80
|
-
│
|
|
81
|
-
|
|
82
|
-
│
|
|
83
|
-
│
|
|
84
|
-
│
|
|
85
|
-
|
|
86
|
-
├──
|
|
87
|
-
│
|
|
88
|
-
│
|
|
89
|
-
├──
|
|
90
|
-
│ ├──
|
|
91
|
-
│
|
|
92
|
-
│
|
|
93
|
-
├──
|
|
94
|
-
├──
|
|
95
|
-
│
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
├──
|
|
99
|
-
├──
|
|
100
|
-
├──
|
|
101
|
-
├──
|
|
102
|
-
├──
|
|
103
|
-
│
|
|
104
|
-
├──
|
|
105
|
-
|
|
89
|
+
├── SOUL.md # identity and project direction
|
|
90
|
+
├── AGENTS.md # this document
|
|
91
|
+
├── config.json # project config (keywords, categories, current day)
|
|
92
|
+
├── progress_status.json # agent-defined task progress for the current goal
|
|
93
|
+
│
|
|
94
|
+
├── papers/ # literature artifacts
|
|
95
|
+
│ ├── {arxiv_id}/ # arXiv source files
|
|
96
|
+
│ └── {doi_slug}.pdf # PDF files
|
|
97
|
+
│
|
|
98
|
+
├── knowledge/ # persistent knowledge state
|
|
99
|
+
│ ├── _index.md # global index
|
|
100
|
+
│ └── topic-*.md # topic files (limit 50)
|
|
101
|
+
│
|
|
102
|
+
├── ideas/ # hypotheses and research ideas
|
|
103
|
+
│ ├── hyp-*.md # generated hypotheses
|
|
104
|
+
│ └── selected_idea.md # selected research idea
|
|
105
|
+
│
|
|
106
|
+
├── experiments/ # experiment code and assets
|
|
107
|
+
│ ├── run.py # entry script
|
|
108
|
+
│ ├── requirements.txt
|
|
109
|
+
│ └── results/ # experiment outputs
|
|
110
|
+
│
|
|
111
|
+
├── review/ # review, audit, and writing outputs
|
|
112
|
+
├── paper/ # experiment-driven paper outputs
|
|
113
|
+
│ ├── manuscript.tex # top-level LaTeX entry
|
|
114
|
+
│ ├── build_paper.sh # PDF build script
|
|
115
|
+
│ ├── references.bib # bibliography placeholder
|
|
116
|
+
│ ├── sections/ # section-by-section TeX drafts
|
|
117
|
+
│ ├── figures/ # paper-local figures
|
|
118
|
+
│ ├── assets/ # supporting assets for paper generation
|
|
119
|
+
│ └── build/ # PDF, logs, and build errors
|
|
120
|
+
│
|
|
121
|
+
├── log/ # run logs
|
|
122
|
+
│ └── {YYYY-MM-DD}.md
|
|
123
|
+
│
|
|
124
|
+
└── skills/ # workspace skills
|
|
106
125
|
\`\`\`
|
|
107
126
|
|
|
108
127
|
## Session Context
|
|
109
128
|
|
|
110
|
-
|
|
111
|
-
- **Main session
|
|
112
|
-
- **Cron session
|
|
113
|
-
- **Spawn session
|
|
129
|
+
You may be activated in different session types:
|
|
130
|
+
- **Main session**: direct interaction with a human; can trigger orchestration skills such as \`research-pipeline\`
|
|
131
|
+
- **Cron session**: scheduled execution for recurring work such as daily metabolism
|
|
132
|
+
- **Spawn session**: dispatched by the main session (\`sessions_spawn\`) for one-off heavy tasks
|
|
114
133
|
|
|
115
|
-
|
|
134
|
+
Task instructions are injected when the session starts. Follow the injected instructions for that session.
|
|
116
135
|
|
|
117
136
|
## Conventions
|
|
118
137
|
|
|
119
138
|
### File Existence = Step Completion
|
|
120
|
-
|
|
139
|
+
Check whether the output file already exists before running a step. If it exists, skip it. This enables crash recovery and incremental progress.
|
|
121
140
|
|
|
122
141
|
### Immutability
|
|
123
|
-
|
|
142
|
+
Do not modify output files once written unless the user explicitly asks you to. Exception: \`project/\` may change during implement-review iteration.
|
|
143
|
+
|
|
144
|
+
### Progress Tracking
|
|
145
|
+
- Do not assume every project follows the same fixed stages.
|
|
146
|
+
- Define progress in \`progress_status.json\` based on the user's current goal.
|
|
147
|
+
- Update \`progress_status.json\` whenever the total task, current focus, subtask states, or next step changes.
|
|
148
|
+
- Recommended fields: \`overall_goal\`, \`current_focus\`, \`next_step\`, \`completed_tasks\`, \`total_tasks\`, \`subtasks\`.
|
|
124
149
|
|
|
125
150
|
### Knowledge File Rules
|
|
126
|
-
- knowledge
|
|
127
|
-
-
|
|
128
|
-
- _index.md
|
|
129
|
-
- topic
|
|
151
|
+
- Files under \`knowledge/\` are persistent knowledge state and must be edited carefully.
|
|
152
|
+
- Always read the current file before updating it.
|
|
153
|
+
- \`_index.md\` is the global index and must stay in sync with the topic files.
|
|
154
|
+
- Limit topic files to 50. Merge or archive low-activity topics when needed.
|
|
130
155
|
|
|
131
156
|
## Research Rigor
|
|
132
157
|
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
158
|
+
- Read the source material first, think second, answer third.
|
|
159
|
+
- Do not fabricate citations or experiment results. Every claim needs a source.
|
|
160
|
+
- Say "uncertain" when uncertain instead of guessing.
|
|
161
|
+
- Read the full paper source (\`.tex\`) when available; do not rely on the abstract alone.
|
|
162
|
+
- Ground ideas in real papers rather than unsupported intuition.
|
|
138
163
|
|
|
139
164
|
## Skill Outputs Summary
|
|
140
165
|
|
|
141
166
|
| Skill | Primary Outputs |
|
|
142
167
|
|-------|-----------------|
|
|
143
|
-
| /
|
|
144
|
-
| /research-
|
|
168
|
+
| /metabolism | Day 0: config.json, knowledge/ / Day 1+: papers/, knowledge/, ideas/hyp-*.md, log/ |
|
|
169
|
+
| /research-collect | papers/ |
|
|
170
|
+
| /research-survey | knowledge/, survey_res.md |
|
|
171
|
+
| /algorithm-selection | selection_res.md |
|
|
145
172
|
| /research-plan | plan_res.md |
|
|
146
|
-
| /
|
|
147
|
-
| /
|
|
148
|
-
| /research-
|
|
173
|
+
| /dataset-validate | data_validation.md |
|
|
174
|
+
| /baseline-runner | baseline_res.md, experiments/baselines/ |
|
|
175
|
+
| /research-implement | experiments/ |
|
|
176
|
+
| /research-review | experiments/review/ |
|
|
177
|
+
| /research-experiment | experiments/results/, experiment_res.md |
|
|
149
178
|
| /idea-generation | ideas/ |
|
|
150
179
|
| /write-review-paper | review/ |
|
|
180
|
+
| /write-paper | paper/claim_inventory.md, paper/figures_manifest.md, paper/draft.md, paper/manuscript.tex, paper/build/manuscript.pdf |
|
|
181
|
+
| /artifact-review | review/artifact_review.md, review/release_checklist.md, review/release_gate.json |
|
|
182
|
+
| /figure-standardize | reports/figures/figure_spec.md or project/figures/figure_spec.md |
|
|
183
|
+
| /release-layout | README.md, docs/index.html, release-facing pages |
|
|
184
|
+
|
|
185
|
+
## Common ML Midstream Paths
|
|
186
|
+
|
|
187
|
+
- Survey exists but route choice is still unclear:
|
|
188
|
+
- run \`/algorithm-selection\`
|
|
189
|
+
- expected output: \`selection_res.md\`
|
|
190
|
+
- Plan exists and the project needs a dedicated data-quality check:
|
|
191
|
+
- run \`/dataset-validate\`
|
|
192
|
+
- expected output: \`data_validation.md\`
|
|
193
|
+
- Plan exists and the project needs honest comparison numbers:
|
|
194
|
+
- run \`/baseline-runner\`
|
|
195
|
+
- expected outputs: \`baseline_res.md\`, optional baseline artifacts under \`experiments/baselines/\`
|
|
196
|
+
|
|
197
|
+
## Writing and Release Entry Points
|
|
198
|
+
|
|
199
|
+
Use these entry points when the project already has partial outputs and does not need to restart the full research pipeline:
|
|
200
|
+
|
|
201
|
+
- If you already have \`experiment_res.md\` and one or more result figures:
|
|
202
|
+
- run \`/write-paper\`
|
|
203
|
+
- expected outputs: \`paper/claim_inventory.md\`, \`paper/figures_manifest.md\`, \`paper/draft.md\`, \`paper/manuscript.tex\`, \`paper/build/manuscript.pdf\`
|
|
204
|
+
- If you already have \`paper/draft.md\` or another draft artifact that is about to be shared:
|
|
205
|
+
- run \`/artifact-review\`
|
|
206
|
+
- expected outputs: \`review/artifact_review.md\`, \`review/release_checklist.md\`, \`review/release_gate.json\`
|
|
207
|
+
- If you already have figures but their style, captioning, units, or evidence labels are inconsistent:
|
|
208
|
+
- run \`/figure-standardize\`
|
|
209
|
+
- expected outputs: figure specs, caption updates, and standardized release-facing figures
|
|
210
|
+
- If you are preparing a \`README.md\` or release-facing page for sharing:
|
|
211
|
+
- run \`/release-layout\`
|
|
212
|
+
- expected outputs: README updates, docs landing-page updates, and clearer release entry surfaces
|
|
213
|
+
- do this only after \`/artifact-review\` has produced a fresh release gate for the current artifacts
|
|
151
214
|
`;
|
|
152
215
|
}
|
|
153
216
|
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO;;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO;;2DAEkD,WAAW;;;;0EAII,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwCnE,WAAW;;;;;;kBAMX,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;;CAMzC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,qBAAqB,WAAW;;0CAEC,WAAW;;;;;;;;;CASpD,CAAC;AACF,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqIR,CAAC;AACF,CAAC"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Re-export SDK types and derive types not directly exported.
|
|
3
|
-
*
|
|
4
|
-
* OpenClaw plugin-entry exports OpenClawPluginApi, PluginCommandContext,
|
|
5
|
-
* PluginLogger, etc. — but not PluginRuntime, PluginCommandResult, or
|
|
6
|
-
* RunCommandResult. We derive those from the exported interfaces.
|
|
7
3
|
*/
|
|
8
|
-
import type { OpenClawPluginApi, PluginCommandContext,
|
|
9
|
-
export type { OpenClawPluginApi, PluginCommandContext
|
|
10
|
-
/** Derived from OpenClawPluginApi["runtime"] */
|
|
11
|
-
export type PluginRuntime = OpenClawPluginApi["runtime"];
|
|
4
|
+
import type { OpenClawPluginApi, PluginCommandContext, OpenClawPluginCommandDefinition } from "openclaw/plugin-sdk/plugin-entry";
|
|
5
|
+
export type { OpenClawPluginApi, PluginCommandContext };
|
|
12
6
|
/** Derived from the return type of command handlers */
|
|
13
7
|
export type PluginCommandResult = Awaited<ReturnType<OpenClawPluginCommandDefinition["handler"]>>;
|
|
14
|
-
/** Derived from runtime.system.runCommandWithTimeout return type */
|
|
15
|
-
export type RunCommandResult = Awaited<ReturnType<PluginRuntime["system"]["runCommandWithTimeout"]>>;
|
|
16
8
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,+BAA+B,EAChC,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AAExD,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,UAAU,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC,CACvD,CAAC"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,25 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "scientify",
|
|
3
3
|
"name": "Scientify",
|
|
4
|
-
"description": "AI
|
|
4
|
+
"description": "Continuous AI research workflow for survey, planning, implementation, review, experimentation, and writing",
|
|
5
5
|
"configSchema": {
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
|
-
"properties": {
|
|
9
|
-
"autoUpdate": {
|
|
10
|
-
"type": "boolean",
|
|
11
|
-
"default": true,
|
|
12
|
-
"description": "Automatically check and install updates (default: true)"
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"uiHints": {
|
|
17
|
-
"autoUpdate": {
|
|
18
|
-
"label": "Auto Update",
|
|
19
|
-
"description": "Silently check for and install Scientify updates"
|
|
20
|
-
}
|
|
8
|
+
"properties": {}
|
|
21
9
|
},
|
|
22
10
|
"skills": [
|
|
11
|
+
"skills/algorithm-selection",
|
|
12
|
+
"skills/baseline-runner",
|
|
13
|
+
"skills/dataset-validate",
|
|
23
14
|
"skills/idea-generation",
|
|
24
15
|
"skills/research-pipeline",
|
|
25
16
|
"skills/research-survey",
|
|
@@ -28,9 +19,12 @@
|
|
|
28
19
|
"skills/research-review",
|
|
29
20
|
"skills/research-experiment",
|
|
30
21
|
"skills/research-collect",
|
|
22
|
+
"skills/paper-download",
|
|
31
23
|
"skills/write-review-paper",
|
|
32
|
-
"skills/
|
|
33
|
-
"skills/
|
|
34
|
-
"skills/
|
|
24
|
+
"skills/write-paper",
|
|
25
|
+
"skills/artifact-review",
|
|
26
|
+
"skills/figure-standardize",
|
|
27
|
+
"skills/release-layout",
|
|
28
|
+
"skills/metabolism"
|
|
35
29
|
]
|
|
36
30
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scientify",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Scientify - AI-powered research workflow automation for OpenClaw. Includes idea generation, literature review, research pipeline skills, and arxiv tool.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -40,8 +40,7 @@
|
|
|
40
40
|
"release": "npm version patch && git push && git push --tags"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@sinclair/typebox": "^0.32.0"
|
|
44
|
-
"tar": "^7.0.0"
|
|
43
|
+
"@sinclair/typebox": "^0.32.0"
|
|
45
44
|
},
|
|
46
45
|
"devDependencies": {
|
|
47
46
|
"@semantic-release/changelog": "^6.0.3",
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: algorithm-selection
|
|
3
|
+
description: "Use this when the user needs to choose between multiple ML routes after survey but before committing to implementation. Compares candidate approaches, selects one, records rejected routes, and keeps a fallback."
|
|
4
|
+
metadata:
|
|
5
|
+
{
|
|
6
|
+
"openclaw":
|
|
7
|
+
{
|
|
8
|
+
"emoji": "🧭",
|
|
9
|
+
},
|
|
10
|
+
}
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Algorithm Selection
|
|
14
|
+
|
|
15
|
+
**Don't ask permission. Just do it.**
|
|
16
|
+
|
|
17
|
+
Use this skill after `/research-survey` when there are several plausible ML approaches and the project needs a deliberate route choice instead of jumping straight into implementation.
|
|
18
|
+
|
|
19
|
+
Outputs go to the workspace root.
|
|
20
|
+
|
|
21
|
+
## Use This When
|
|
22
|
+
|
|
23
|
+
- `survey_res.md` already exists
|
|
24
|
+
- there are at least 2 plausible methods or model families
|
|
25
|
+
- the user wants a chosen route plus backups
|
|
26
|
+
|
|
27
|
+
## Do Not Use This When
|
|
28
|
+
|
|
29
|
+
- the project has no survey yet
|
|
30
|
+
- the team already decided the model route and only needs implementation details
|
|
31
|
+
|
|
32
|
+
## Required Inputs
|
|
33
|
+
|
|
34
|
+
- `SOUL.md`
|
|
35
|
+
- `survey_res.md`
|
|
36
|
+
- `knowledge/paper_*.md` when available
|
|
37
|
+
|
|
38
|
+
If `survey_res.md` is missing, stop and say: `Run /research-survey first to complete the deep analysis.`
|
|
39
|
+
|
|
40
|
+
## Required Output
|
|
41
|
+
|
|
42
|
+
- `selection_res.md`
|
|
43
|
+
|
|
44
|
+
## Workflow
|
|
45
|
+
|
|
46
|
+
### Step 1: Read the Current Project Direction
|
|
47
|
+
|
|
48
|
+
Read:
|
|
49
|
+
|
|
50
|
+
- `SOUL.md`
|
|
51
|
+
- `survey_res.md`
|
|
52
|
+
- relevant `knowledge/paper_*.md`
|
|
53
|
+
|
|
54
|
+
Extract:
|
|
55
|
+
|
|
56
|
+
- the task and evaluation target
|
|
57
|
+
- method families mentioned in survey
|
|
58
|
+
- constraints such as compute, data, latency, interpretability, or deployment needs
|
|
59
|
+
|
|
60
|
+
### Step 2: Build 2-3 Candidate Routes
|
|
61
|
+
|
|
62
|
+
Create 2-3 realistic candidate routes only. For each route, record:
|
|
63
|
+
|
|
64
|
+
- route name
|
|
65
|
+
- core idea
|
|
66
|
+
- supporting papers
|
|
67
|
+
- expected strengths
|
|
68
|
+
- expected risks
|
|
69
|
+
- implementation cost
|
|
70
|
+
- baseline compatibility
|
|
71
|
+
|
|
72
|
+
Use `references/candidate-template.md`.
|
|
73
|
+
|
|
74
|
+
### Step 3: Select One Route and Keep Backups
|
|
75
|
+
|
|
76
|
+
Choose:
|
|
77
|
+
|
|
78
|
+
- one `Chosen Route`
|
|
79
|
+
- one or more `Rejected Routes`
|
|
80
|
+
- one `Fallback Route`
|
|
81
|
+
|
|
82
|
+
The fallback should be the route most likely to work if the chosen route underperforms or proves too expensive to implement.
|
|
83
|
+
|
|
84
|
+
### Step 4: Write `selection_res.md`
|
|
85
|
+
|
|
86
|
+
Use `references/selection-template.md`.
|
|
87
|
+
|
|
88
|
+
The final output must include:
|
|
89
|
+
|
|
90
|
+
- project goal
|
|
91
|
+
- decision criteria
|
|
92
|
+
- candidate options table
|
|
93
|
+
- chosen route
|
|
94
|
+
- rejected routes
|
|
95
|
+
- fallback route
|
|
96
|
+
- next recommended command
|
|
97
|
+
|
|
98
|
+
## Rules
|
|
99
|
+
|
|
100
|
+
1. Do not present only one route unless the survey truly leaves no meaningful alternative.
|
|
101
|
+
2. Every route must cite at least one paper or survey-derived basis.
|
|
102
|
+
3. The chosen route must match the project constraints in `SOUL.md`.
|
|
103
|
+
4. The fallback route must be different from the chosen route.
|