/claim #12
Contributes to #12.
Summary
- Adds a self-contained
scientific-reference-workbench module for the Real-Time Collaborative Editor bounty.
- Focuses on the rich scientific formatting layer rather than another broad editor, operation replay, offline conflict, governance, or notebook collaboration module.
- Extracts citation keys, validates bibliography coverage, numbers figure/table/equation labels, resolves cross-references, checks publication-style required sections, emits reviewer formatting tasks, renders formatted blocks, and signs the packet with a stable digest.
- Includes synthetic sample manuscript data, requirement map, tests, CLI demo, SVG demo frame, and short MP4 demo artifact.
Why this slice is distinct
Existing #12 submissions cover broad collaborative editors, deterministic operation replay, review governance, offline conflict resolution, and notebook collaboration. This PR targets the publication-formatting boundary inside a scientific editor: whether citations, figures, tables, equations, and required sections are export-ready before a manuscript leaves the collaborative workspace.
Demo
scientific-reference-workbench/docs/demo.mp4
scientific-reference-workbench/docs/demo.svg
cd scientific-reference-workbench && npm run demo
Demo output:
Manuscript: Protocol-Guided Perturbation Screening
Status: format-review-needed
Citations discovered: 3
Missing citations: missing2026
Cross references: 3
Formatting tasks: 1
Top action: Add bibliography entry for @missing2026 or remove the citation.
Digest: 064f49a67d574df15bf4bca6b46fb3dc87dca20da2d326dc1c94d89129094aa2
Verification
cd scientific-reference-workbench
npm run check
npm test
npm run demo
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height,duration -of default=noprint_wrappers=1 docs/demo.mp4
cd ..
git diff --check
git diff --cached --check
rg -n 'api[_-]?key|private[_-]?key|password|secret|token|wallet|ssn' scientific-reference-workbench || true
Local results:
scientific-reference-workbench tests passed
codec_name=h264
width=1280
height=720
duration=4.000000
AI-assisted with OpenAI Codex; I reviewed the implementation and local validation before submitting.