OCDocker.Workbench package

The Workbench package defines declarative campaign, study, ablation, run, and result models used by GUI and automation layers. The active browser dashboard is now centered on a strict OCScore output layout: baseline replicas live directly under the served root, or under a train/ child, and ablation studies live under ablation/ or ablations/. Generic adopted Workbench manifest folders are reported as unsupported instead of being treated as OCScore runs. The dashboard exposes curated metrics as sortable ablation-table columns, replica status, ablation summaries, dataset/role/metric-filtered figure previews, separate test, validation, and combined generated metric-delta/rank/stability plots with SVG/CSV export, and separated model-comparison versus selected-model figure sections through /api/ocscore-workspace. The dashboard Design tab composes custom feature-policy ablations interactively: clone bundled policies, preview kept/excluded features against workspace metadata, and generate read-only YAML plus ocdocker ocscore train command plans through /api/ablation-design. /api/vs-design mirrors this for single-target vs/pipeline docking runs: discover receptor/ligand/box candidates, validate a draft selection, and preview the exact launch command (one receptor/ligand/box per draft). /api/vs-campaign does the same for multi-sample batches: discover an input/{sample}/... layout (or a hand-authored manifest), validate every row, and preview the generated script — one tracked vs_campaign job that runs every row and continues past an individual failure. Campaigns support two execution engines: a zero-dependency sequential shell loop (default), or engine="snakemake" for real DAG orchestration (parallel via --cores, resumable via --rerun-incomplete) using the bundled multi-sample Snakefile (OCDocker.Workbench.Jobs, OCDocker/Workbench/Snakefiles/vs_campaign.smk). While a campaign runs, GET /api/jobs/{job_id}/campaign-progress (OCDocker.Workbench.CampaignProgress) reports structured per-sample status parsed from the job’s own log — reliable pending/running/done/failed per sample for the Snakemake engine, aggregate counts only for the shell engine. Job-execute endpoints (/api/jobs*) can launch, track, and cancel vs, pipeline, ocscore train, ocscore reduce, and vs_campaign runs as local subprocesses; these endpoints require a bearer token while inspection endpoints remain read-only and unauthenticated.

Submodules