@research-copilot/plugin 1.1.15 → 1.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/.claude-plugin/plugin.json +3 -2
  2. package/dist/.codex-plugin/plugin.toml +2 -1
  3. package/dist/.cursor-plugin/plugin.json +3 -2
  4. package/dist/.gemini-plugin/plugin.json +3 -2
  5. package/dist/.opencode-plugin/plugin.json +3 -2
  6. package/dist/.windsurf-plugin/plugin.json +3 -2
  7. package/dist/agents/copilot-conductor.agent.md +60 -0
  8. package/dist/agents/copilot-experiment.agent.md +56 -0
  9. package/dist/agents/copilot-ideation.agent.md +45 -0
  10. package/dist/agents/copilot-literature.agent.md +34 -0
  11. package/dist/agents/copilot-polisher.agent.md +30 -0
  12. package/dist/agents/copilot-rebuttal.agent.md +35 -0
  13. package/dist/agents/copilot-reviewer.agent.md +35 -0
  14. package/dist/agents/copilot-writer.agent.md +39 -0
  15. package/dist/hooks/dispatch-reminder.json +17 -0
  16. package/dist/hooks/loop-armer.json +17 -0
  17. package/dist/hooks/research-copilot-guard.hook.md +51 -0
  18. package/dist/hooks/scientist-guardrails.json +17 -0
  19. package/dist/hooks/scripts/__tests__/__init__.py +0 -0
  20. package/dist/hooks/scripts/__tests__/test_post_tool_loop_armer.py +88 -0
  21. package/dist/hooks/scripts/__tests__/test_research_copilot_guard_main_session.py +150 -0
  22. package/dist/hooks/scripts/__tests__/test_session_start_memory_injector.py +66 -0
  23. package/dist/hooks/scripts/__tests__/test_user_prompt_dispatch_reminder.py +37 -0
  24. package/dist/hooks/scripts/_copilot_hook_lib.py +564 -0
  25. package/dist/hooks/scripts/copilot_subagent_stop.py +203 -0
  26. package/dist/hooks/scripts/copilot_write_guard.py +96 -0
  27. package/dist/hooks/scripts/post_tool_loop_armer.py +61 -0
  28. package/dist/hooks/scripts/research_copilot_guard.py +208 -0
  29. package/dist/hooks/scripts/scientist_guardrails.py +29 -0
  30. package/dist/hooks/scripts/session_start_memory_injector.py +188 -0
  31. package/dist/hooks/scripts/user_prompt_dispatch_reminder.py +40 -0
  32. package/dist/hooks/session-memory-injector.json +17 -0
  33. package/dist/hooks/tests/__init__.py +0 -0
  34. package/dist/hooks/tests/conftest.py +61 -0
  35. package/dist/hooks/tests/fixtures/transcript_copilot_experiment_complete.jsonl +2 -0
  36. package/dist/hooks/tests/fixtures/transcript_copilot_experiment_state_jump.jsonl +2 -0
  37. package/dist/hooks/tests/fixtures/transcript_copilot_literature.jsonl +2 -0
  38. package/dist/hooks/tests/fixtures/transcript_main_only.jsonl +2 -0
  39. package/dist/hooks/tests/fixtures/transcript_malformed_state_output.jsonl +2 -0
  40. package/dist/hooks/tests/integration_run.ps1 +65 -0
  41. package/dist/hooks/tests/test_copilot_hook_lib.py +398 -0
  42. package/dist/hooks/tests/test_copilot_subagent_stop.py +186 -0
  43. package/dist/hooks/tests/test_copilot_write_guard.py +137 -0
  44. package/dist/hooks/tests/test_session_start_snapshot.py +116 -0
  45. package/dist/hooks/tests/test_state_machine_consistency.py +75 -0
  46. package/dist/skills/arxivsub-skill/SKILL.md +98 -0
  47. package/dist/skills/arxivsub-skill/skill.json +5 -0
  48. package/dist/skills/de-ai-checker/SKILL.md +110 -0
  49. package/dist/skills/de-ai-checker/skill.json +5 -0
  50. package/dist/skills/deep-interview/SKILL.md +91 -0
  51. package/dist/skills/deep-interview/skill.json +5 -0
  52. package/dist/skills/grill-with-docs/SKILL.md +120 -0
  53. package/dist/skills/grill-with-docs/skill.json +5 -0
  54. package/dist/skills/init-mcp/SKILL.md +83 -0
  55. package/dist/skills/init-mcp/skill.json +5 -0
  56. package/dist/skills/model-escalation/SKILL.md +93 -0
  57. package/dist/skills/model-escalation/skill.json +5 -0
  58. package/dist/skills/paper-architecture-web-drawing/SKILL.md +282 -0
  59. package/dist/skills/paper-architecture-web-drawing/skill.json +5 -0
  60. package/dist/skills/paper-deai/SKILL.md +53 -0
  61. package/dist/skills/paper-deai/skill.json +5 -0
  62. package/dist/skills/paper-en2zh/SKILL.md +29 -0
  63. package/dist/skills/paper-en2zh/skill.json +5 -0
  64. package/dist/skills/paper-expand/SKILL.md +43 -0
  65. package/dist/skills/paper-expand/skill.json +5 -0
  66. package/dist/skills/paper-experiment-analysis/SKILL.md +38 -0
  67. package/dist/skills/paper-experiment-analysis/skill.json +5 -0
  68. package/dist/skills/paper-figure-caption/SKILL.md +29 -0
  69. package/dist/skills/paper-figure-caption/skill.json +5 -0
  70. package/dist/skills/paper-logic-check/SKILL.md +30 -0
  71. package/dist/skills/paper-logic-check/skill.json +5 -0
  72. package/dist/skills/paper-polish/SKILL.md +34 -305
  73. package/dist/skills/paper-polish/skill.json +5 -0
  74. package/dist/skills/paper-review/SKILL.md +49 -0
  75. package/dist/skills/paper-review/skill.json +5 -0
  76. package/dist/skills/paper-sanity-check/SKILL.md +122 -0
  77. package/dist/skills/paper-sanity-check/skill.json +5 -0
  78. package/dist/skills/paper-shorten/SKILL.md +42 -0
  79. package/dist/skills/paper-shorten/skill.json +5 -0
  80. package/dist/skills/paper-table-caption/SKILL.md +29 -0
  81. package/dist/skills/paper-table-caption/skill.json +5 -0
  82. package/dist/skills/paper-translate/SKILL.md +48 -0
  83. package/dist/skills/paper-translate/skill.json +5 -0
  84. package/dist/skills/plugin-dev-agent-development/SKILL.md +95 -0
  85. package/dist/skills/plugin-dev-agent-development/skill.json +5 -0
  86. package/dist/skills/research-workflow/SKILL.md +116 -0
  87. package/dist/skills/research-workflow/skill.json +5 -0
  88. package/dist/skills/scientist-experiment-runner/SKILL.md +76 -0
  89. package/dist/skills/scientist-experiment-runner/skill.json +5 -0
  90. package/dist/skills/scientist-ideation/SKILL.md +52 -0
  91. package/dist/skills/scientist-ideation/skill.json +5 -0
  92. package/dist/skills/scientist-plotting/SKILL.md +49 -0
  93. package/dist/skills/scientist-plotting/skill.json +5 -0
  94. package/dist/skills/scientist-review/SKILL.md +40 -0
  95. package/dist/skills/scientist-review/skill.json +5 -0
  96. package/dist/skills/scientist-runtime-init/SKILL.md +46 -0
  97. package/dist/skills/scientist-runtime-init/skill.json +5 -0
  98. package/dist/skills/scientist-writeup/SKILL.md +60 -0
  99. package/dist/skills/scientist-writeup/skill.json +5 -0
  100. package/dist/skills/talk-normal/SKILL.md +73 -0
  101. package/dist/skills/talk-normal/skill.json +5 -0
  102. package/package.json +1 -1
  103. package/dist/agents/rc-experiment.md +0 -203
  104. package/dist/agents/rc-ideation.md +0 -224
  105. package/dist/agents/rc-literature.md +0 -228
  106. package/dist/agents/rc-plan.md +0 -189
  107. package/dist/agents/rc-polisher.md +0 -166
  108. package/dist/agents/rc-rebuttal.md +0 -194
  109. package/dist/agents/rc-reviewer.md +0 -187
  110. package/dist/agents/rc-update-spec.md +0 -231
  111. package/dist/agents/rc-verify.md +0 -234
  112. package/dist/agents/rc-writer.md +0 -161
  113. package/dist/skills/experiment-design/SKILL.md +0 -331
  114. package/dist/skills/full-research-workflow/SKILL.md +0 -363
  115. package/dist/skills/literature-search/SKILL.md +0 -244
  116. package/dist/skills/sanity-check/SKILL.md +0 -449
  117. package/dist/skills/submission-sprint/SKILL.md +0 -361
