@citeark/agent 0.3.20

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 (347) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +128 -0
  3. package/data/dataset-source-registry.v1.json +300 -0
  4. package/dist/arkgraph/boot.js +6 -0
  5. package/dist/arkgraph/index.html +1 -0
  6. package/dist/arkgraph/viewer.css +1 -0
  7. package/dist/arkgraph/viewer.en.css +1 -0
  8. package/dist/arkgraph/viewer.en.js +49 -0
  9. package/dist/arkgraph/viewer.en.js.LEGAL.txt +56 -0
  10. package/dist/arkgraph/viewer.js +49 -0
  11. package/dist/arkgraph/viewer.js.LEGAL.txt +56 -0
  12. package/docker/claude-code/Dockerfile +97 -0
  13. package/docker/claude-code/codex-pro-relay.mjs +466 -0
  14. package/docker/claude-code/runtime-contract-check.mjs +79 -0
  15. package/docs/arkgraph-reading.md +79 -0
  16. package/docs/configuration.md +100 -0
  17. package/docs/integration.md +92 -0
  18. package/docs/maturity-plan.md +27 -0
  19. package/docs/npm-release.md +44 -0
  20. package/docs/paper-reading.md +40 -0
  21. package/docs/research-plan-granularity.md +27 -0
  22. package/docs/terminal.md +49 -0
  23. package/examples/toy-evaluation/compile-task.json +27 -0
  24. package/examples/toy-evaluation/paper.md +5 -0
  25. package/examples/toy-evaluation/repository/README.md +9 -0
  26. package/examples/toy-evaluation/repository/checkpoint.json +4 -0
  27. package/examples/toy-evaluation/repository/evaluate.py +17 -0
  28. package/examples/toy-evaluation/task.json +81 -0
  29. package/package.json +59 -0
  30. package/prompts/compile-research.md +58 -0
  31. package/prompts/execute-contract.md +72 -0
  32. package/prompts/execute-workspace-simple.md +51 -0
  33. package/prompts/execute-workspace.md +34 -0
  34. package/prompts/prepare-reproduction.md +82 -0
  35. package/prompts/repair-research.md +45 -0
  36. package/protocol/CAP.md +129 -0
  37. package/protocol/LICENSE +12 -0
  38. package/protocol/MAPPINGS.md +72 -0
  39. package/protocol/README.md +38 -0
  40. package/protocol/conformance-v2.0-alpha.1.json +36 -0
  41. package/protocol/examples/arkgraph/checkpoint-evaluation.json +309 -0
  42. package/protocol/examples/arkgraph/fixtures.mjs +49 -0
  43. package/protocol/examples/arkgraph/paper-free.json +291 -0
  44. package/protocol/examples/arkgraph/partial-failure.json +344 -0
  45. package/protocol/examples/arkgraph/training-evaluation.json +443 -0
  46. package/protocol/profiles/agent-trace.md +16 -0
  47. package/protocol/profiles/computational-run.md +16 -0
  48. package/protocol/profiles/core.md +15 -0
  49. package/protocol/profiles/public-bundle.md +18 -0
  50. package/protocol/profiles/reproduction.md +29 -0
  51. package/protocol/profiles/research-compilation.md +44 -0
  52. package/protocol/profiles/research-plan.md +39 -0
  53. package/protocol/profiles/restricted-evidence.md +15 -0
  54. package/runtime/bootstrap-autodl-runtime.sh +314 -0
  55. package/runtime/create-runtime-venv.sh +41 -0
  56. package/runtime/install-local-cpu-runtime.sh +23 -0
  57. package/runtime/install-scientific-runtime.sh +153 -0
  58. package/runtime/mineru/parse.py +62 -0
  59. package/runtime/mineru/requirements.txt +4 -0
  60. package/runtime/requirements-baseline.txt +38 -0
  61. package/schemas/cap/v2/activity.schema.json +47 -0
  62. package/schemas/cap/v2/agent.schema.json +32 -0
  63. package/schemas/cap/v2/assertion.schema.json +110 -0
  64. package/schemas/cap/v2/descriptor.schema.json +243 -0
  65. package/schemas/cap/v2/entity.schema.json +64 -0
  66. package/schemas/cap/v2/manifest.schema.json +67 -0
  67. package/schemas/cap/v2/relation.schema.json +82 -0
  68. package/schemas/compute-catalog.schema.json +63 -0
  69. package/schemas/compute-decision.schema.json +27 -0
  70. package/schemas/execution-contract.schema.json +1024 -0
  71. package/schemas/research-card.schema.json +30 -0
  72. package/schemas/research-inventory-draft.schema.json +366 -0
  73. package/schemas/research.schema.json +1044 -0
  74. package/schemas/result.schema.json +173 -0
  75. package/schemas/verification-policy.schema.json +47 -0
  76. package/schemas/verified-conclusion.schema.json +58 -0
  77. package/schemas/workspace-summary.schema.json +24 -0
  78. package/scripts/build-arkgraph-view.mjs +12 -0
  79. package/scripts/check-execution-feasibility.mjs +24 -0
  80. package/scripts/check-syntax.mjs +15 -0
  81. package/scripts/deterministic-asset-preparation.py +438 -0
  82. package/scripts/package-cap.mjs +23 -0
  83. package/scripts/package-local-agent.mjs +23 -0
  84. package/scripts/preview-arkgraph.mjs +25 -0
  85. package/scripts/replay-research-compiler-candidate.mjs +134 -0
  86. package/scripts/review-compiler-sources.mjs +44 -0
  87. package/scripts/run-asset-preparation.sh +17 -0
  88. package/scripts/run-research-plan.mjs +98 -0
  89. package/scripts/validate-asset-preparation.py +290 -0
  90. package/scripts/verify-local-runtime.mjs +57 -0
  91. package/scripts/verify-npm-package.mjs +57 -0
  92. package/src/adapters/paper2agent.mjs +107 -0
  93. package/src/assets/cache.mjs +159 -0
  94. package/src/assets/compute.mjs +98 -0
  95. package/src/assets/executor.mjs +145 -0
  96. package/src/assets/lifecycle.mjs +213 -0
  97. package/src/assets/manifest.mjs +242 -0
  98. package/src/assets/opportunistic-preparation.mjs +81 -0
  99. package/src/assets/plan.mjs +411 -0
  100. package/src/assets/prompts.mjs +29 -0
  101. package/src/assets/public-asset-probe.mjs +525 -0
  102. package/src/assets/qualification.mjs +119 -0
  103. package/src/assets/readiness.mjs +130 -0
  104. package/src/assets/reproduction-admission.mjs +355 -0
  105. package/src/assets/requirements.mjs +152 -0
  106. package/src/assets/source-grounding.mjs +341 -0
  107. package/src/assets/source-policy.mjs +118 -0
  108. package/src/autodl/client.mjs +260 -0
  109. package/src/autodl/ssh.mjs +380 -0
  110. package/src/autodl/tools.mjs +129 -0
  111. package/src/cap/redaction.mjs +38 -0
  112. package/src/cap/v2/archive.mjs +152 -0
  113. package/src/cap/v2/attestation.mjs +204 -0
  114. package/src/cap/v2/canonical-json.mjs +114 -0
  115. package/src/cap/v2/compilation-artifact.mjs +240 -0
  116. package/src/cap/v2/core.mjs +282 -0
  117. package/src/cap/v2/measurement-assessment-records.mjs +23 -0
  118. package/src/cap/v2/pipeline-artifact.mjs +922 -0
  119. package/src/cap/v2/read.mjs +41 -0
  120. package/src/cap/v2/reassessment-artifact.mjs +383 -0
  121. package/src/cap/v2/research-artifact.mjs +231 -0
  122. package/src/cap/v2/research-map-records.mjs +46 -0
  123. package/src/cap/v2/research-object-records.mjs +163 -0
  124. package/src/cap/v2/research-records.mjs +187 -0
  125. package/src/cap/v2/verify.mjs +642 -0
  126. package/src/cli.mjs +1146 -0
  127. package/src/compute/autodl-pro-compiler.mjs +347 -0
  128. package/src/compute/autodl-pro-executor.mjs +459 -0
  129. package/src/compute/autodl-pro-job.mjs +843 -0
  130. package/src/compute/autodl-pro-network.mjs +295 -0
  131. package/src/compute/autodl-pro-remote.mjs +810 -0
  132. package/src/compute/autodl-pro-staging.mjs +117 -0
  133. package/src/compute/campaign.mjs +110 -0
  134. package/src/compute/catalog.mjs +123 -0
  135. package/src/compute/checkpoint-protocol.mjs +154 -0
  136. package/src/compute/codex-account-lock.mjs +111 -0
  137. package/src/compute/codex-account-session.mjs +107 -0
  138. package/src/compute/compiler-profile.mjs +38 -0
  139. package/src/compute/compiler-router.mjs +23 -0
  140. package/src/compute/coordinator-recovery.mjs +210 -0
  141. package/src/compute/executor-router.mjs +29 -0
  142. package/src/compute/gcp-batch-compiler.mjs +685 -0
  143. package/src/compute/gcp-batch-executor.mjs +1215 -0
  144. package/src/compute/gcp-batch-failure.mjs +92 -0
  145. package/src/compute/gcp-batch-job.mjs +527 -0
  146. package/src/compute/gcp-batch-lifecycle.mjs +81 -0
  147. package/src/compute/gcp-checkpoint-worker.mjs +1633 -0
  148. package/src/compute/local-codex-compiler.mjs +52 -0
  149. package/src/compute/measurement-hardware.mjs +128 -0
  150. package/src/compute/remote-attempt.mjs +226 -0
  151. package/src/compute/requirements.mjs +124 -0
  152. package/src/compute/research-phases.mjs +48 -0
  153. package/src/compute/scheduler.mjs +452 -0
  154. package/src/compute/shared-workloads.mjs +26 -0
  155. package/src/compute/stage-archive.mjs +79 -0
  156. package/src/contracts/campaign-contract.mjs +52 -0
  157. package/src/contracts/execution-contract.mjs +819 -0
  158. package/src/contracts/execution-mode.mjs +19 -0
  159. package/src/contracts/execution-timeouts.mjs +45 -0
  160. package/src/contracts/execution-workload.mjs +68 -0
  161. package/src/contracts/preflight-schema.mjs +25 -0
  162. package/src/contracts/public-contract.mjs +63 -0
  163. package/src/contracts/subject-tags.mjs +31 -0
  164. package/src/dashboard/data.mjs +898 -0
  165. package/src/dashboard/server.mjs +79 -0
  166. package/src/dashboard/static/dashboard.css +366 -0
  167. package/src/dashboard/static/dashboard.js +560 -0
  168. package/src/dashboard/static/index.html +85 -0
  169. package/src/deployment/community-policy.mjs +9 -0
  170. package/src/deployment/environment.mjs +112 -0
  171. package/src/deployment/guided.mjs +98 -0
  172. package/src/deployment/handoff.mjs +102 -0
  173. package/src/deployment/local-contract.mjs +31 -0
  174. package/src/deployment/local.mjs +100 -0
  175. package/src/deployment/prepare.mjs +46 -0
  176. package/src/deployment/recipe.mjs +108 -0
  177. package/src/deployment/supplement.mjs +51 -0
  178. package/src/deployment/terminal.mjs +43 -0
  179. package/src/diagnosis/renderer.mjs +75 -0
  180. package/src/diagnosis/target-failure.mjs +46 -0
  181. package/src/evidence/parser-registry.mjs +54 -0
  182. package/src/evidence/parsers/fasttext-classification.mjs +82 -0
  183. package/src/evidence/parsers/json-scalar.mjs +96 -0
  184. package/src/evidence/parsers/simcse-senteval.mjs +104 -0
  185. package/src/evidence/parsers/starspace-classification.mjs +78 -0
  186. package/src/evidence/registry.mjs +147 -0
  187. package/src/execution/runner-audit.mjs +473 -0
  188. package/src/gcp/auth.mjs +106 -0
  189. package/src/gcp/batch-client.mjs +120 -0
  190. package/src/gcp/resource-discovery.mjs +177 -0
  191. package/src/gcp/rest.mjs +82 -0
  192. package/src/gcp/secret-manager.mjs +34 -0
  193. package/src/gcp/signed-url.mjs +133 -0
  194. package/src/gcp/storage.mjs +220 -0
  195. package/src/graph/command.mjs +41 -0
  196. package/src/graph/execution.mjs +97 -0
  197. package/src/graph/model.mjs +37 -0
  198. package/src/graph/presentation.mjs +110 -0
  199. package/src/graph/query.mjs +159 -0
  200. package/src/graph/research-relations.mjs +69 -0
  201. package/src/graph/source-page.mjs +12 -0
  202. package/src/graph/source-preview.mjs +34 -0
  203. package/src/graph/validate.mjs +76 -0
  204. package/src/job.mjs +496 -0
  205. package/src/network/autodl-routing-proxy.mjs +462 -0
  206. package/src/network/egress-proxy.mjs +158 -0
  207. package/src/observability/event-contract.mjs +230 -0
  208. package/src/observability/pipeline-monitor.mjs +166 -0
  209. package/src/pipeline/orchestrator.mjs +1281 -0
  210. package/src/pipeline/recovery-error.mjs +11 -0
  211. package/src/pipeline/replay.mjs +304 -0
  212. package/src/pipeline/shared-execution.mjs +115 -0
  213. package/src/pipeline/stage-checkpoint.mjs +86 -0
  214. package/src/pipeline/stage-recovery.mjs +101 -0
  215. package/src/pipeline/targets.mjs +110 -0
  216. package/src/process.mjs +143 -0
  217. package/src/protocol.mjs +312 -0
  218. package/src/provider/codex-account.mjs +44 -0
  219. package/src/provider/codex-completion.mjs +49 -0
  220. package/src/provider/completion.mjs +292 -0
  221. package/src/provider/model-client.mjs +44 -0
  222. package/src/provider/model-route.mjs +29 -0
  223. package/src/provider/openrouter-readiness.mjs +189 -0
  224. package/src/provider/reader-bridge.mjs +35 -0
  225. package/src/provider/relay.mjs +263 -0
  226. package/src/provider/runtime-auth.mjs +40 -0
  227. package/src/public/cap.d.mts +90 -0
  228. package/src/public/cap.mjs +12 -0
  229. package/src/public/contracts.d.mts +2 -0
  230. package/src/public/host.mjs +171 -0
  231. package/src/public/operations.d.mts +11 -0
  232. package/src/public/presentation.d.mts +4 -0
  233. package/src/records/views.mjs +26 -0
  234. package/src/remote/command.mjs +178 -0
  235. package/src/remote/ssh.mjs +59 -0
  236. package/src/repository-origin.mjs +81 -0
  237. package/src/reproduction/evidence-feedback.mjs +96 -0
  238. package/src/reproduction/incomplete-initialization.mjs +25 -0
  239. package/src/reproduction/lifecycle.mjs +253 -0
  240. package/src/reproduction/plan.mjs +132 -0
  241. package/src/reproduction/prompts.mjs +70 -0
  242. package/src/reproduction/runner.mjs +188 -0
  243. package/src/reproduction/summary.mjs +130 -0
  244. package/src/reproduction/workspace-mode.mjs +7 -0
  245. package/src/research/automatic-admission.mjs +156 -0
  246. package/src/research/compiler-coverage.mjs +85 -0
  247. package/src/research/compiler-failure.mjs +24 -0
  248. package/src/research/compiler-normalization-guards.mjs +112 -0
  249. package/src/research/compiler-repair.mjs +3 -0
  250. package/src/research/compiler.mjs +853 -0
  251. package/src/research/continuation-selection.mjs +26 -0
  252. package/src/research/execution-graph-context.mjs +43 -0
  253. package/src/research/experiment-importance.mjs +15 -0
  254. package/src/research/inventory-handoff.mjs +104 -0
  255. package/src/research/inventory-revisions.mjs +32 -0
  256. package/src/research/mineru-local.mjs +73 -0
  257. package/src/research/paper-command.mjs +19 -0
  258. package/src/research/paper-markdown.mjs +180 -0
  259. package/src/research/paper-source-map.mjs +69 -0
  260. package/src/research/planning-policy.mjs +88 -0
  261. package/src/research/reference-materials.mjs +11 -0
  262. package/src/research/reproduction-scope.mjs +30 -0
  263. package/src/research/research-map.mjs +94 -0
  264. package/src/research/research-objects.mjs +88 -0
  265. package/src/research/source-discovery.mjs +646 -0
  266. package/src/research/source-observations.mjs +75 -0
  267. package/src/research/source-review-cli-mcp.mjs +26 -0
  268. package/src/research/source-review-input.mjs +209 -0
  269. package/src/research/source-review-local-codex.mjs +36 -0
  270. package/src/research/source-review-model.mjs +70 -0
  271. package/src/research/source-review.mjs +173 -0
  272. package/src/research/structure.mjs +3163 -0
  273. package/src/research-card/renderer.mjs +277 -0
  274. package/src/research-card/verified-conclusion.mjs +143 -0
  275. package/src/results/output-registry.mjs +183 -0
  276. package/src/runtime/claude-code.mjs +52 -0
  277. package/src/runtime/codex-capacity-retry.mjs +87 -0
  278. package/src/runtime/codex.mjs +64 -0
  279. package/src/runtime/config.mjs +157 -0
  280. package/src/runtime/final-output.mjs +40 -0
  281. package/src/runtime/index.mjs +21 -0
  282. package/src/runtime/local-codex.mjs +74 -0
  283. package/src/runtime/opencode.mjs +95 -0
  284. package/src/runtime/prompt.mjs +13 -0
  285. package/src/sandbox/docker.mjs +363 -0
  286. package/src/settings/command.mjs +297 -0
  287. package/src/settings/store.mjs +119 -0
  288. package/src/telemetry/pricing.mjs +68 -0
  289. package/src/telemetry/usage.mjs +265 -0
  290. package/src/terminal/events.mjs +97 -0
  291. package/src/terminal/input.mjs +40 -0
  292. package/src/terminal/plain.mjs +40 -0
  293. package/src/terminal/remote-stream.mjs +22 -0
  294. package/src/terminal/screen.mjs +214 -0
  295. package/src/terminal/transcript.mjs +69 -0
  296. package/src/util.mjs +107 -0
  297. package/src/verification/ai-assessor.mjs +534 -0
  298. package/src/verification/claim-evaluator.mjs +242 -0
  299. package/src/verification/evidence-context.mjs +165 -0
  300. package/src/verification/evidence-reader.mjs +95 -0
  301. package/src/verification/integrity.mjs +570 -0
  302. package/src/verification/tolerance.mjs +32 -0
  303. package/src/workloads/cpu-research-preparation.mjs +56 -0
  304. package/src/workloads/definition.mjs +74 -0
  305. package/src/workloads/phase-aware-reproduction.mjs +46 -0
  306. package/src/workloads/reproduction.mjs +85 -0
  307. package/src/workspace/command.mjs +242 -0
  308. package/src/workspace/control.mjs +49 -0
  309. package/src/workspace/entry.mjs +28 -0
  310. package/src/workspace/input.mjs +93 -0
  311. package/src/workspace/interactive.mjs +94 -0
  312. package/src/workspace/jobs.mjs +418 -0
  313. package/src/workspace/session.mjs +97 -0
  314. package/src/workspace/worker.mjs +137 -0
  315. package/ui/arkgraph/ambient-motion.mjs +10 -0
  316. package/ui/arkgraph/app.jsx +153 -0
  317. package/ui/arkgraph/boot.js +6 -0
  318. package/ui/arkgraph/camera-motion.mjs +20 -0
  319. package/ui/arkgraph/context-reveal.mjs +39 -0
  320. package/ui/arkgraph/details.css +3 -0
  321. package/ui/arkgraph/entry.jsx +28 -0
  322. package/ui/arkgraph/experiment-curves.mjs +17 -0
  323. package/ui/arkgraph/experiment-selection.mjs +15 -0
  324. package/ui/arkgraph/experiment-style.css +26 -0
  325. package/ui/arkgraph/experiment-ui.jsx +32 -0
  326. package/ui/arkgraph/frame.html +1 -0
  327. package/ui/arkgraph/graph-gestures.mjs +62 -0
  328. package/ui/arkgraph/label-layout.mjs +57 -0
  329. package/ui/arkgraph/locales/en.json +229 -0
  330. package/ui/arkgraph/locales/source-types.json +15 -0
  331. package/ui/arkgraph/localization-build.mjs +27 -0
  332. package/ui/arkgraph/material-build.mjs +23 -0
  333. package/ui/arkgraph/material-colors.mjs +39 -0
  334. package/ui/arkgraph/material-style.css +15 -0
  335. package/ui/arkgraph/open-graph.jsx +326 -0
  336. package/ui/arkgraph/outline.jsx +49 -0
  337. package/ui/arkgraph/package-lock.json +888 -0
  338. package/ui/arkgraph/package.json +17 -0
  339. package/ui/arkgraph/reading-layout.mjs +130 -0
  340. package/ui/arkgraph/reading-presentation.mjs +73 -0
  341. package/ui/arkgraph/record-detail.css +51 -0
  342. package/ui/arkgraph/record-details.jsx +29 -0
  343. package/ui/arkgraph/research-types.mjs +31 -0
  344. package/ui/arkgraph/selection-mark.jsx +6 -0
  345. package/ui/arkgraph/soft-spine.mjs +26 -0
  346. package/ui/arkgraph/steering-style.css +187 -0
  347. package/ui/arkgraph/style.css +272 -0
