Make reproducible SciDEX analyses portable outside the live database. Each completed capsule should be exportable as a standards-friendly research object bundle with enough metadata to be archived, cited, and reverified later, including references to durable source-code identifiers where possible.
This task should focus on RO-Crate-compatible exports and archival hooks such as Software Heritage-style source references.
docs/planning/specs/quest_reproducible_analysis_capsules_spec.mddocs/planning/specs/repro_capsule_manifest_schema_spec.md65ac9e7d-eb54-4243-818c-2193162a6c45 — capsule manifest schemarocrate_export.py — generates RO-Crate-compatible JSON-LD bundles with:artifact_registry.py with SWH archival fields in get_capsule_manifest():register_capsule() with git_commit, git_tree_hash, swh_origin_url, swh_snapshot_id paramsapi_register_capsule() with same SWH archival parameters/api/capsules/{id}/export endpoint — returns full bundle metadata (crate_id, checksum, entities, archival references)/api/capsules/{id}/export-files endpoint — exports bundle to /home/ubuntu/scidex/exports/rocrate/{id}/exports/rocrate/capsule-af7e5ae5-957c-4517-93bc-6a14b0655d4d/@context: https://w3id.org/ro/crate/1.1, input/output entities, provenance, checksums, and SWH swh:1:ext: reference for the git commit.generate_rocrate_bundle() and get_capsule_manifest() in worktree:{
"requirements": {
"coding": 7,
"reasoning": 7,
"analysis": 6,
"safety": 9
},
"_stall_skip_providers": [],
"_stall_requeued_by": "max_outlook",
"_stall_requeued_at": "2026-04-12 09:26:52",
"completion_shas": [
"dcc329a3619cbb3f4a15c4354b62d084b3c8a434"
],
"completion_shas_checked_at": "2026-04-12T12:46:15.903742+00:00",
"completion_shas_missing": [
"e60d639963b60f539c811feab7604f4dec822ba8",
"73fecc5698271deacd5c54400c5c0005a2a406a3",
"c760419723d17a64356340cf805ecdc2c344ef79",
"6bf61507d5d050c328dd5b136944419cdf5c475e",
"f2a439c0addd927345d0a7dcff844b8561b0131d"
],
"_stall_skip_at": {},
"_stall_skip_pruned_at": "2026-04-14T10:37:14.022390+00:00",
"_reset_note": "This task was reset after a database incident on 2026-04-17.\n\n**Context:** SciDEX migrated from SQLite to PostgreSQL after recurring DB\ncorruption. Some work done during Apr 16-17 may have been lost.\n\n**Before starting work:**\n1. Check if the task's goal is ALREADY satisfied (run the relevant checks)\n2. Check `git log --all --grep=task:YOUR_TASK_ID` for prior commits\n3. If complete, verify and mark done. If partial, continue. If not done, proceed.\n\n**DB change:** SciDEX now uses PostgreSQL. `get_db()` auto-detects via\nSCIDEX_DB_BACKEND=postgres env var.",
"_reset_at": "2026-04-18T06:29:22.046013+00:00",
"_reset_from_status": "done"
}