This file is a lightweight final-mile guide.
It is not a second router that requires reading the rest of references/.
For normal runs, SKILL.md plus the generated synthesis_bundle.json is the required context; use topic references only when a specific stage needs more detail.
-
Run
scripts/run_pipeline.pyfrom the resolved paper input. This should produce deterministic artifacts such as metadata,source_manifest.json,raw_sections.jsonl, PDF assets, figure/table decisions, andsynthesis_bundle.json. -
Read
synthesis_bundle.jsondirectly. Inspect:coveragesource_manifestsource_indexreferences.candidatesfigure_planfigure_table_manifestpdf_assetswriting_contractThen read the canonical raw source records named bysource_manifest.raw_sections_path.
-
Create the canonical planning artifact before drafting. The canonical artifact is a short JSON file such as
<note>.plan.jsonor a run-scoped*_note_plan.json. Pass it toscripts/lint_note.py --plan-file ...when linting. In interactive contexts, a compact<note_plan>...</note_plan>block may additionally be shown as display-only context, but it does not replace the JSON file. Keep the plan short, structured, and inspectable; do not expose a verbose chain-of-thought transcript. Choosenote_plan.paper_typefromwriting_contract.paper_type_selection.allowed_paper_typesbefore drafting. For substantive sections, includeevidence_sourcesas validsection_idvalues or valid page ranges from the source manifest. Also include the analysis coverage fields required by the writing contract:central_claims: each item statesclaim,supporting_evidence,what_it_actually_proves, andwhat_it_does_not_proveclaim_boundaries: boundaries that the final note must not overstatenegative_or_limiting_results: ablations, null results, weaker tasks, author limitations, or explicit "not reported" gaps that constrain the conclusionmechanism_result_map: paper-specific links from mechanisms, protocols, constructs, or data decisions to the result pattern or diagnostic evidence they explaincomparative_positioning: how the paper differs from strong baselines, prior routes, human/clinical references, or obvious alternatives, and why that difference mattersreuse_takeaways: research or engineering takeaways that are specific enough to use laterfollowup_questions: concrete replication, engineering, research, or validity checks to carry forward
-
Run
scripts/lint_grounding.py --note-plan ... --source-manifest ... --bundle-json ... --figure-decisions .... Do this before drafting from the plan. Old broad references such assynthesis_bundle.evidence.method_evidenceare invalid. -
Draft the note in Chinese from the bundle, raw source records, and the explicit plan. The model must decide emphasis, contribution, mechanism, limitations, formula needs, figure semantics, and natural Chinese phrasing. Do not copy the bundle mechanically or treat script heuristics as conclusions.
-
Finish the figure decision inside the same task. Start from semantic placeholders. Insert a real image only when identity match and visual usability are both strong; otherwise keep the placeholder. If a real image is selected, the final note must reference the selected
images/<filename>path and the save step must receive--figure-decisions. In the final note, inserted real images must be an embed followed by one italic caption line, without a redundant[!figure]callout for the same figure. -
Run
scripts/lint_note.py. If lint fails, revise and rerun it before saving. -
After the first successful lint pass, perform
final_quality_review. This is a required analytical reread against the plan and source evidence. Check that the note covers the central evidence chain, key settings and numbers, mechanism-to-result explanations, comparative positioning, Discussion/Limitations conclusions, proven-versus-unproven boundaries, and paper-specific reusable takeaways or follow-up questions. This review may return to the source records and revise missing analytical content, but it must not invent facts. -
After
final_quality_reviewpasses, performfinal_readability_review. This is a required full-note reread for language and expression only. It may smooth awkward prose, remove stiff translations, and rewrite ordinary English phrase leftovers into natural Chinese. It must not invent facts, change core numbers, or flatten the note into a safer but shallower summary. If either final review edits the note, rerun lint. -
Save only after lint passes and both final reviews are complete. If an Obsidian vault is configured, it is the required target. The save step should create the paper-local
images/directory even when no real image was inserted. Whenfigure_table_decisions.jsoncontainsinsertrows, pass it towrite_obsidian_note.py --figure-decisions ...; the writer copies those selected images and refuses the save if the note does not reference them.
Required JSON keys:
paper_typepaper_type_rationaledominant_domainmust_coverkey_numbersreal_comparisonscentral_claimsclaim_boundariesnegative_or_limiting_resultsmechanism_result_mapcomparative_positioningreuse_takeawaysfollowup_questionssection_plan
The plan should state which sections need depth, which claims are supported by which source evidence, what those claims do and do not prove, which comparisons and numbers matter, how mechanisms or protocols explain the result pattern, how the paper is positioned against alternatives, whether formulas are needed, which limiting results or missing evidence constrain the conclusion, which figure/table placeholders are important, which takeaways are reusable beyond the current paper, and which follow-up checks a reader should keep.
Use completion language precisely:
- say
已生成草稿when drafting is done but lint, readability review, or save is still pending - say
已通过校验only when lint actually ran and passed - say
已保存到 Obsidianonly when the formal write step actually succeeded - say
笔记已完成only when the required workflow is actually complete
Do not treat temporary Markdown files, partial figure work, or incomplete downstream stages as equivalent to a finished DeepPaperNote run.