@@ -0,0 +1,1044 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://citeark.com/schemas/research/structure-1.0.json",
4
+ "title": "CiteArk structured research",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "work", "sources", "claims", "experiments", "lineage", "coverage", "license", "provenance"],
7
+ "properties": {
8
+ "reading": {
9
+ "type": "object",
10
+ "required": [
11
+ "schemaVersion",
12
+ "overview",
13
+ "mainline",
14
+ "branches"
15
+ ],
16
+ "properties": {
17
+ "schemaVersion": {
18
+ "const": "1.0"
19
+ },
20
+ "overview": {
21
+ "type": "string",
22
+ "minLength": 1
23
+ },
24
+ "mainline": {
25
+ "type": "array",
26
+ "minItems": 1,
27
+ "uniqueItems": true,
28
+ "items": {
29
+ "type": "string",
30
+ "pattern": "^(object|claim|hypothesis|source):.+"
31
+ }
32
+ },
33
+ "branches": {
34
+ "type": "array",
35
+ "items": {
36
+ "type": "object",
37
+ "required": [
38
+ "parent",
39
+ "children"
40
+ ],
41
+ "properties": {
42
+ "parent": {
43
+ "type": "string",
44
+ "pattern": "^(object|claim|hypothesis|source):.+"
45
+ },
46
+ "children": {
47
+ "type": "array",
48
+ "uniqueItems": true,
49
+ "items": {
50
+ "type": "string",
51
+ "pattern": "^(object|claim|hypothesis|source):.+"
52
+ }
53
+ }
54
+ }
55
+ }
56
+ },
57
+ "labels": {
58
+ "type": "array",
59
+ "items": {
60
+ "type": "object",
61
+ "required": [
62
+ "target",
63
+ "title"
64
+ ],
65
+ "properties": {
66
+ "target": {
67
+ "type": "string",
68
+ "pattern": "^(object|claim|hypothesis|source):.+"
69
+ },
70
+ "title": {
71
+ "type": "string",
72
+ "minLength": 1
73
+ },
74
+ "subtype": {
75
+ "type": "string"
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }
81
+ },
82
+ "researchRelations": {
83
+ "type": "array",
84
+ "items": {
85
+ "type": "object",
86
+ "required": [
87
+ "id",
88
+ "from",
89
+ "to",
90
+ "predicate",
91
+ "basis",
92
+ "sourceLocators"
93
+ ],
94
+ "properties": {
95
+ "id": {
96
+ "type": "string",
97
+ "minLength": 1
98
+ },
99
+ "from": {
100
+ "type": "string",
101
+ "pattern": "^(object|claim|hypothesis|source):.+"
102
+ },
103
+ "to": {
104
+ "type": "string",
105
+ "pattern": "^(object|claim|hypothesis|source):.+"
106
+ },
107
+ "predicate": {
108
+ "enum": [
109
+ "about",
110
+ "describes",
111
+ "derivedFrom",
112
+ "assertedIn",
113
+ "attributedTo",
114
+ "plannedFor",
115
+ "requires",
116
+ "used",
117
+ "generated",
118
+ "follows",
119
+ "associatedWith",
120
+ "partOf",
121
+ "evidenceFor",
122
+ "assesses",
123
+ "basedOn"
124
+ ]
125
+ },
126
+ "basis": {
127
+ "enum": [
128
+ "declared",
129
+ "inferred"
130
+ ]
131
+ },
132
+ "sourceLocators": {
133
+ "type": "array",
134
+ "minItems": 1,
135
+ "items": {
136
+ "type": "object",
137
+ "required": [
138
+ "sourceId",
139
+ "locator"
140
+ ],
141
+ "properties": {
142
+ "sourceId": {
143
+ "type": "string"
144
+ },
145
+ "locator": {
146
+ "type": "string",
147
+ "minLength": 1
148
+ }
149
+ }
150
+ }
151
+ },
152
+ "note": {
153
+ "type": "string"
154
+ }
155
+ }
156
+ }
157
+ },
158
+ "researchObjects": {
159
+ "type": "array",
160
+ "description": "Independently addressable scientific objects, reused by explicit identity across routes.",
161
+ "items": {
162
+ "type": "object",
163
+ "required": [
164
+ "id",
165
+ "role",
166
+ "title"
167
+ ],
168
+ "properties": {
169
+ "id": {
170
+ "type": "string",
171
+ "minLength": 1
172
+ },
173
+ "sourceId": {
174
+ "type": "string",
175
+ "description": "Identity of an existing material source. Use sourceLocators for mentions; a derived split gets its own identity."
176
+ },
177
+ "role": {
178
+ "enum": [
179
+ "dataset",
180
+ "sample",
181
+ "model",
182
+ "checkpoint",
183
+ "code",
184
+ "method",
185
+ "observation",
186
+ "material", "question", "concept", "premise", "argument", "research-plan", "research-activity", "source-assessment", "person", "organization", "instrument"
187
+ ]
188
+ },
189
+ "title": {
190
+ "type": "string",
191
+ "minLength": 1
192
+ },
193
+ "description": {
194
+ "type": "string"
195
+ },
196
+ "observationKind": {"enum": ["scalar", "table", "matrix", "series", "collection"], "description": "Source-grounded representation of an observation collection; not its scientific conclusion."},
197
+ "basis": {
198
+ "enum": [
199
+ "declared",
200
+ "inferred"
201
+ ]
202
+ },
203
+ "identity": {
204
+ "type": "object",
205
+ "description": "Only source-grounded identities: URI, revision, digest, split, architecture, seed. Omit unknown values."
206
+ },
207
+ "conditions": {},
208
+ "sourceLocators": {
209
+ "type": "array",
210
+ "items": {
211
+ "type": "object",
212
+ "required": [
213
+ "sourceId",
214
+ "locator"
215
+ ],
216
+ "properties": {
217
+ "sourceId": {
218
+ "type": "string"
219
+ },
220
+ "locator": {
221
+ "type": "string",
222
+ "minLength": 1
223
+ }
224
+ }
225
+ }
226
+ },
227
+ "derivedFromIds": {
228
+ "type": "array",
229
+ "uniqueItems": true,
230
+ "items": {
231
+ "type": "string",
232
+ "minLength": 1
233
+ }
234
+ },
235
+ "prospective": {
236
+ "type": "boolean",
237
+ "description": "True for expected objects that this planned run has not produced."
238
+ },
239
+ "limitations": {
240
+ "type": "array",
241
+ "items": {
242
+ "type": "string"
243
+ }
244
+ }
245
+ }
246
+ }
247
+ },
248
+ "compilationStage": { "const": "inventory", "description": "A source inventory awaiting reproduction preparation; no executable experiments or feasibility verdicts." },
249
+ "sourceInventory": {
250
+ "type": "object", "required": ["digest", "research"],
251
+ "properties": {
252
+ "digest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
253
+ "research": { "$ref": "#", "description": "The unchanged initial source reading, retained even when later interpretation is corrected." },
254
+ "revisions": { "type": "array", "items": { "type": "object", "required": ["claimId", "claim", "reason", "sources"],
255
+ "properties": { "claimId": { "type": "string" }, "claim": { "$ref": "#/properties/claims/items" },
256
+ "reason": { "type": "string", "minLength": 1 }, "sources": { "type": "array", "minItems": 1,
257
+ "items": { "type": "object", "required": ["sourceId", "locator"], "properties": {
258
+ "sourceId": { "type": "string" }, "locator": { "type": "string", "minLength": 1 }
259
+ } } } }
260
+ } }
261
+ }
262
+ },
263
+ "reproductionScope": { "enum": ["low", "medium", "high"], "description": "Requested initial-selection preset; not scientific support, admission, fidelity or budget." },
264
+ "experimentSelection": {
265
+ "description": "Agent-authored catalog groups and recommendations for initial experiment checkboxes. Groups organize the review UI only; neither groups nor recommendations remove experiments or constrain later user selection.",
266
+ "type": "object",
267
+ "additionalProperties": false,
268
+ "required": ["presets"],
269
+ "properties": {
270
+ "importance": {
271
+ "type": "array",
272
+ "description": "Scientific importance independent of cost, feasibility, confidence or evidence verdict. Optional presentation metadata; absent means unrated.",
273
+ "items": {
274
+ "type": "object",
275
+ "additionalProperties": false,
276
+ "required": [
277
+ "experimentId",
278
+ "stars",
279
+ "rationale"
280
+ ],
281
+ "properties": {
282
+ "experimentId": {
283
+ "type": "string"
284
+ },
285
+ "stars": {
286
+ "type": "integer",
287
+ "minimum": 1,
288
+ "maximum": 3
289
+ },
290
+ "rationale": {
291
+ "type": "string",
292
+ "minLength": 1
293
+ },
294
+ "headline": {
295
+ "type": "string",
296
+ "minLength": 1,
297
+ "maxLength": 180
298
+ }
299
+ }
300
+ }
301
+ },
302
+ "groups": {
303
+ "type": "array",
304
+ "items": { "$ref": "#/$defs/selectionGroup" }
305
+ },
306
+ "presets": {
307
+ "type": "object",
308
+ "additionalProperties": false,
309
+ "properties": {
310
+ "low": { "$ref": "#/$defs/selectionPreset" },
311
+ "medium": { "$ref": "#/$defs/selectionPreset" },
312
+ "high": { "$ref": "#/$defs/selectionPreset" }
313
+ }
314
+ }
315
+ }
316
+ },
317
+ "schemaVersion": { "const": "1.0" },
318
+ "work": {
319
+ "type": "object",
320
+ "required": ["id", "title", "abstract", "significance"],
321
+ "properties": {
322
+ "id": { "type": "string", "minLength": 1 },
323
+ "title": { "type": "string", "minLength": 1 },
324
+ "abstract": {
325
+ "description": "Objective account of the paper, rewritten in the compiler's own words (never copied from the paper's original abstract); 80–120 words covering the central problem, method, and headline result.",
326
+ "type": "string",
327
+ "minLength": 1,
328
+ "maxLength": 1200
329
+ },
330
+ "significance": {
331
+ "description": "Plain-language AI interpretation of what the paper changes, who may benefit, and the main boundary of that value. Editorial context only; never reproduction evidence or an Assessment.",
332
+ "type": "string",
333
+ "minLength": 1,
334
+ "maxLength": 4000
335
+ },
336
+ "authors": {
337
+ "description": "Ordered paper author names extracted from the fixed paper snapshot. Newly compiled research must include this field; use an empty array only when the byline is genuinely unreadable.",
338
+ "type": "array",
339
+ "maxItems": 500,
340
+ "items": { "type": "string", "minLength": 1, "maxLength": 500 }
341
+ },
342
+ "subjects": {
343
+ "description": "CiteArk controlled subject tags: the full arXiv category taxonomy, slug = category id lowercased with '.' replaced by '-' (cs.LG → cs-lg). Mirror of src/domain/subject-tags.ts.",
344
+ "type": "array",
345
+ "items": {
346
+ "enum": [
347
+ "cs-ai", "cs-ar", "cs-cc", "cs-ce", "cs-cg", "cs-cl", "cs-cr", "cs-cv", "cs-cy", "cs-db",
348
+ "cs-dc", "cs-dl", "cs-dm", "cs-ds", "cs-et", "cs-fl", "cs-gl", "cs-gr", "cs-gt", "cs-hc",
349
+ "cs-ir", "cs-it", "cs-lg", "cs-lo", "cs-ma", "cs-mm", "cs-ms", "cs-na", "cs-ne", "cs-ni",
350
+ "cs-oh", "cs-os", "cs-pf", "cs-pl", "cs-ro", "cs-sc", "cs-sd", "cs-se", "cs-si", "cs-sy",
351
+ "econ-em", "econ-gn", "econ-th",
352
+ "eess-as", "eess-iv", "eess-sp", "eess-sy",
353
+ "math-ac", "math-ag", "math-ap", "math-at", "math-ca", "math-co", "math-ct", "math-cv",
354
+ "math-dg", "math-ds", "math-fa", "math-gm", "math-gn", "math-gr", "math-gt", "math-ho",
355
+ "math-it", "math-kt", "math-lo", "math-mg", "math-mp", "math-na", "math-nt", "math-oa",
356
+ "math-oc", "math-pr", "math-qa", "math-ra", "math-rt", "math-sg", "math-sp", "math-st",
357
+ "astro-ph-co", "astro-ph-ep", "astro-ph-ga", "astro-ph-he", "astro-ph-im", "astro-ph-sr",
358
+ "cond-mat-dis-nn", "cond-mat-mes-hall", "cond-mat-mtrl-sci", "cond-mat-other",
359
+ "cond-mat-quant-gas", "cond-mat-soft", "cond-mat-stat-mech", "cond-mat-str-el", "cond-mat-supr-con",
360
+ "gr-qc", "hep-ex", "hep-lat", "hep-ph", "hep-th", "math-ph",
361
+ "nlin-ao", "nlin-cd", "nlin-cg", "nlin-ps", "nlin-si",
362
+ "nucl-ex", "nucl-th",
363
+ "physics-acc-ph", "physics-ao-ph", "physics-app-ph", "physics-atm-clus", "physics-atom-ph",
364
+ "physics-bio-ph", "physics-chem-ph", "physics-class-ph", "physics-comp-ph", "physics-data-an",
365
+ "physics-ed-ph", "physics-flu-dyn", "physics-gen-ph", "physics-geo-ph", "physics-hist-ph",
366
+ "physics-ins-det", "physics-med-ph", "physics-optics", "physics-plasm-ph", "physics-pop-ph",
367
+ "physics-soc-ph", "physics-space-ph",
368
+ "quant-ph",
369
+ "q-bio-bm", "q-bio-cb", "q-bio-gn", "q-bio-mn", "q-bio-nc", "q-bio-ot", "q-bio-pe",
370
+ "q-bio-qm", "q-bio-sc", "q-bio-to",
371
+ "q-fin-cp", "q-fin-ec", "q-fin-gn", "q-fin-mf", "q-fin-pm", "q-fin-pr", "q-fin-rm",
372
+ "q-fin-st", "q-fin-tr",
373
+ "stat-ap", "stat-co", "stat-me", "stat-ml", "stat-ot", "stat-th"
374
+ ]
375
+ }
376
+ }
377
+ }
378
+ },
379
+ "sources": {
380
+ "type": "array",
381
+ "minItems": 2,
382
+ "items": {
383
+ "type": "object",
384
+ "required": ["id", "kind", "uri"],
385
+ "properties": {
386
+ "id": { "type": "string", "minLength": 1 },
387
+ "kind": { "enum": ["paper", "repository", "dataset", "supplement", "checkpoint"] },
388
+ "uri": { "type": "string", "minLength": 1 },
389
+ "version": { "type": "string" },
390
+ "digest": { "type": "string" }
391
+ }
392
+ }
393
+ },
394
+ "hypotheses": {
395
+ "type": "array",
396
+ "description": "Source-proposed explanations, distinct from empirical claims and scientific assessments. No execution disposition or support verdict.",
397
+ "items": {
398
+ "type": "object",
399
+ "required": [
400
+ "id",
401
+ "statement",
402
+ "sourceLocator"
403
+ ],
404
+ "properties": {
405
+ "id": {
406
+ "type": "string",
407
+ "minLength": 1
408
+ },
409
+ "statement": {
410
+ "type": "string",
411
+ "minLength": 1
412
+ },
413
+ "sourceLocator": {
414
+ "type": "object",
415
+ "required": [
416
+ "sourceId",
417
+ "locator"
418
+ ],
419
+ "properties": {
420
+ "sourceId": {
421
+ "type": "string"
422
+ },
423
+ "locator": {
424
+ "type": "string",
425
+ "minLength": 1
426
+ }
427
+ }
428
+ },
429
+ "objectIds": {
430
+ "type": "array",
431
+ "uniqueItems": true,
432
+ "items": {
433
+ "type": "string"
434
+ }
435
+ },
436
+ "conditions": {},
437
+ "limitations": {
438
+ "type": "array",
439
+ "items": {
440
+ "type": "string"
441
+ }
442
+ }
443
+ }
444
+ }
445
+ },
446
+ "claims": {
447
+ "type": "array",
448
+ "minItems": 1,
449
+ "items": {
450
+ "type": "object",
451
+ "required": ["id", "statement", "type", "sourceLocator", "reportedMeasurements", "reproduction"],
452
+ "properties": {
453
+ "objectIds": {
454
+ "type": "array",
455
+ "uniqueItems": true,
456
+ "items": {
457
+ "type": "string",
458
+ "minLength": 1
459
+ }
460
+ },
461
+ "id": { "type": "string", "minLength": 1 },
462
+ "versionId": { "type": "string" },
463
+ "statement": { "type": "string", "minLength": 1 },
464
+ "type": { "enum": ["finding", "method", "measurement", "limitation"] },
465
+ "icon": { "type": "string", "description": "Optional presentation icon from the CiteArk claim icon whitelist (kebab-case lucide name) matching the claim's subject matter, e.g. clock for training-time claims or gauge for metric claims. Decorative only; not part of evidence semantics." },
466
+ "sourceLocator": { "$ref": "#/$defs/locator" },
467
+ "reportedMeasurements": {
468
+ "type": "array",
469
+ "items": {
470
+ "allOf": [
471
+ { "$ref": "#/$defs/measurement" },
472
+ { "type": "object", "required": ["id", "value", "sourceLocator"], "properties": { "observationId": {"type": "string", "minLength": 1, "description": "Explicit source observation collection identity in researchObjects; numerical rows retain their own measurement IDs."}, "id": { "type": "string", "minLength": 1 }, "value": { "type": "number" }, "verificationTolerance": { "description": "Pre-execution absolute tolerance in the measurement unit. Required when no safe unit default exists and a strict comparison is intended.", "type": "number", "minimum": 0 }, "evidenceBasis": { "description": "How the paper-side numeric target was obtained.", "enum": ["reported_numeric", "digitized_figure", "derived_reported_relation"] }, "extractionUncertainty": { "description": "Absolute paper-side extraction uncertainty in the measurement unit, especially for values digitized from figures.", "type": "number", "minimum": 0 }, "sourceLocator": { "$ref": "#/$defs/locator" }, "dimensions": { "type": "object" } } }
473
+ ]
474
+ }
475
+ },
476
+ "reproduction": {
477
+ "type": "object",
478
+ "required": ["status"],
479
+ "properties": {
480
+ "status": { "description": "deferred means no experiment is scheduled and feasibility is unproven; blocked requires a concrete blocker with kind and source-backed evidence, never merely a missing experiment; planned requires at least one directly relevant automatically runnable measurement and may disclose partial coverage in reason; blocked is used only when no meaningful paper-bound experiment can run because a required scientific input, safe decision rule, access right, or feasible execution profile is unavailable; not_applicable is reserved for actual limitations, non-empirical method context, or claims derived from another represented claim.", "enum": ["planned", "deferred", "blocked", "not_applicable"] },
481
+ "scopeExclusions": { "type": "array", "items": { "type": "object", "required": ["measurementIds", "minimumScope", "reason"], "properties": { "measurementIds": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string" } }, "minimumScope": { "enum": ["medium", "high"] }, "reason": { "type": "string", "minLength": 1 } } } },
482
+ "blocker": { "type": "object", "required": ["kind", "evidence"], "properties": { "kind": { "enum": ["scientific_input", "access", "resources", "budget", "decision_rule"] }, "evidence": { "type": "string", "minLength": 1 }, "measurementIds": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true } } },
483
+ "implementationOrigin": { "enum": ["official", "citeark_reconstruction", "insufficient"] },
484
+ "reason": { "type": "string", "minLength": 1 },
485
+ "derivedFromClaimIds": { "type": "array", "items": { "type": "string", "minLength": 1 } }
486
+ }
487
+ }
488
+ }
489
+ }
490
+ },
491
+ "experiments": {
492
+ "type": "array",
493
+ "items": {
494
+ "type": "object",
495
+ "required": ["id", "title", "claimIds", "reproductionLevel", "repository", "protocol", "measurements"],
496
+ "anyOf": [
497
+ {"properties": {"measurements": {"minItems": 1}}},
498
+ {"required": ["observationTargets"], "properties": {"observationTargets": {"minItems": 1}}}
499
+ ],
500
+ "properties": {
501
+ "researchIntent": {
502
+ "type": "object",
503
+ "required": [
504
+ "question",
505
+ "comparison",
506
+ "criterion",
507
+ "from",
508
+ "to"
509
+ ],
510
+ "properties": {
511
+ "question": {
512
+ "type": "string",
513
+ "minLength": 1
514
+ },
515
+ "comparison": {
516
+ "type": "string",
517
+ "minLength": 1
518
+ },
519
+ "criterion": {
520
+ "type": "string",
521
+ "minLength": 1
522
+ },
523
+ "from": {
524
+ "type": "string",
525
+ "pattern": "^(object|claim|hypothesis|source):.+"
526
+ },
527
+ "to": {
528
+ "type": "string",
529
+ "pattern": "^(object|claim|hypothesis|source):.+"
530
+ },
531
+ "context": {
532
+ "type": "array",
533
+ "items": {
534
+ "type": "string",
535
+ "pattern": "^(object|claim|hypothesis|source):.+"
536
+ }
537
+ }
538
+ }
539
+ },
540
+ "steps": {
541
+ "type": "array",
542
+ "description": "Scientific method stages, not shell commands or Cartesian-product execution instances. Complete seed/checkpoint/layer axes belong in the stage description and expected collection conditions. Shared IDs require exactly the same inputs, outputs, recipe and workload identities.",
543
+ "items": {
544
+ "type": "object",
545
+ "required": [
546
+ "id",
547
+ "title",
548
+ "kind",
549
+ "inputIds",
550
+ "outputIds"
551
+ ],
552
+ "properties": {
553
+ "id": {
554
+ "type": "string",
555
+ "minLength": 1
556
+ },
557
+ "title": {
558
+ "type": "string",
559
+ "minLength": 1
560
+ },
561
+ "kind": {
562
+ "enum": [
563
+ "preparation",
564
+ "collection",
565
+ "preprocessing",
566
+ "training",
567
+ "evaluation",
568
+ "analysis"
569
+ ]
570
+ },
571
+ "description": {
572
+ "type": "string"
573
+ },
574
+ "inputIds": {
575
+ "type": "array",
576
+ "uniqueItems": true,
577
+ "items": {
578
+ "type": "string",
579
+ "minLength": 1
580
+ }
581
+ },
582
+ "outputIds": {
583
+ "type": "array",
584
+ "uniqueItems": true,
585
+ "items": {
586
+ "type": "string",
587
+ "minLength": 1
588
+ }
589
+ },
590
+ "dependsOn": {
591
+ "type": "array",
592
+ "uniqueItems": true,
593
+ "items": {
594
+ "type": "string",
595
+ "minLength": 1
596
+ }
597
+ },
598
+ "claimIds": {
599
+ "type": "array",
600
+ "uniqueItems": true,
601
+ "items": {
602
+ "type": "string",
603
+ "minLength": 1
604
+ }
605
+ },
606
+ "workloadIds": {
607
+ "type": "array",
608
+ "uniqueItems": true,
609
+ "items": {
610
+ "type": "string",
611
+ "minLength": 1
612
+ }
613
+ }
614
+ }
615
+ }
616
+ },
617
+ "inputIds": {
618
+ "type": "array",
619
+ "uniqueItems": true,
620
+ "items": {
621
+ "type": "string",
622
+ "minLength": 1
623
+ }
624
+ },
625
+ "id": { "type": "string", "minLength": 1 },
626
+ "versionId": { "type": "string" },
627
+ "title": { "type": "string", "minLength": 1 },
628
+ "claimIds": {
629
+ "description": "Claims tested by this experiment. An experiment may bind only the reported measurements it actually executes; multiple experiments may collectively cover one claim.",
630
+ "type": "array",
631
+ "minItems": 1,
632
+ "items": { "type": "string" }
633
+ },
634
+ "reproductionScope": { "enum": ["low", "medium", "high"] },
635
+ "requiredReproductionScope": { "enum": ["low", "medium", "high"], "description": "Minimum scope required by the actual work, across all disciplines." },
636
+ "reproductionLevel": { "enum": ["directional", "official-checkpoint", "full-training", "artifact-evaluation", "experiment-rerun", "workflow-rebuild"] },
637
+ "reconstructionFidelity": {
638
+ "description": "Scientific protocol fidelity, independent of whether the implementation is official or a CiteArk reconstruction.",
639
+ "enum": ["exact", "faithful", "approximate", "proxy"]
640
+ },
641
+ "implementationOrigin": { "enum": ["official", "citeark_reconstruction"] },
642
+ "repository": {
643
+ "type": "object",
644
+ "required": ["url", "commit"],
645
+ "properties": {
646
+ "implementationOrigin": { "enum": ["official", "citeark_reconstruction"] },
647
+ "url": { "type": "string", "minLength": 1 },
648
+ "commit": { "type": "string", "minLength": 1 }
649
+ }
650
+ },
651
+ "protocol": {
652
+ "type": "object",
653
+ "required": ["entrypoint", "requiredCommandFragments"],
654
+ "properties": {
655
+ "workload": {
656
+ "description": "Complete scientific execution units, grouped by materially different cost or method; probes must execute full units on the allocated device.",
657
+ "type": "object",
658
+ "additionalProperties": false,
659
+ "required": ["unit", "groups"],
660
+ "properties": {
661
+ "unit": { "type": "string", "minLength": 1 },
662
+ "groups": {
663
+ "type": "array", "minItems": 1,
664
+ "items": {
665
+ "type": "object", "additionalProperties": false,
666
+ "required": ["id", "units", "description"],
667
+ "properties": {
668
+ "id": { "type": "string", "minLength": 1 },
669
+ "units": { "type": "integer", "minimum": 1 },
670
+ "description": { "type": "string", "minLength": 1 }
671
+ }
672
+ }
673
+ }
674
+ }
675
+ },
676
+
677
+ "executionMode": {
678
+ "description": "agent_planned lets the execution Agent choose and revise concrete commands while preserving the immutable scientific objective and measurement scope. fixed_entrypoint preserves legacy exact-command behavior.",
679
+ "enum": ["agent_planned", "fixed_entrypoint"]
680
+ },
681
+ "objective": { "type": "string", "minLength": 1 },
682
+ "entrypoint": { "type": "string", "minLength": 1 },
683
+ "requiredCommandFragments": { "type": "array", "items": { "type": "string", "minLength": 1 } },
684
+ "instructions": { "type": "string" },
685
+ "benchmark": {
686
+ "description": "Complete prospective protocol for hardware-sensitive timing, throughput, memory, energy, or speedup measurements.",
687
+ "type": "object",
688
+ "additionalProperties": false,
689
+ "required": ["batchSize", "dtype", "warmupIterations", "measurementIterations", "timer", "synchronization", "inputConstruction", "implementations"],
690
+ "properties": {
691
+ "device": { "enum": ["cpu", "gpu"], "description": "Device required by the measurement itself. A GPU benchmark never falls back to CPU." },
692
+ "referenceHardware": { "type": "string", "description": "Paper hardware or explicit independent benchmark reference; another GPU does not establish equivalence." },
693
+ "hardwareBinding": { "enum": ["required", "not_required", "unknown"], "description": "Whether matching the paper's hardware and scale is scientifically required to assess the bound reported measurement. unknown is not automatically executable." },
694
+ "hardwareBindingRationale": { "type": "string", "minLength": 1, "description": "Source-grounded explanation of why the reported measurement is or is not bound to the paper hardware and scale." },
695
+ "hardwareBindingSources": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/locator" }, "description": "Paper or repository locations that establish the hardware-binding decision." },
696
+ "comparisonIntent": { "enum": ["reference_conditions", "cross_hardware"], "description": "Intended scientific comparison, not a comparability verdict. Specify whether reference conditions or a limited cross-hardware question are being tested." },
697
+ "comparisonRationale": { "type": "string", "minLength": 1, "description": "Source-grounded explanation of what the allocated hardware can establish and which original performance conditions remain untested." },
698
+ "requiredGpuTypes": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "Exact catalog GPU type constraints only when scientifically required; never encode merely preferred types here." },
699
+ "requiredGpuCount": { "type": "integer", "minimum": 1, "description": "Paper-bound GPU count required for the reported measurement, distinct from a cheaper exploratory allocation." },
700
+ "requiredVramGb": { "type": "number", "exclusiveMinimum": 0, "description": "Paper-bound minimum VRAM in GiB per GPU when the reported measurement requires it." },
701
+ "batchSize": {
702
+ "oneOf": [
703
+ { "type": "integer", "minimum": 1 },
704
+ { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "integer", "minimum": 1 } }
705
+ ]
706
+ },
707
+ "dtype": { "type": "string", "minLength": 1 },
708
+ "warmupIterations": { "type": "integer", "minimum": 1 },
709
+ "measurementIterations": { "type": "integer", "minimum": 1 },
710
+ "timer": { "type": "string", "minLength": 1 },
711
+ "synchronization": { "type": "string", "minLength": 1 },
712
+ "inputConstruction": { "type": "string", "minLength": 1 },
713
+ "implementations": {
714
+ "type": "array",
715
+ "minItems": 1,
716
+ "items": {
717
+ "type": "object",
718
+ "additionalProperties": false,
719
+ "required": ["id", "callable", "provenance"],
720
+ "properties": {
721
+ "id": { "type": "string", "minLength": 1 },
722
+ "callable": { "type": "string", "minLength": 1 },
723
+ "provenance": { "type": "string", "minLength": 1 }
724
+ }
725
+ }
726
+ }
727
+ }
728
+ },
729
+ "preflight": {
730
+ "description": "Bounded operational gate that must pass before the expensive scientific command begins. Optional only for legacy Research Plan 1.0 records.",
731
+ "type": "object",
732
+ "additionalProperties": false,
733
+ "required": ["schemaVersion", "source", "maxMinutes", "evidencePath", "checks", "assets"],
734
+ "properties": {
735
+ "schemaVersion": { "enum": ["0.1", "0.2", "0.3"] },
736
+ "source": { "enum": ["declared", "defaulted"] },
737
+ "maxMinutes": { "type": "number", "minimum": 1, "maximum": 240 },
738
+ "evidencePath": {
739
+ "type": "string",
740
+ "minLength": 1,
741
+ "pattern": "^(?!/)(?!\\.\\.(?:/|$))(?!.*\\/\\.\\.(?:/|$))[^\\\\]+$"
742
+ },
743
+ "checks": {
744
+ "type": "array",
745
+ "minItems": 1,
746
+ "items": {
747
+ "type": "object",
748
+ "additionalProperties": false,
749
+ "required": ["id", "kind", "successCriterion"],
750
+ "properties": {
751
+ "id": { "type": "string", "minLength": 1 },
752
+ "kind": { "enum": ["runtime", "dependencies", "dataset_loader", "assets", "entrypoint", "parser", "smoke_test", "duration"] },
753
+ "command": { "type": "string", "minLength": 1 },
754
+ "successCriterion": { "type": "string", "minLength": 1 }
755
+ }
756
+ }
757
+ },
758
+ "assets": {
759
+ "type": "array",
760
+ "items": {
761
+ "type": "object",
762
+ "additionalProperties": false,
763
+ "required": ["id", "kind", "identity", "availability", "required", "verification"],
764
+ "properties": {
765
+ "id": { "type": "string", "minLength": 1 },
766
+ "kind": { "enum": ["dataset", "checkpoint", "model", "repository", "other"] },
767
+ "identity": { "type": "string", "minLength": 1 },
768
+ "availability": { "enum": ["bundled", "public_verified", "public_unverified", "private", "unknown"] },
769
+ "required": { "type": "boolean" },
770
+ "verification": { "type": "string", "minLength": 1 },
771
+ "scientificRole": { "enum": ["execution_required", "identity_only", "provenance_only", "optional"] },
772
+ "acquisition": { "$ref": "#/$defs/assetAcquisition" },
773
+ "sourceEvidence": {
774
+ "type": "array",
775
+ "items": { "$ref": "#/$defs/assetSourceEvidence" }
776
+ },
777
+ "sourceUrls": {
778
+ "type": "array",
779
+ "minItems": 1,
780
+ "uniqueItems": true,
781
+ "items": { "type": "string", "format": "uri", "pattern": "^https?://" }
782
+ },
783
+ "registryDatasetId": { "type": "string", "minLength": 1 }
784
+ }
785
+ }
786
+ },
787
+ "requirements": {
788
+ "description": "Complete eight-row scientific material inventory. Required for newly compiled preflight 0.3 plans.",
789
+ "type": "array",
790
+ "minItems": 8,
791
+ "maxItems": 8,
792
+ "items": { "$ref": "#/$defs/assetRequirement" }
793
+ }
794
+ }
795
+ }
796
+ }
797
+ },
798
+ "observationTargets": {
799
+ "description": "Proposed comparisons of declared source observation collections. They preserve methods in the planning catalog but do not create numerical verification targets or automatic execution admission. Use only when a deterministic comparison is unresolved.",
800
+ "type": "array",
801
+ "items": {
802
+ "type": "object", "additionalProperties": false,
803
+ "required": ["claimId", "observationId", "comparison", "limitation"],
804
+ "properties": {
805
+ "claimId": {"type": "string", "minLength": 1},
806
+ "observationId": {"type": "string", "minLength": 1},
807
+ "comparison": {"type": "string", "minLength": 1},
808
+ "limitation": {"type": "object", "additionalProperties": false, "required": ["kind", "evidence"],
809
+ "properties": {"kind": {"const": "decision_rule"}, "evidence": {"type": "string", "minLength": 1}}}
810
+ }
811
+ }
812
+ },
813
+ "measurements": {
814
+ "description": "Numerical targets only. Every reportedMeasurementId must resolve to an actual claims[].reportedMeasurements[].id, never an observation object ID. May be empty for a proposed observation-only method.",
815
+ "type": "array",
816
+ "items": {
817
+ "allOf": [
818
+ { "$ref": "#/$defs/measurement" },
819
+ {
820
+ "type": "object",
821
+ "required": ["reportedMeasurementId", "parser"],
822
+ "properties": {
823
+ "reportedMeasurementId": { "type": "string", "minLength": 1 },
824
+ "parser": {
825
+ "type": "object",
826
+ "required": ["id", "version", "evidencePath"],
827
+ "properties": {
828
+ "id": { "type": "string", "minLength": 1 },
829
+ "version": { "type": "string", "minLength": 1 },
830
+ "evidencePath": {
831
+ "type": "string",
832
+ "minLength": 1,
833
+ "pattern": "^(?!/)(?!\\.\\.(?:/|$))(?!.*\\/\\.\\.(?:/|$))[^\\\\]+$"
834
+ },
835
+ "config": { "type": "object" }
836
+ }
837
+ }
838
+ }
839
+ }
840
+ ]
841
+ }
842
+ },
843
+ "agent": { "type": "object" },
844
+ "compute": { "$ref": "#/$defs/computeRequirement" },
845
+ "environment": { "type": "object", "properties": {"timeoutMinutes": {"type": "number", "exclusiveMinimum": 0, "description": "Finite execution timeout, separate from the complete workload estimate; bounded by computeContext.executionRuntime.timeoutCapsMinutes when supplied."}} }
846
+ }
847
+ }
848
+ },
849
+ "lineage": {
850
+ "type": "array",
851
+ "items": {
852
+ "type": "object",
853
+ "required": ["from", "to", "relation"],
854
+ "properties": {
855
+ "from": { "type": "string" },
856
+ "to": { "type": "string" },
857
+ "relation": { "type": "string" }
858
+ }
859
+ }
860
+ },
861
+ "coverage": {
862
+ "type": "object",
863
+ "required": ["items"],
864
+ "properties": {
865
+ "items": {
866
+ "type": "array",
867
+ "minItems": 1,
868
+ "items": {
869
+ "type": "object",
870
+ "required": ["id", "description", "sourceLocator", "status", "claimIds"],
871
+ "properties": {
872
+ "id": { "type": "string", "minLength": 1 },
873
+ "description": { "type": "string", "minLength": 1 },
874
+ "sourceLocator": { "$ref": "#/$defs/locator" },
875
+ "status": { "enum": ["represented", "deferred", "blocked", "not_applicable"] },
876
+ "claimIds": { "type": "array", "items": { "type": "string", "minLength": 1 } },
877
+ "reason": { "type": "string", "minLength": 1 }
878
+ }
879
+ }
880
+ }
881
+ }
882
+ },
883
+ "license": {
884
+ "type": "object",
885
+ "required": ["paper", "code", "executionAllowed"],
886
+ "properties": {
887
+ "paper": { "type": "string" },
888
+ "code": { "type": "string" },
889
+ "dataset": { "type": "string" },
890
+ "checkpoint": { "type": "string" },
891
+ "executionAllowed": { "type": "boolean" },
892
+ "redistribution": { "type": "string" }
893
+ }
894
+ },
895
+ "provenance": {
896
+ "type": "object",
897
+ "required": ["compiler", "compiledAt", "reviewStatus"],
898
+ "properties": {
899
+ "compiler": { "type": "string" },
900
+ "compiledAt": { "type": "string" },
901
+ "reviewStatus": { "enum": ["agent-draft", "human-reviewed"] },
902
+ "inputs": { "type": "array", "items": { "type": "string" } },
903
+ "normalizationWarnings": {
904
+ "type": "array",
905
+ "description": "Deterministic compiler-boundary repairs or conservative degradations applied by CiteArk.",
906
+ "items": { "type": "string" }
907
+ }
908
+ }
909
+ }
910
+ },
911
+ "$defs": {
912
+ "selectionGroup": {
913
+ "type": "object",
914
+ "additionalProperties": false,
915
+ "required": ["id", "title", "description", "experimentIds"],
916
+ "properties": {
917
+ "id": { "type": "string", "minLength": 1 },
918
+ "title": { "type": "string", "minLength": 1 },
919
+ "description": { "type": "string", "minLength": 1 },
920
+ "experimentIds": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }
921
+ }
922
+ },
923
+ "selectionPreset": {
924
+ "type": "object",
925
+ "additionalProperties": false,
926
+ "required": ["experimentIds", "rationale"],
927
+ "properties": {
928
+ "experimentIds": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
929
+ "rationale": { "type": "string", "minLength": 1 }
930
+ }
931
+ },
932
+ "assetRequirement": {
933
+ "type": "object",
934
+ "additionalProperties": false,
935
+ "required": ["kind", "required", "reason", "assetIds", "checkIds", "repository"],
936
+ "properties": {
937
+ "kind": { "enum": ["author_code", "model", "tokenizer", "training_data", "evaluation_data", "evaluator", "configuration", "dependencies"] },
938
+ "required": { "type": "boolean" },
939
+ "reason": { "type": "string", "minLength": 1 },
940
+ "assetIds": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
941
+ "checkIds": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
942
+ "repository": { "type": "boolean" }
943
+ }
944
+ },
945
+ "assetAcquisition": {
946
+ "type": "object",
947
+ "additionalProperties": false,
948
+ "required": ["mode"],
949
+ "properties": {
950
+ "mode": { "enum": ["auto", "metadata", "selective", "full", "stream"] },
951
+ "revision": { "type": "string", "minLength": 1 },
952
+ "requiredPaths": { "type": "array", "description": "Backward-compatible selective prefetch hints. Entries may describe alternative formats; an unmatched entry does not block the reproduction Agent.", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
953
+ "excludedPaths": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
954
+ "expectedDownloadBytes": { "type": "integer", "minimum": 0 },
955
+ "expectedExpandedBytes": { "type": "integer", "minimum": 0 },
956
+ "maximumDownloadBytes": { "type": "integer", "minimum": 1 },
957
+ "maximumExpandedBytes": { "type": "integer", "minimum": 1 },
958
+ "supportsStreaming": { "type": "boolean" }
959
+ }
960
+ },
961
+ "assetSourceEvidence": {
962
+ "type": "object",
963
+ "additionalProperties": false,
964
+ "required": ["source", "locator"],
965
+ "properties": {
966
+ "source": { "enum": ["paper", "repository", "dataset_registry"] },
967
+ "locator": { "type": "string", "minLength": 1 },
968
+ "path": { "type": "string", "minLength": 1 },
969
+ "commit": { "type": "string", "minLength": 1 },
970
+ "resolver": { "enum": ["exact_url", "append_path", "huggingface_model", "huggingface_dataset"] },
971
+ "suffix": { "type": "string", "minLength": 1 }
972
+ }
973
+ },
974
+ "locator": {
975
+ "type": "object",
976
+ "required": ["sourceId", "locator"],
977
+ "properties": {
978
+ "sourceId": { "type": "string", "minLength": 1 },
979
+ "locator": { "type": "string", "minLength": 1 }
980
+ }
981
+ },
982
+ "measurement": {
983
+ "type": "object",
984
+ "required": ["metric", "unit"],
985
+ "properties": {
986
+ "objectIds": {
987
+ "type": "array",
988
+ "uniqueItems": true,
989
+ "items": {
990
+ "type": "string",
991
+ "minLength": 1
992
+ }
993
+ },
994
+ "metric": { "type": "string", "minLength": 1 },
995
+ "quantityKind": { "enum": ["device_performance", "operation_count", "numerical_result"], "description": "Scientific quantity semantics used for hardware admission; metric spelling alone is not authoritative." },
996
+ "unit": { "type": "string", "minLength": 1 },
997
+ "value": { "type": "number" },
998
+ "aggregation": { "type": "string" },
999
+ "evidenceBasis": { "enum": ["reported_numeric", "digitized_figure", "derived_reported_relation"] },
1000
+ "extractionUncertainty": { "type": "number", "minimum": 0 }
1001
+ }
1002
+ },
1003
+ "computeRequirement": {
1004
+ "type": "object",
1005
+ "additionalProperties": false,
1006
+ "required": ["accelerator", "cpuCores", "memoryGb", "gpuCount", "cpuFallbackAllowed", "rationale"],
1007
+ "allOf": [
1008
+ {
1009
+ "if": { "properties": { "accelerator": { "enum": ["optional", "required"] } } },
1010
+ "then": { "properties": { "gpuCount": { "exclusiveMinimum": 0 } } }
1011
+ }
1012
+ ],
1013
+ "properties": {
1014
+ "accelerator": { "enum": ["none", "optional", "required"] },
1015
+ "cpuCores": { "type": "number", "exclusiveMinimum": 0 },
1016
+ "memoryGb": { "type": "number", "exclusiveMinimum": 0 },
1017
+ "gpuCount": { "type": "number", "minimum": 0 },
1018
+ "minVramGb": { "type": "number", "exclusiveMinimum": 0 },
1019
+ "preferredGpuTypes": { "type": "array", "items": { "type": "string", "minLength": 1 } },
1020
+ "cpuFallbackAllowed": { "type": "boolean" },
1021
+ "preemptionSafe": { "type": "boolean" },
1022
+ "estimatedDurationMinutes": {
1023
+ "type": "object",
1024
+ "additionalProperties": false,
1025
+ "properties": {
1026
+ "cpu": { "type": "number", "exclusiveMinimum": 0 },
1027
+ "gpu": { "type": "number", "exclusiveMinimum": 0 }
1028
+ }
1029
+ },
1030
+ "workloads": {
1031
+ "description": "Exact reusable accounting batches with complete recipes, parameter/seed sets and total durations. Partition only for shared consumer subsets; one batch member does not require its own step or output object.",
1032
+ "type": "array", "minItems": 1,
1033
+ "items": { "type": "object", "required": ["id", "description", "estimatedDurationMinutes"], "additionalProperties": false,
1034
+ "properties": { "id": { "type": "string", "minLength": 1 }, "description": { "type": "string", "minLength": 1 },
1035
+ "estimatedDurationMinutes": { "type": "object", "minProperties": 1, "additionalProperties": false,
1036
+ "properties": { "cpu": { "type": "number", "exclusiveMinimum": 0 }, "gpu": { "type": "number", "exclusiveMinimum": 0 } } }
1037
+ }
1038
+ }
1039
+ },
1040
+ "rationale": { "type": "string", "minLength": 1 }
1041
+ }
1042
+ }
1043
+ }
1044
+ }