superlab 0.1.66 → 0.1.68
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/lib/i18n.cjs +0 -6
- package/lib/lab_write_contract.json +4 -4
- package/package-assets/claude/commands/lab/write.md +2 -1
- package/package-assets/claude/commands/lab-write.md +2 -1
- package/package-assets/claude/commands/lab:write.md +2 -1
- package/package-assets/claude/commands/lab/357/274/232write.md +2 -1
- package/package-assets/codex/prompts/lab/write.md +2 -1
- package/package-assets/codex/prompts/lab-write.md +2 -1
- package/package-assets/codex/prompts/lab:write.md +2 -1
- package/package-assets/codex/prompts/lab/357/274/232write.md +2 -1
- package/package-assets/shared/lab/.managed/scripts/validate_manuscript_delivery.py +119 -83
- package/package-assets/shared/lab/.managed/scripts/validate_paper_plan.py +2 -0
- package/package-assets/shared/lab/.managed/scripts/validate_reference_consumption.py +348 -0
- package/package-assets/shared/lab/.managed/scripts/validate_section_draft.py +70 -141
- package/package-assets/shared/lab/.managed/templates/paper-figure.tex +2 -1
- package/package-assets/shared/lab/.managed/templates/paper-plan.md +4 -4
- package/package-assets/shared/lab/.managed/templates/reference-consumption-plan.md +41 -0
- package/package-assets/shared/lab/.managed/templates/write-iteration.md +17 -27
- package/package-assets/shared/skills/lab/SKILL.md +6 -1
- package/package-assets/shared/skills/lab/references/paper-writing/examples/experiments/figure-placeholder-and-discussion.md +10 -6
- package/package-assets/shared/skills/lab/references/paper-writing/examples/experiments-examples.md +1 -1
- package/package-assets/shared/skills/lab/references/paper-writing/section-style-policies.md +12 -0
- package/package-assets/shared/skills/lab/stages/write.md +32 -20
- package/package.json +1 -1
- package/package-assets/shared/lab/.managed/scripts/extract_reference_paper_structure.py +0 -1200
- package/package-assets/shared/lab/.managed/templates/reference-template-intake.md +0 -50
|
@@ -91,14 +91,6 @@ def has_meaningful_field_value(value: str) -> bool:
|
|
|
91
91
|
return normalized not in {"", "-", "n/a", "na", "none", "no", "not applicable", "null", "false"}
|
|
92
92
|
|
|
93
93
|
|
|
94
|
-
def latest_write_iteration(project_root: Path) -> Path | None:
|
|
95
|
-
iteration_dir = project_root / ".lab" / "writing" / "iterations"
|
|
96
|
-
if not iteration_dir.exists():
|
|
97
|
-
return None
|
|
98
|
-
iteration_files = sorted(iteration_dir.glob("*.md"))
|
|
99
|
-
return iteration_files[-1] if iteration_files else None
|
|
100
|
-
|
|
101
|
-
|
|
102
94
|
SECTION_STYLE_WARNINGS = {
|
|
103
95
|
"abstract": [
|
|
104
96
|
(
|
|
@@ -206,13 +198,73 @@ SECTION_STYLE_WARNINGS = {
|
|
|
206
198
|
],
|
|
207
199
|
}
|
|
208
200
|
|
|
201
|
+
SERVICE_STYLE_PHRASES = (
|
|
202
|
+
"user asked",
|
|
203
|
+
"the user asked",
|
|
204
|
+
"as requested by the user",
|
|
205
|
+
"let me explain",
|
|
206
|
+
"i will explain",
|
|
207
|
+
"below i",
|
|
208
|
+
"用户说",
|
|
209
|
+
"用户要求",
|
|
210
|
+
"按你的要求",
|
|
211
|
+
"我来解释",
|
|
212
|
+
"我会说明",
|
|
213
|
+
"下面我",
|
|
214
|
+
"这版",
|
|
215
|
+
"已完成",
|
|
216
|
+
"已按",
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
WORKFLOW_ONLY_MANUSCRIPT_PHRASES = (
|
|
220
|
+
"figure intent",
|
|
221
|
+
"asset intent",
|
|
222
|
+
"placeholder",
|
|
223
|
+
"workflow-language",
|
|
224
|
+
"translation layer",
|
|
225
|
+
"review layer",
|
|
226
|
+
"图的意图",
|
|
227
|
+
"资产意图",
|
|
228
|
+
"占位符",
|
|
229
|
+
"工作流语言",
|
|
230
|
+
"同步到",
|
|
231
|
+
)
|
|
232
|
+
INTERNAL_EXPERIMENT_PROVENANCE_PHRASES = (
|
|
233
|
+
"tuning run",
|
|
234
|
+
"tuning runs",
|
|
235
|
+
"historical probe",
|
|
236
|
+
"rank-margin probe",
|
|
237
|
+
"rerun id",
|
|
238
|
+
"run id",
|
|
239
|
+
"实验包",
|
|
240
|
+
"历史 probe",
|
|
241
|
+
"调参运行",
|
|
242
|
+
"调参轮次",
|
|
243
|
+
)
|
|
244
|
+
INTERNAL_CONFIG_LABEL_PATTERN = re.compile(
|
|
245
|
+
r"\b[a-z]{1,4}\d+(?:[-_][a-z]?\d+(?:\.\d+)?){1,4}\b",
|
|
246
|
+
flags=re.IGNORECASE,
|
|
247
|
+
)
|
|
248
|
+
|
|
209
249
|
|
|
210
250
|
def check_common_section_gate_risks(text: str, issues: list[str]):
|
|
211
251
|
prose_text = strip_latex_commands(text)
|
|
252
|
+
if contains_any(prose_text, SERVICE_STYLE_PHRASES):
|
|
253
|
+
issues.append(
|
|
254
|
+
"service-style or AI-assistant meta language appears in reader-facing prose; rewrite it as academic manuscript text"
|
|
255
|
+
)
|
|
256
|
+
if contains_any(prose_text, WORKFLOW_ONLY_MANUSCRIPT_PHRASES):
|
|
257
|
+
issues.append(
|
|
258
|
+
"workflow-only placeholder language appears in reader-facing prose; move authoring notes out of the manuscript"
|
|
259
|
+
)
|
|
212
260
|
if re.search(r"\b[a-z0-9]+(?:_[a-z0-9]+)+\b", prose_text):
|
|
213
261
|
issues.append(
|
|
214
262
|
"reader-facing prose appears to contain internal identifier-like tokens; map them once for the reader and move them back out of prose before more polishing"
|
|
215
263
|
)
|
|
264
|
+
if contains_any(prose_text, INTERNAL_EXPERIMENT_PROVENANCE_PHRASES) or INTERNAL_CONFIG_LABEL_PATTERN.search(prose_text):
|
|
265
|
+
issues.append(
|
|
266
|
+
"reader-facing prose appears to contain internal experiment provenance or tuning/config labels; move run provenance to workflow notes or map it to paper-facing diagnostic terminology"
|
|
267
|
+
)
|
|
216
268
|
if contains_any(
|
|
217
269
|
prose_text,
|
|
218
270
|
(
|
|
@@ -310,6 +362,16 @@ def check_neighbor_asset_files(section: str, section_path: Path, issues: list[st
|
|
|
310
362
|
issues.append(
|
|
311
363
|
f"{section} section is missing the required paper-layer asset file: {asset_path.as_posix()}"
|
|
312
364
|
)
|
|
365
|
+
continue
|
|
366
|
+
asset_text = strip_latex_commands(read_text(asset_path))
|
|
367
|
+
if contains_any(asset_text, SERVICE_STYLE_PHRASES):
|
|
368
|
+
issues.append(
|
|
369
|
+
f"{asset_path.as_posix()} contains service-style or AI-assistant meta language; rewrite it as paper-facing asset text"
|
|
370
|
+
)
|
|
371
|
+
if contains_any(asset_text, WORKFLOW_ONLY_MANUSCRIPT_PHRASES):
|
|
372
|
+
issues.append(
|
|
373
|
+
f"{asset_path.as_posix()} contains workflow-only placeholder language; move authoring notes out of captions and paper-facing asset text"
|
|
374
|
+
)
|
|
313
375
|
|
|
314
376
|
|
|
315
377
|
def check_paper_topology_targeting(section_path: Path, issues: list[str]):
|
|
@@ -440,32 +502,6 @@ def check_active_paper_topology(section_path: Path, issues: list[str]):
|
|
|
440
502
|
issues.extend(validate_topology_artifacts(project_root))
|
|
441
503
|
|
|
442
504
|
|
|
443
|
-
def check_reference_template_intake(section_path: Path, issues: list[str]):
|
|
444
|
-
project_root = find_project_root(section_path)
|
|
445
|
-
if project_root is None:
|
|
446
|
-
return
|
|
447
|
-
|
|
448
|
-
reference_root = project_root / ".lab" / "writing" / "reference-patterns"
|
|
449
|
-
aggregate_playbook = reference_root / "aggregate-template-playbook.md"
|
|
450
|
-
legacy_notes_root = project_root / ".lab" / "writing" / "pdf-structure-notes"
|
|
451
|
-
has_legacy_notes = legacy_notes_root.exists() and any(legacy_notes_root.glob("*"))
|
|
452
|
-
|
|
453
|
-
latest_iteration = latest_write_iteration(project_root)
|
|
454
|
-
reference_sources = ""
|
|
455
|
-
if latest_iteration:
|
|
456
|
-
iteration_text = read_text(latest_iteration)
|
|
457
|
-
reference_sources = extract_markdown_field(
|
|
458
|
-
iteration_text,
|
|
459
|
-
"Reference Template Intake",
|
|
460
|
-
"Reference sources used:",
|
|
461
|
-
)
|
|
462
|
-
|
|
463
|
-
if (has_legacy_notes or has_meaningful_field_value(reference_sources)) and not aggregate_playbook.exists():
|
|
464
|
-
issues.append(
|
|
465
|
-
"reference papers appear to be used without .lab/writing/reference-patterns/aggregate-template-playbook.md; run extract_reference_paper_structure.py and use structured section/visual templates instead of legacy pdf-structure-notes"
|
|
466
|
-
)
|
|
467
|
-
|
|
468
|
-
|
|
469
505
|
def check_abstract(text: str, issues: list[str]):
|
|
470
506
|
numbers = re.findall(r"\b\d+(?:\.\d+)?\b", text)
|
|
471
507
|
if len(numbers) > 6:
|
|
@@ -538,100 +574,6 @@ def check_method(text: str, issues: list[str]):
|
|
|
538
574
|
issues.append("method should explain the technical advantage")
|
|
539
575
|
|
|
540
576
|
|
|
541
|
-
def has_performance_claim(text: str) -> bool:
|
|
542
|
-
return contains_any(
|
|
543
|
-
text,
|
|
544
|
-
(
|
|
545
|
-
"outperform",
|
|
546
|
-
"outperforms",
|
|
547
|
-
"improve",
|
|
548
|
-
"improves",
|
|
549
|
-
"improved",
|
|
550
|
-
"gain",
|
|
551
|
-
"gains",
|
|
552
|
-
"better",
|
|
553
|
-
"stronger",
|
|
554
|
-
"superior",
|
|
555
|
-
"state-of-the-art",
|
|
556
|
-
"sota",
|
|
557
|
-
"reduce",
|
|
558
|
-
"reduces",
|
|
559
|
-
"降低",
|
|
560
|
-
"提升",
|
|
561
|
-
"优于",
|
|
562
|
-
"超过",
|
|
563
|
-
"更好",
|
|
564
|
-
"增益",
|
|
565
|
-
),
|
|
566
|
-
)
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
def has_numeric_or_table_evidence(text: str) -> bool:
|
|
570
|
-
if re.search(r"\b\d+\.\d+\b", text):
|
|
571
|
-
return True
|
|
572
|
-
if re.search(r"\b\d+(?:\.\d+)?\s*(?:%|pp|points?|AUUC|Qini|AUC|F1)\b", text, flags=re.IGNORECASE):
|
|
573
|
-
return True
|
|
574
|
-
if r"\pm" in text:
|
|
575
|
-
return True
|
|
576
|
-
return bool(
|
|
577
|
-
re.search(r"\\(?:auto|c|C)?ref\{(?:tab|fig):", text)
|
|
578
|
-
or re.search(r"\b(?:Table|Figure|Fig\.|表|图)~?\\ref\{", text)
|
|
579
|
-
)
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
def has_generic_comparator_without_anchor(text: str) -> bool:
|
|
583
|
-
generic_comparator = contains_any(
|
|
584
|
-
text,
|
|
585
|
-
(
|
|
586
|
-
"previous methods",
|
|
587
|
-
"prior methods",
|
|
588
|
-
"existing methods",
|
|
589
|
-
"several baselines",
|
|
590
|
-
"the baselines",
|
|
591
|
-
"baseline suite",
|
|
592
|
-
"previous work",
|
|
593
|
-
"prior work",
|
|
594
|
-
"现有方法",
|
|
595
|
-
"已有方法",
|
|
596
|
-
"若干基线",
|
|
597
|
-
"基线集合",
|
|
598
|
-
),
|
|
599
|
-
)
|
|
600
|
-
if not generic_comparator:
|
|
601
|
-
return False
|
|
602
|
-
if r"\cite{" in text or r"\citet{" in text or r"\citep{" in text:
|
|
603
|
-
return False
|
|
604
|
-
return not bool(re.search(r"\b[A-Z][A-Za-z0-9-]{2,}(?:\s*,\s*[A-Z][A-Za-z0-9-]{2,})+", text))
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
def has_repeated_split_protocol(text: str) -> bool:
|
|
608
|
-
return bool(
|
|
609
|
-
re.search(r"\b\d+\s+(?:random\s+)?(?:splits|seeds|runs)\b", text, flags=re.IGNORECASE)
|
|
610
|
-
or re.search(r"\bacross\s+(?:random\s+)?(?:splits|seeds|runs)\b", text, flags=re.IGNORECASE)
|
|
611
|
-
or re.search(r"\b重复\s*\d+\s*次", text)
|
|
612
|
-
)
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
def has_variance_report(text: str) -> bool:
|
|
616
|
-
return contains_any(
|
|
617
|
-
text,
|
|
618
|
-
(
|
|
619
|
-
r"\pm",
|
|
620
|
-
"standard deviation",
|
|
621
|
-
"std",
|
|
622
|
-
"confidence interval",
|
|
623
|
-
"confidence intervals",
|
|
624
|
-
"ci",
|
|
625
|
-
"variance",
|
|
626
|
-
"mean",
|
|
627
|
-
"平均",
|
|
628
|
-
"标准差",
|
|
629
|
-
"置信区间",
|
|
630
|
-
"方差",
|
|
631
|
-
),
|
|
632
|
-
)
|
|
633
|
-
|
|
634
|
-
|
|
635
577
|
def check_experiments(text: str, issues: list[str]):
|
|
636
578
|
if not contains_any(
|
|
637
579
|
text,
|
|
@@ -659,18 +601,6 @@ def check_experiments(text: str, issues: list[str]):
|
|
|
659
601
|
),
|
|
660
602
|
):
|
|
661
603
|
issues.append("experiments should include benchmark scene notes")
|
|
662
|
-
if has_performance_claim(text) and not has_numeric_or_table_evidence(text):
|
|
663
|
-
issues.append(
|
|
664
|
-
"experiment performance claims should tie to concrete metric or numeric evidence instead of prose-only claims"
|
|
665
|
-
)
|
|
666
|
-
if has_generic_comparator_without_anchor(text):
|
|
667
|
-
issues.append(
|
|
668
|
-
"experiments use generic comparator names; name the comparator family, table anchor, or citations before more polish"
|
|
669
|
-
)
|
|
670
|
-
if has_repeated_split_protocol(text) and not has_variance_report(text):
|
|
671
|
-
issues.append(
|
|
672
|
-
"repeated split or seed protocol should report variance, confidence intervals, or an explicit variance disposition"
|
|
673
|
-
)
|
|
674
604
|
|
|
675
605
|
|
|
676
606
|
def check_conclusion(text: str, issues: list[str]):
|
|
@@ -706,7 +636,6 @@ def main():
|
|
|
706
636
|
check_workflow_language_targeting(section_path, blocking_issues)
|
|
707
637
|
check_common_section_gate_risks(text, warning_issues)
|
|
708
638
|
check_section_style_policy(text, args.section, warning_issues)
|
|
709
|
-
check_reference_template_intake(section_path, warning_issues)
|
|
710
639
|
SECTION_CHECKS[args.section](text, warning_issues)
|
|
711
640
|
check_neighbor_asset_files(args.section, section_path, warning_issues)
|
|
712
641
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
\begin{figure}[t]
|
|
2
2
|
\centering
|
|
3
3
|
\fbox{\rule{0pt}{1.2in}\rule{0.9\linewidth}{0pt}}
|
|
4
|
-
|
|
4
|
+
% Authoring note: record what this figure should show and why the reader needs it in the paper plan or write-iteration artifact, not in the caption.
|
|
5
|
+
\caption{Figure title. Replace with a paper-facing caption that states the visual content and the supported claim.}
|
|
5
6
|
\label{fig:placeholder}
|
|
6
7
|
\end{figure}
|
|
@@ -51,19 +51,19 @@
|
|
|
51
51
|
- Problem setting or teaser figure:
|
|
52
52
|
- Asset file:
|
|
53
53
|
- Section:
|
|
54
|
-
- Figure
|
|
54
|
+
- Figure role:
|
|
55
55
|
- Evidence:
|
|
56
56
|
- Status:
|
|
57
57
|
- Method overview figure:
|
|
58
58
|
- Asset file:
|
|
59
59
|
- Section:
|
|
60
|
-
- Figure
|
|
60
|
+
- Figure role:
|
|
61
61
|
- Evidence:
|
|
62
62
|
- Status:
|
|
63
63
|
- Results overview figure:
|
|
64
64
|
- Asset file:
|
|
65
65
|
- Section:
|
|
66
|
-
- Figure
|
|
66
|
+
- Figure role:
|
|
67
67
|
- Evidence:
|
|
68
68
|
- Status:
|
|
69
69
|
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
- Asset file:
|
|
74
74
|
- Asset type:
|
|
75
75
|
- Section:
|
|
76
|
-
- Asset
|
|
76
|
+
- Asset role:
|
|
77
77
|
- Evidence:
|
|
78
78
|
- Status:
|
|
79
79
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Reference Consumption Plan
|
|
2
|
+
|
|
3
|
+
## Sources
|
|
4
|
+
|
|
5
|
+
- Source:
|
|
6
|
+
|
|
7
|
+
## Adopted Structure Slots
|
|
8
|
+
|
|
9
|
+
- slot_name -> target subsection / paragraph / asset
|
|
10
|
+
|
|
11
|
+
## Rejected or Waived Slots
|
|
12
|
+
|
|
13
|
+
- slot_name -> waiver reason
|
|
14
|
+
|
|
15
|
+
## Section Mapping
|
|
16
|
+
|
|
17
|
+
- slot_name -> current-paper section or subsection
|
|
18
|
+
|
|
19
|
+
## Paragraph Role Mapping
|
|
20
|
+
|
|
21
|
+
- paragraph_role -> current-paper paragraph
|
|
22
|
+
- paragraph_role -> current-paper local bridge / transition sentence
|
|
23
|
+
|
|
24
|
+
## Asset Mapping
|
|
25
|
+
|
|
26
|
+
- asset_role -> current-paper figure/table/analysis asset
|
|
27
|
+
|
|
28
|
+
## Section Realization Check
|
|
29
|
+
|
|
30
|
+
- Adopted slots that are visibly realized in the current section:
|
|
31
|
+
- Adopted slots that still need prose, subsection, paragraph, or asset support:
|
|
32
|
+
- Reason any dense paragraph was kept instead of splitting into reader-facing anchors:
|
|
33
|
+
|
|
34
|
+
## Reuse Boundary
|
|
35
|
+
|
|
36
|
+
- Reuse structure, section order, paragraph roles, asset function, placement logic, and bridge logic only.
|
|
37
|
+
- Do not copy wording, claims, metrics, captions, or conclusions from reference papers.
|
|
38
|
+
|
|
39
|
+
## Validation
|
|
40
|
+
|
|
41
|
+
- `validate_reference_consumption.py` result:
|
|
@@ -67,33 +67,6 @@
|
|
|
67
67
|
- Any discouraged move kept and why:
|
|
68
68
|
- Any banned move found:
|
|
69
69
|
|
|
70
|
-
## Review Issue Bundle
|
|
71
|
-
|
|
72
|
-
- Issue bundle path:
|
|
73
|
-
- New issues:
|
|
74
|
-
- Resolved issues:
|
|
75
|
-
- Open issues:
|
|
76
|
-
- Quote-backed findings recorded:
|
|
77
|
-
- Script-backed findings separated from judgment-backed findings:
|
|
78
|
-
|
|
79
|
-
## Re-Audit Status
|
|
80
|
-
|
|
81
|
-
- Previous issue bundle compared:
|
|
82
|
-
- Fully addressed root causes:
|
|
83
|
-
- Partially addressed root causes:
|
|
84
|
-
- Not addressed root causes:
|
|
85
|
-
- New root causes:
|
|
86
|
-
- Which root-cause issues block further prose polish:
|
|
87
|
-
|
|
88
|
-
## Reference Template Intake
|
|
89
|
-
|
|
90
|
-
- Reference sources used:
|
|
91
|
-
- Aggregate template playbook:
|
|
92
|
-
- Section templates consulted:
|
|
93
|
-
- Visual/table templates consulted:
|
|
94
|
-
- Multi-template reproduction plan:
|
|
95
|
-
- Structure-only reuse boundary:
|
|
96
|
-
|
|
97
70
|
## Table Semantics
|
|
98
71
|
|
|
99
72
|
- Metrics promised in Method:
|
|
@@ -142,6 +115,23 @@
|
|
|
142
115
|
- Was workflow-language paper layer included in the exported/pushed bundle:
|
|
143
116
|
- If workflow-language was omitted, why was canonical-only export acceptable:
|
|
144
117
|
|
|
118
|
+
## Reference Structure Consumption
|
|
119
|
+
|
|
120
|
+
- Was reference-guided deep writing triggered:
|
|
121
|
+
- Reference sources used:
|
|
122
|
+
- Reference consumption plan path:
|
|
123
|
+
- Were section/subsection slots mapped before prose:
|
|
124
|
+
- Were paragraph roles mapped before prose:
|
|
125
|
+
- Were table/figure roles mapped before prose:
|
|
126
|
+
- Were adopted slots visibly realized in the section, not only in the plan:
|
|
127
|
+
- Did any adopted experiment slot remain collapsed into an overly dense paragraph:
|
|
128
|
+
- Which reference slots were adopted:
|
|
129
|
+
- Which reference slots were waived and why:
|
|
130
|
+
- Did the round avoid copying reference wording, claims, metrics, captions, or conclusions:
|
|
131
|
+
- Did final prose avoid service-style or AI-assistant meta language:
|
|
132
|
+
- Did final prose avoid workflow-only placeholder language:
|
|
133
|
+
- Validator command and result:
|
|
134
|
+
|
|
145
135
|
## Decision
|
|
146
136
|
|
|
147
137
|
- Continue or stop:
|
|
@@ -246,6 +246,10 @@ Use this skill when the user invokes `/lab:*` or asks for the structured researc
|
|
|
246
246
|
- Keep one canonical natural-language paper-facing name per concept.
|
|
247
247
|
- Once a paper-facing model or ablation label is chosen, reuse the canonical label instead of replacing it with a narrative alias in later prose, tables, or captions.
|
|
248
248
|
- Before drafting or polishing, check the current section block in `skills/lab/references/paper-writing/section-style-policies.md` and follow its encouraged, discouraged, and banned expression lists.
|
|
249
|
+
- When the user provides reference PDFs, paper URLs, local reference-paper paths, or asks to write by reference, stay within `/lab:write` but switch to reference-guided deep writing: extract structure, map section/subsection slots, paragraph roles, and table/figure roles to the current paper, record the mapping, and only then draft prose.
|
|
250
|
+
- The reference-consumption plan is not sufficient by itself. The current section must visibly realize the adopted structure slots through subsection or paragraph anchors, table/figure placement, local bridges, and reader-facing prose.
|
|
251
|
+
- Reference-guided writing may reuse structure, paragraph roles, asset placement, and bridge logic, but must not copy reference wording, claims, metrics, captions, or conclusions.
|
|
252
|
+
- Keep service-style, AI-assistant meta language, and workflow-only placeholder language out of manuscript prose, captions, table notes, and paper-facing analysis assets.
|
|
249
253
|
- Before any additional tighten, compress, or polish pass on the same section, run a section-level acceptance gate first.
|
|
250
254
|
- The section-level acceptance gate must explicitly check canonical naming consistency, adjacent-section consistency, claim/metric/ranking consistency with evidence, local clarity, local concision, and section-style compliance.
|
|
251
255
|
- If the current section still contains a banned expression or banned rhetorical move from the section-style policy, the round has not passed the section-level acceptance gate.
|
|
@@ -262,12 +266,13 @@ Use this skill when the user invokes `/lab:*` or asks for the structured researc
|
|
|
262
266
|
- Main tables must be locally self-contained: a reader should be able to understand row meaning, column meaning, metric direction, and any relevant unit or denominator from the table title, table note, and adjacent prose without chasing the Method section.
|
|
263
267
|
- If Method or Experiments prose promises a metric family, the main table set must either expose that metric family directly or mark the missing items as appendix-only and explain why.
|
|
264
268
|
- Short table headers are allowed, but any abbreviation in a paper-facing table must be expanded locally in the same table.
|
|
269
|
+
- Local table notes must be filled with real reader-facing explanations; default template text such as "explain what each row represents" or "expand local abbreviations" is still incomplete.
|
|
265
270
|
- If a metric is measured but omitted because it is zero everywhere, redundant, or appendix-only, state that decision explicitly in the table note instead of silently dropping it.
|
|
266
271
|
- Do not treat `\resizebox{\linewidth}{!}{...}` as the default main-table fit strategy.
|
|
267
272
|
- Fit paper-facing main tables by redesign first: shorten headers, move secondary metrics out of the main table, reduce or split columns, then adjust `\tabcolsep` conservatively; only use `\resizebox` as a last resort and document why.
|
|
268
273
|
- Keep `\tabcolsep` adjustments conservative and avoid shrinking below a roughly readable floor for paper-facing main tables.
|
|
269
274
|
- Do not rely on `\scriptsize` or `\tiny` as the default way to make a main table fit.
|
|
270
|
-
- Keep internal identifiers out of prose unless they are mapped once for the reader and then moved back out of prose.
|
|
275
|
+
- Keep internal identifiers, tuning-run labels, probe names, config strings, rerun ids, and package labels out of prose unless they are mapped once for the reader and then moved back out of prose.
|
|
271
276
|
- Do not rely on unexplained jargon density as a substitute for academic tone.
|
|
272
277
|
- Bind each claim to evidence from `report`, iteration reports, or normalized summaries.
|
|
273
278
|
- Use the write-stage contract in `.codex/skills/lab/stages/write.md` or `.claude/skills/lab/stages/write.md` as the single source of truth for template choice, paper-plan requirements, section-specific references, validator calls, asset coverage, and final manuscript gates.
|
|
@@ -10,9 +10,11 @@ attachment.
|
|
|
10
10
|
\begin{figure}[t]
|
|
11
11
|
\centering
|
|
12
12
|
\fbox{\rule{0pt}{1.55in}\rule{0.92\linewidth}{0pt}}
|
|
13
|
-
|
|
14
|
-
boundary
|
|
15
|
-
|
|
13
|
+
% Authoring note: the final visual should show the full pipeline, highlight the
|
|
14
|
+
% module boundary, and make train-time versus inference-time data flow visible.
|
|
15
|
+
\caption{Method overview of the proposed model. The diagram separates the
|
|
16
|
+
structured scoring module from the post-hoc calibration stage and indicates the
|
|
17
|
+
data flow used during training and inference.}
|
|
16
18
|
\label{fig:method-overview}
|
|
17
19
|
\end{figure}
|
|
18
20
|
```
|
|
@@ -23,9 +25,11 @@ stage, and make the train-time versus inference-time data flow easy to inspect.}
|
|
|
23
25
|
\begin{figure}[t]
|
|
24
26
|
\centering
|
|
25
27
|
\fbox{\rule{0pt}{1.55in}\rule{0.92\linewidth}{0pt}}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
% Authoring note: the final visual should summarize cross-dataset trends and
|
|
29
|
+
% uncertainty without introducing a claim absent from the result tables.
|
|
30
|
+
\caption{Benchmark-level results overview. The plot summarizes the primary
|
|
31
|
+
metric across datasets and shows whether the reported gain is stable across the
|
|
32
|
+
evaluated settings.}
|
|
29
33
|
\label{fig:results-overview}
|
|
30
34
|
\end{figure}
|
|
31
35
|
```
|
package/package-assets/shared/skills/lab/references/paper-writing/examples/experiments-examples.md
CHANGED
|
@@ -8,7 +8,7 @@ glue, not just checklists.
|
|
|
8
8
|
|
|
9
9
|
1. Main results should live in a real `table` environment.
|
|
10
10
|
2. Ablations should live in a separate `table` environment.
|
|
11
|
-
3. Method and experiments should each have at least one figure placeholder with
|
|
11
|
+
3. Method and experiments should each have at least one figure placeholder with a reader-ready caption and any authoring notes kept outside the caption.
|
|
12
12
|
4. Captions should explain the table or figure message briefly; longer interpretation belongs in prose.
|
|
13
13
|
|
|
14
14
|
## Example Files
|
|
@@ -30,6 +30,8 @@ These are paper-facing defaults. They are not project-specific branding rules.
|
|
|
30
30
|
- Roadmap prose such as "In this paper, we first..., then..., finally...".
|
|
31
31
|
- Reviewer-facing instructions such as "the reader can see" or "as shown clearly below".
|
|
32
32
|
- Unbounded superiority claims such as "universally", "always", or "in every setting".
|
|
33
|
+
- Service-style or AI-assistant meta language such as "用户说", "按你的要求", "我来解释", "let me explain", or "as requested by the user".
|
|
34
|
+
- Workflow-only placeholder language such as "图的意图", "资产意图", "占位符", "workflow-language", or "sync this wording".
|
|
33
35
|
|
|
34
36
|
## Introduction
|
|
35
37
|
|
|
@@ -51,6 +53,8 @@ These are paper-facing defaults. They are not project-specific branding rules.
|
|
|
51
53
|
- Empty macro-importance claims such as "this problem is increasingly critical" with no concrete consequence.
|
|
52
54
|
- Marketing-style first-claim language such as "revolutionary", "game-changing", or "unprecedented" without evidence.
|
|
53
55
|
- Paragraphs that only praise the paper instead of stating the research gap.
|
|
56
|
+
- Service-style or AI-assistant meta language such as "用户说", "按你的要求", "我来解释", "let me explain", or "as requested by the user".
|
|
57
|
+
- Workflow-only placeholder language such as "图的意图", "资产意图", "占位符", "workflow-language", or "sync this wording".
|
|
54
58
|
|
|
55
59
|
## Related Work
|
|
56
60
|
|
|
@@ -71,6 +75,8 @@ These are paper-facing defaults. They are not project-specific branding rules.
|
|
|
71
75
|
- Laundry-list paragraphs that only say "X does..., Y does..., Z does..." with no comparison.
|
|
72
76
|
- Claims that related work is weak or obsolete without specifying the missing capability.
|
|
73
77
|
- Hiding the closest prior work behind broad category language.
|
|
78
|
+
- Service-style or AI-assistant meta language such as "用户说", "按你的要求", "我来解释", "let me explain", or "as requested by the user".
|
|
79
|
+
- Workflow-only placeholder language such as "图的意图", "资产意图", "占位符", "workflow-language", or "sync this wording".
|
|
74
80
|
|
|
75
81
|
## Method
|
|
76
82
|
|
|
@@ -92,6 +98,8 @@ These are paper-facing defaults. They are not project-specific branding rules.
|
|
|
92
98
|
- Marketing-style or self-promotional wording such as "elegant", "powerful", "dramatically stronger", or "significantly outperforms prior methods" when used as prose decoration rather than evidence-backed result reporting.
|
|
93
99
|
- Explaining the method by saying it is "better", "stronger", or "more advanced" without saying how it works.
|
|
94
100
|
- Introducing new narrative aliases for canonical model or ablation labels after they have already been locked.
|
|
101
|
+
- Service-style or AI-assistant meta language such as "用户说", "按你的要求", "我来解释", "let me explain", or "as requested by the user".
|
|
102
|
+
- Workflow-only placeholder language such as "图的意图", "资产意图", "占位符", "workflow-language", or "sync this wording".
|
|
95
103
|
|
|
96
104
|
## Experiments
|
|
97
105
|
|
|
@@ -114,6 +122,8 @@ These are paper-facing defaults. They are not project-specific branding rules.
|
|
|
114
122
|
- Self-evaluations such as "结果也很清楚", "the defense results are very clear", or "the table is self-explanatory".
|
|
115
123
|
- Layout-process commentary in scientific prose, such as "由于表列较多,这里采用页宽自适应排版" or "we use page-width adaptive layout here".
|
|
116
124
|
- Claims that a table "proves" something when the evidence only supports a bounded empirical result.
|
|
125
|
+
- Service-style or AI-assistant meta language such as "用户说", "按你的要求", "我来解释", "let me explain", or "as requested by the user".
|
|
126
|
+
- Workflow-only placeholder language such as "图的意图", "资产意图", "占位符", "workflow-language", or "sync this wording".
|
|
117
127
|
|
|
118
128
|
## Conclusion
|
|
119
129
|
|
|
@@ -134,3 +144,5 @@ These are paper-facing defaults. They are not project-specific branding rules.
|
|
|
134
144
|
- Introducing new evidence, new experiments, or new mechanism claims.
|
|
135
145
|
- Expanding the paper's scope beyond what the experiments support.
|
|
136
146
|
- Ending with generic hype such as "this opens a new era" or "this will broadly transform the field".
|
|
147
|
+
- Service-style or AI-assistant meta language such as "用户说", "按你的要求", "我来解释", "let me explain", or "as requested by the user".
|
|
148
|
+
- Workflow-only placeholder language such as "图的意图", "资产意图", "占位符", "workflow-language", or "sync this wording".
|