@@ -1,244 +0,0 @@
1
- ---
2
- name: literature-search
3
- description: Focused literature search skill. Searches papers, locks baselines, builds related-work map. Use for standalone literature tasks.
4
- triggers:
5
- - "search papers"
6
- - "find baselines"
7
- - "literature review"
8
- - "related work"
9
- - "find research on"
10
- ---
11
-
12
- # Literature Search
13
-
14
- Orchestrate focused literature search: create task → dispatch @rc-literature → verify results.
15
-
16
- ## When to Use
17
-
18
- Use this skill when:
19
- - User asks to "search papers for X"
20
- - User wants to "find baselines for Y"
21
- - User needs a "literature review on Z"
22
- - Standalone literature search (NOT part of full pipeline)
23
-
24
- Do NOT use when:
25
- - Part of full-research-workflow (that handles literature internally)
26
- - User only wants a quick web search (use web-search skill)
27
-
28
- ## Task-First Protocol
29
-
30
- Before starting, check if task exists:
31
-
32
- ```powershell
33
- # Check for existing literature task
34
- $taskFile = "C:\PythonProject\research_copilot\.rc\tasks\literature-search.json"
35
- if (Test-Path $taskFile) {
36
- $task = Get-Content $taskFile | ConvertFrom-Json
37
- Write-Host "Found existing task: $($task.query)"
38
- } else {
39
- Write-Host "No existing task. Will create one."
40
- }
41
- ```
42
-
43
- Create task if needed:
44
-
45
- ```powershell
46
- # Create literature search task
47
- rc task create --type literature --query "user query here" --output .rc/tasks/literature-search.json
48
- ```
49
-
50
- ## Auto-Context Loading
51
-
52
- Read task context before orchestration:
53
-
54
- ```powershell
55
- # Load task context
56
- $taskFile = "C:\PythonProject\research_copilot\.rc\tasks\literature-search.json"
57
- if (Test-Path $taskFile) {
58
- $task = Get-Content $taskFile | ConvertFrom-Json
59
-
60
- Write-Host "Task Query: $($task.query)"
61
- Write-Host "Target Baselines: $($task.target_baselines)"
62
- Write-Host "Categories Required: $($task.categories_required)"
63
-
64
- # Load PRD if referenced
65
- if ($task.prd_file -and (Test-Path $task.prd_file)) {
66
- $prd = Get-Content $task.prd_file -Raw
67
- Write-Host "PRD loaded: $($task.prd_file)"
68
- }
69
- }
70
- ```
71
-
72
- ## Orchestration Logic
73
-
74
- Execute literature search via agent dispatch:
75
-
76
- ```powershell
77
- # Start task
78
- rc task start literature-search
79
-
80
- # Dispatch to literature agent
81
- Write-Host "Dispatching to @rc-literature agent..."
82
-
83
- # Agent will:
84
- # 1. Parse query and extract search terms
85
- # 2. Search multiple sources (arXiv, Semantic Scholar, Google Scholar)
86
- # 3. Extract baselines and build comparison table
87
- # 4. Categorize papers (method, survey, application)
88
- # 5. Generate related-work map
89
- # 6. Save results to .rc/literature/
90
-
91
- # Wait for completion (agent runs autonomously)
92
- # Check status
93
- $status = rc task status literature-search
94
- Write-Host "Task status: $status"
95
- ```
96
-
97
- Verify results:
98
-
99
- ```powershell
100
- # Verify literature search outputs
101
- $litDir = "C:\PythonProject\research_copilot\.rc\literature"
102
-
103
- # Check baselines file
104
- $baselinesFile = Join-Path $litDir "baselines.json"
105
- if (Test-Path $baselinesFile) {
106
- $baselines = Get-Content $baselinesFile | ConvertFrom-Json
107
- Write-Host "Found $($baselines.Count) baselines"
108
- } else {
109
- Write-Host "WARNING: No baselines file found"
110
- }
111
-
112
- # Check papers file
113
- $papersFile = Join-Path $litDir "papers.json"
114
- if (Test-Path $papersFile) {
115
- $papers = Get-Content $papersFile | ConvertFrom-Json
116
- Write-Host "Found $($papers.Count) papers"
117
- } else {
118
- Write-Host "WARNING: No papers file found"
119
- }
120
-
121
- # Check related-work map
122
- $relatedWorkFile = Join-Path $litDir "related-work.md"
123
- if (Test-Path $relatedWorkFile) {
124
- Write-Host "Related-work map generated"
125
- } else {
126
- Write-Host "WARNING: No related-work map found"
127
- }
128
- ```
129
-
130
- Complete task:
131
-
132
- ```powershell
133
- # Mark task complete if quality gates passed
134
- rc task complete literature-search
135
- ```
136
-
137
- ## Quality Gates
138
-
139
- Verify before marking complete:
140
-
141
- ```powershell
142
- # Quality gate checks
143
- $passed = $true
144
-
145
- # Gate 1: Minimum baselines
146
- $baselinesFile = "C:\PythonProject\research_copilot\.rc\literature\baselines.json"
147
- if (Test-Path $baselinesFile) {
148
- $baselines = Get-Content $baselinesFile | ConvertFrom-Json
149
- if ($baselines.Count -lt 3) {
150
- Write-Host "FAIL: Need ≥3 baselines, found $($baselines.Count)"
151
- $passed = $false
152
- }
153
- } else {
154
- Write-Host "FAIL: No baselines file"
155
- $passed = $false
156
- }
157
-
158
- # Gate 2: Category coverage
159
- $papersFile = "C:\PythonProject\research_copilot\.rc\literature\papers.json"
160
- if (Test-Path $papersFile) {
161
- $papers = Get-Content $papersFile | ConvertFrom-Json
162
- $categories = $papers | Select-Object -ExpandProperty category -Unique
163
- if ($categories.Count -lt 2) {
164
- Write-Host "FAIL: Need ≥2 categories, found $($categories.Count)"
165
- $passed = $false
166
- }
167
- } else {
168
- Write-Host "FAIL: No papers file"
169
- $passed = $false
170
- }
171
-
172
- # Gate 3: PRD claim support
173
- $prdFile = "C:\PythonProject\research_copilot\.rc\prd.md"
174
- if (Test-Path $prdFile) {
175
- $prd = Get-Content $prdFile -Raw
176
- $claims = [regex]::Matches($prd, '\[CLAIM:([^\]]+)\]')
177
- $supportedClaims = 0
178
-
179
- foreach ($claim in $claims) {
180
- $claimId = $claim.Groups[1].Value
181
- $citationPattern = "\[$claimId\]"
182
- if ($prd -match $citationPattern) {
183
- $supportedClaims++
184
- }
185
- }
186
-
187
- if ($supportedClaims -lt $claims.Count) {
188
- Write-Host "FAIL: Only $supportedClaims/$($claims.Count) claims supported"
189
- $passed = $false
190
- }
191
- }
192
-
193
- if ($passed) {
194
- Write-Host "All quality gates passed"
195
- } else {
196
- Write-Host "Quality gates failed - review needed"
197
- }
198
- ```
199
-
200
- ## Report Format
201
-
202
- Generate final report:
203
-
204
- ```markdown
205
- # Literature Search Report
206
-
207
- **Query**: {user_query}
208
- **Date**: {date}
209
- **Baselines Found**: {baseline_count}
210
- **Papers Reviewed**: {paper_count}
211
-
212
- ## Baselines
213
-
214
- | Method | Year | Metric | Score | Paper |
215
- |--------|------|--------|-------|-------|
216
- | {name} | {year} | {metric} | {score} | [{title}]({url}) |
217
-
218
- ## Paper Categories
219
-
220
- - **Methods**: {count} papers
221
- - **Surveys**: {count} papers
222
- - **Applications**: {count} papers
223
-
224
- ## Related Work Map
225
-
226
- {content from related-work.md}
227
-
228
- ## Key Findings
229
-
230
- - Finding 1
231
- - Finding 2
232
- - Finding 3
233
-
234
- ## Next Steps
235
-
236
- - [ ] Review baselines for integration
237
- - [ ] Extract method details from top papers
238
- - [ ] Update PRD with new citations
239
- ```
240
-
241
- ## Example Usage
242
-
243
- ```
244
- User: "Search papers on graph neural networks for recommendation"
@@ -1,449 +0,0 @@
1
- ---
2
- name: sanity-check
3
- description: Final 6-dimension sanity check (logic/citation/reproducibility/novelty/venue/de-AI). Use before submission for comprehensive audit.
4
- triggers:
5
- - "sanity check"
6
- - "final check"
7
- - "audit paper"
8
- - "pre-submission audit"
9
- - "verify paper ready"
10
- ---
11
-
12
- # Sanity Check
13
-
14
- Final 6-dimension audit without making changes. Verifies paper is submission-ready across all critical dimensions.
15
-
16
- ## When to Use
17
-
18
- Use this skill when:
19
- - User asks to "sanity check the paper"
20
- - Paper is ready for final audit before submission
21
- - After submission sprint completes
22
- - User wants to "verify paper is ready"
23
-
24
- Do NOT use when:
25
- - Paper needs changes (use submission-sprint or review skills)
26
- - User wants specific issue fixed (handle directly)
27
- - Paper is still being drafted (too early)
28
-
29
- ## Task-First Protocol
30
-
31
- Before starting, check if sanity-check task exists:
32
-
33
- ```powershell
34
- # Check for existing sanity-check task
35
- $taskFile = "C:\PythonProject\research_copilot\.rc\tasks\sanity-check.json"
36
- if (Test-Path $taskFile) {
37
- $task = Get-Content $taskFile | ConvertFrom-Json
38
- Write-Host "Found existing sanity-check task for: $($task.paper_file)"
39
- } else {
40
- Write-Host "No existing task. Will create one."
41
- }
42
- ```
43
-
44
- Create task if needed:
45
-
46
- ```powershell
47
- # Create sanity-check task
48
- $paperFile = "paper_polished.tex" # Or user-specified file
49
- rc task create --type sanity-check --paper $paperFile --output .rc/tasks/sanity-check.json
50
- ```
51
-
52
- ## Auto-Context Loading
53
-
54
- Read all context files before audit:
55
-
56
- ```powershell
57
- # Load task context
58
- $taskFile = "C:\PythonProject\research_copilot\.rc\tasks\sanity-check.json"
59
- if (Test-Path $taskFile) {
60
- $task = Get-Content $taskFile | ConvertFrom-Json
61
- Write-Host "Paper file: $($task.paper_file)"
62
-
63
- # Load PRD for research requirements
64
- $prdFile = "C:\PythonProject\research_copilot\.rc\prd.md"
65
- if (Test-Path $prdFile) {
66
- $prd = Get-Content $prdFile -Raw
67
- Write-Host "PRD loaded"
68
- }
69
-
70
- # Load venue specification
71
- $venueFile = "C:\PythonProject\research_copilot\.rc\venue\spec.json"
72
- if (Test-Path $venueFile) {
73
- $venue = Get-Content $venueFile | ConvertFrom-Json
74
- Write-Host "Venue: $($venue.name)"
75
- }
76
-
77
- # Load novelty spec
78
- $noveltyFile = "C:\PythonProject\research_copilot\.rc\spec\novelty.md"
79
- if (Test-Path $noveltyFile) {
80
- Write-Host "Novelty spec loaded"
81
- }
82
-
83
- # Load writing conventions
84
- $conventionsFile = "C:\PythonProject\research_copilot\.rc\writing\conventions.md"
85
- if (Test-Path $conventionsFile) {
86
- Write-Host "Writing conventions loaded"
87
- }
88
- }
89
- ```
90
-
91
- ## Orchestration Logic
92
-
93
- Execute 6-dimension audit via @rc-reviewer agent:
94
-
95
- ```powershell
96
- # Start task
97
- rc task start sanity-check
98
-
99
- Write-Host "Starting 6-dimension sanity check..."
100
-
101
- # Dispatch to reviewer agent with comprehensive 6-dimension prompt
102
- Write-Host "Dispatching to @rc-reviewer agent..."
103
-
104
- # Agent audits 6 dimensions (no changes made):
105
- # 1. Logic: Claims → Evidence chain complete
106
- # 2. Citations: All baselines cited, no orphan references
107
- # 3. Reproducibility: Config/seed/data documented
108
- # 4. Novelty: Claims match spec/novelty/
109
- # 5. Venue compliance: Format/length/template correct
110
- # 6. De-AI: No AI patterns remain
111
-
112
- # Wait for completion
113
- $status = rc task status sanity-check
114
- Write-Host "Task status: $status"
115
- ```
116
-
117
- ## 6 Dimensions
118
-
119
- ### Dimension 1: Logic Integrity
120
-
121
- Check claims → evidence chain:
122
-
123
- ```powershell
124
- # Verify logic dimension
125
- $logicFile = "C:\PythonProject\research_copilot\.rc\sanity\logic.json"
126
- if (Test-Path $logicFile) {
127
- $logic = Get-Content $logicFile | ConvertFrom-Json
128
-
129
- Write-Host "`nDimension 1: Logic"
130
- Write-Host "Claims checked: $($logic.claims_checked)"
131
- Write-Host "Evidence gaps: $($logic.evidence_gaps.Count)"
132
-
133
- if ($logic.evidence_gaps.Count -eq 0) {
134
- Write-Host "✓ All claims have supporting evidence"
135
- } else {
136
- Write-Host "✗ Evidence gaps found:"
137
- foreach ($gap in $logic.evidence_gaps) {
138
- Write-Host " - $($gap.claim) ($($gap.location))"
139
- }
140
- }
141
- }
142
- ```
143
-
144
- ### Dimension 2: Citation Completeness
145
-
146
- Check all baselines cited and no orphan references:
147
-
148
- ```powershell
149
- # Verify citations dimension
150
- $citationsFile = "C:\PythonProject\research_copilot\.rc\sanity\citations.json"
151
- if (Test-Path $citationsFile) {
152
- $citations = Get-Content $citationsFile | ConvertFrom-Json
153
-
154
- Write-Host "`nDimension 2: Citations"
155
- Write-Host "Total citations: $($citations.total_citations)"
156
- Write-Host "Orphan references: $($citations.orphan_refs.Count)"
157
- Write-Host "Missing baseline citations: $($citations.missing_baselines.Count)"
158
-
159
- if ($citations.orphan_refs.Count -eq 0 -and $citations.missing_baselines.Count -eq 0) {
160
- Write-Host "✓ All citations complete and referenced"
161
- } else {
162
- if ($citations.orphan_refs.Count -gt 0) {
163
- Write-Host "✗ Orphan references (in .bib but not cited):"
164
- foreach ($ref in $citations.orphan_refs) {
165
- Write-Host " - $ref"
166
- }
167
- }
168
- if ($citations.missing_baselines.Count -gt 0) {
169
- Write-Host "✗ Missing baseline citations:"
170
- foreach ($baseline in $citations.missing_baselines) {
171
- Write-Host " - $baseline"
172
- }
173
- }
174
- }
175
- }
176
- ```
177
-
178
- ### Dimension 3: Reproducibility
179
-
180
- Check config/seed/data documented:
181
-
182
- ```powershell
183
- # Verify reproducibility dimension
184
- $reproducibilityFile = "C:\PythonProject\research_copilot\.rc\sanity\reproducibility.json"
185
- if (Test-Path $reproducibilityFile) {
186
- $repro = Get-Content $reproducibilityFile | ConvertFrom-Json
187
-
188
- Write-Host "`nDimension 3: Reproducibility"
189
- Write-Host "Config documented: $($repro.config_documented)"
190
- Write-Host "Seeds documented: $($repro.seeds_documented)"
191
- Write-Host "Data documented: $($repro.data_documented)"
192
- Write-Host "Code available: $($repro.code_available)"
193
-
194
- if ($repro.config_documented -and $repro.seeds_documented -and $repro.data_documented) {
195
- Write-Host "✓ Reproducibility requirements met"
196
- } else {
197
- Write-Host "✗ Missing reproducibility elements:"
198
- if (-not $repro.config_documented) { Write-Host " - Configuration details" }
199
- if (-not $repro.seeds_documented) { Write-Host " - Random seeds" }
200
- if (-not $repro.data_documented) { Write-Host " - Dataset details" }
201
- }
202
- }
203
- ```
204
-
205
- ### Dimension 4: Novelty Alignment
206
-
207
- Check claims match spec/novelty/:
208
-
209
- ```powershell
210
- # Verify novelty dimension
211
- $noveltyFile = "C:\PythonProject\research_copilot\.rc\sanity\novelty.json"
212
- if (Test-Path $noveltyFile) {
213
- $novelty = Get-Content $noveltyFile | ConvertFrom-Json
214
-
215
- Write-Host "`nDimension 4: Novelty"
216
- Write-Host "Novelty claims: $($novelty.claims.Count)"
217
- Write-Host "Aligned with spec: $($novelty.aligned_with_spec)"
218
- Write-Host "Misalignments: $($novelty.misalignments.Count)"
219
-
220
- if ($novelty.aligned_with_spec) {
221
- Write-Host "✓ Novelty claims match specification"
222
- } else {
223
- Write-Host "✗ Novelty misalignments:"
224
- foreach ($misalignment in $novelty.misalignments) {
225
- Write-Host " - $($misalignment.claim)"
226
- Write-Host " Expected: $($misalignment.expected)"
227
- Write-Host " Found: $($misalignment.found)"
228
- }
229
- }
230
- }
231
- ```
232
-
233
- ### Dimension 5: Venue Compliance
234
-
235
- Check format/length/template correct:
236
-
237
- ```powershell
238
- # Verify venue compliance dimension
239
- $venueFile = "C:\PythonProject\research_copilot\.rc\sanity\venue.json"
240
- if (Test-Path $venueFile) {
241
- $venueCheck = Get-Content $venueFile | ConvertFrom-Json
242
-
243
- Write-Host "`nDimension 5: Venue Compliance"
244
- Write-Host "Template correct: $($venueCheck.template_correct)"
245
- Write-Host "Page count: $($venueCheck.page_count)/$($venueCheck.page_limit)"
246
- Write-Host "Format issues: $($venueCheck.format_issues.Count)"
247
-
248
- if ($venueCheck.template_correct -and $venueCheck.page_count -le $venueCheck.page_limit -and $venueCheck.format_issues.Count -eq 0) {
249
- Write-Host "✓ Venue requirements met"
250
- } else {
251
- Write-Host "✗ Venue compliance issues:"
252
- if (-not $venueCheck.template_correct) { Write-Host " - Incorrect template" }
253
- if ($venueCheck.page_count -gt $venueCheck.page_limit) { Write-Host " - Exceeds page limit" }
254
- foreach ($issue in $venueCheck.format_issues) {
255
- Write-Host " - $issue"
256
- }
257
- }
258
- }
259
- ```
260
-
261
- ### Dimension 6: De-AI Verification
262
-
263
- Check no AI patterns remain:
264
-
265
- ```powershell
266
- # Verify de-AI dimension
267
- $deAiFile = "C:\PythonProject\research_copilot\.rc\sanity\de-ai.json"
268
- if (Test-Path $deAiFile) {
269
- $deAi = Get-Content $deAiFile | ConvertFrom-Json
270
-
271
- Write-Host "`nDimension 6: De-AI"
272
- Write-Host "AI patterns found: $($deAi.patterns_found.Count)"
273
- Write-Host "Mechanical transitions: $($deAi.mechanical_transitions)"
274
- Write-Host "Excessive adjectives: $($deAi.excessive_adjectives)"
275
-
276
- if ($deAi.patterns_found.Count -eq 0) {
277
- Write-Host "✓ No AI patterns detected"
278
- } else {
279
- Write-Host "✗ AI patterns found:"
280
- foreach ($pattern in $deAi.patterns_found) {
281
- Write-Host " - $($pattern.type): '$($pattern.text)' ($($pattern.location))"
282
- }
283
- }
284
- }
285
- ```
286
-
287
- ## Quality Gates
288
-
289
- All 6 dimensions must pass:
290
-
291
- ```powershell
292
- # Quality gate checks
293
- $passed = $true
294
- $dimensions = @()
295
-
296
- # Check each dimension
297
- $dimensionFiles = @{
298
- "Logic" = "C:\PythonProject\research_copilot\.rc\sanity\logic.json"
299
- "Citations" = "C:\PythonProject\research_copilot\.rc\sanity\citations.json"
300
- "Reproducibility" = "C:\PythonProject\research_copilot\.rc\sanity\reproducibility.json"
301
- "Novelty" = "C:\PythonProject\research_copilot\.rc\sanity\novelty.json"
302
- "Venue" = "C:\PythonProject\research_copilot\.rc\sanity\venue.json"
303
- "De-AI" = "C:\PythonProject\research_copilot\.rc\sanity\de-ai.json"
304
- }
305
-
306
- foreach ($dimension in $dimensionFiles.Keys) {
307
- $file = $dimensionFiles[$dimension]
308
-
309
- if (-not (Test-Path $file)) {
310
- Write-Host "FAIL: $dimension check not completed"
311
- $passed = $false
312
- $dimensions += @{ name = $dimension; status = "INCOMPLETE" }
313
- continue
314
- }
315
-
316
- $data = Get-Content $file | ConvertFrom-Json
317
-
318
- # Dimension-specific pass criteria
319
- $dimPassed = $false
320
- switch ($dimension) {
321
- "Logic" { $dimPassed = $data.evidence_gaps.Count -eq 0 }
322
- "Citations" { $dimPassed = $data.orphan_refs.Count -eq 0 -and $data.missing_baselines.Count -eq 0 }
323
- "Reproducibility" { $dimPassed = $data.config_documented -and $data.seeds_documented -and $data.data_documented }
324
- "Novelty" { $dimPassed = $data.aligned_with_spec }
325
- "Venue" { $dimPassed = $data.template_correct -and $data.page_count -le $data.page_limit -and $data.format_issues.Count -eq 0 }
326
- "De-AI" { $dimPassed = $data.patterns_found.Count -eq 0 }
327
- }
328
-
329
- if ($dimPassed) {
330
- $dimensions += @{ name = $dimension; status = "PASS" }
331
- } else {
332
- $dimensions += @{ name = $dimension; status = "FAIL" }
333
- $passed = $false
334
- }
335
- }
336
-
337
- # Overall status
338
- Write-Host "`n=== SANITY CHECK RESULTS ==="
339
- foreach ($dim in $dimensions) {
340
- $icon = if ($dim.status -eq "PASS") { "✓" } else { "✗" }
341
- Write-Host "$icon $($dim.name): $($dim.status)"
342
- }
343
-
344
- if ($passed) {
345
- Write-Host "`n✓ PAPER READY FOR SUBMISSION"
346
- rc task complete sanity-check
347
- } else {
348
- Write-Host "`n✗ PAPER NOT READY - Issues must be resolved"
349
- Write-Host "Run submission-sprint to fix remaining issues"
350
- }
351
- ```
352
-
353
- ## Report Format
354
-
355
- Generate final report:
356
-
357
- ```markdown
358
- # Sanity Check Report
359
-
360
- **Paper**: {paper_file}
361
- **Date**: {date}
362
- **Status**: {READY / NOT_READY}
363
-
364
- ## 6-Dimension Audit
365
-
366
- ### ✓ 1. Logic Integrity
367
- - Claims checked: {count}
368
- - Evidence gaps: 0
369
- - **Status**: PASS
370
-
371
- ### ✓ 2. Citation Completeness
372
- - Total citations: {count}
373
- - Orphan references: 0
374
- - Missing baselines: 0
375
- - **Status**: PASS
376
-
377
- ### ✓ 3. Reproducibility
378
- - Configuration documented: Yes
379
- - Seeds documented: Yes
380
- - Data documented: Yes
381
- - Code availability: Yes
382
- - **Status**: PASS
383
-
384
- ### ✓ 4. Novelty Alignment
385
- - Novelty claims: {count}
386
- - Aligned with spec: Yes
387
- - Misalignments: 0
388
- - **Status**: PASS
389
-
390
- ### ✓ 5. Venue Compliance
391
- - Template: Correct
392
- - Page count: {count}/{limit}
393
- - Format issues: 0
394
- - **Status**: PASS
395
-
396
- ### ✓ 6. De-AI Verification
397
- - AI patterns: 0
398
- - Mechanical transitions: 0
399
- - Excessive adjectives: 0
400
- - **Status**: PASS
401
-
402
- ## Overall Assessment
403
-
404
- ✓ **READY FOR SUBMISSION**
405
-
406
- All 6 dimensions passed. Paper meets submission requirements.
407
-
408
- ## Files Audited
409
-
410
- - `paper_polished.tex`: Main paper file
411
- - `references.bib`: Bibliography
412
- - `figures/`: All figures
413
- - `.rc/prd.md`: Research requirements
414
- - `.rc/spec/novelty.md`: Novelty specification
415
- - `.rc/venue/spec.json`: Venue requirements
416
-
417
- ## Next Steps
418
-
419
- - [ ] Generate submission package
420
- - [ ] Upload to venue submission system
421
- - [ ] Prepare supplementary materials (if required)
422
- ```
423
-
424
- ## Error Recovery
425
-
426
- If any dimension fails:
427
-
428
- ```powershell
429
- # Show failed dimensions
430
- Write-Host "Failed dimensions:"
431
- foreach ($dim in $dimensions) {
432
- if ($dim.status -eq "FAIL") {
433
- Write-Host "- $($dim.name)"
434
-
435
- # Show details
436
- $file = $dimensionFiles[$dim.name]
437
- $data = Get-Content $file | ConvertFrom-Json
438
-
439
- # Print specific issues (dimension-dependent)
440
- }
441
- }
442
-
443
- Write-Host "`nRecommendation: Run submission-sprint to fix issues"
444
- ```
445
-
446
- ## Example Usage
447
-
448
- ```
449
- User: "Sanity check the paper before submission"