simjecture 0.3.2__tar.gz → 0.4.0__tar.gz

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 (518) hide show
  1. {simjecture-0.3.2 → simjecture-0.4.0}/.github/workflows/ci.yml +10 -1
  2. {simjecture-0.3.2 → simjecture-0.4.0}/.github/workflows/release.yml +10 -1
  3. {simjecture-0.3.2 → simjecture-0.4.0}/.gitignore +2 -0
  4. {simjecture-0.3.2 → simjecture-0.4.0}/CHANGELOG.md +24 -0
  5. {simjecture-0.3.2 → simjecture-0.4.0}/CITATION.cff +2 -2
  6. {simjecture-0.3.2 → simjecture-0.4.0}/PKG-INFO +6 -5
  7. {simjecture-0.3.2 → simjecture-0.4.0}/README.md +4 -4
  8. {simjecture-0.3.2 → simjecture-0.4.0}/docs/conf.py +1 -1
  9. {simjecture-0.3.2 → simjecture-0.4.0}/docs/how-to/deepseek-harness.md +91 -21
  10. simjecture-0.4.0/docs/how-to/dsh-upgrade-assessment.md +73 -0
  11. {simjecture-0.3.2 → simjecture-0.4.0}/docs/how-to/simote-agent-roles.md +10 -3
  12. {simjecture-0.3.2 → simjecture-0.4.0}/docs/index.md +2 -1
  13. {simjecture-0.3.2 → simjecture-0.4.0}/integrations/dsh/README.md +35 -19
  14. {simjecture-0.3.2 → simjecture-0.4.0}/integrations/dsh/adjudicator.js +9 -22
  15. {simjecture-0.3.2 → simjecture-0.4.0}/integrations/dsh/context-elider.js +3 -3
  16. {simjecture-0.3.2 → simjecture-0.4.0}/integrations/dsh/cordis.patch.yml +16 -67
  17. {simjecture-0.3.2 → simjecture-0.4.0}/integrations/dsh/job-waiter.js +2 -2
  18. simjecture-0.4.0/integrations/dsh/package-lock.json +8976 -0
  19. simjecture-0.4.0/integrations/dsh/package.json +48 -0
  20. simjecture-0.4.0/integrations/dsh/research-tools.js +19 -0
  21. {simjecture-0.3.2 → simjecture-0.4.0}/integrations/dsh/roles.js +33 -13
  22. {simjecture-0.3.2 → simjecture-0.4.0}/integrations/dsh/runner.js +29 -10
  23. simjecture-0.4.0/integrations/dsh/tests/jobs.test.js +77 -0
  24. simjecture-0.4.0/integrations/dsh/tests/profile-model.js +31 -0
  25. simjecture-0.4.0/integrations/dsh/tests/profile.test.js +75 -0
  26. simjecture-0.4.0/integrations/dsh/tests/roles.test.js +141 -0
  27. simjecture-0.4.0/integrations/dsh/tests/runtime.js +61 -0
  28. simjecture-0.4.0/integrations/dsh/tests/session.test.js +114 -0
  29. simjecture-0.4.0/packaging/launch/INSTALL.md +49 -0
  30. simjecture-0.4.0/packaging/launch/launch.sh +12 -0
  31. simjecture-0.4.0/packaging/launch/setup.sh +17 -0
  32. {simjecture-0.3.2 → simjecture-0.4.0}/pyproject.toml +11 -2
  33. simjecture-0.4.0/scripts/build_launch_package.py +64 -0
  34. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/__init__.py +1 -1
  35. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/campaign_kernel.py +6 -0
  36. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/mcp_schemas.py +7 -0
  37. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/mcp_server.py +20 -2
  38. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/role_assignments.py +4 -1
  39. simjecture-0.4.0/src/conjecture_solver/workspace_images.py +47 -0
  40. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_dsh_bundle.py +12 -36
  41. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_dsh_engine.py +1 -1
  42. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_mcp_server.py +2 -1
  43. simjecture-0.4.0/tests/test_workspace_images.py +51 -0
  44. {simjecture-0.3.2 → simjecture-0.4.0}/uv.lock +3 -1
  45. simjecture-0.3.2/integrations/dsh/package.json +0 -40
  46. {simjecture-0.3.2 → simjecture-0.4.0}/.env.example +0 -0
  47. {simjecture-0.3.2 → simjecture-0.4.0}/.gitattributes +0 -0
  48. {simjecture-0.3.2 → simjecture-0.4.0}/.readthedocs.yaml +0 -0
  49. {simjecture-0.3.2 → simjecture-0.4.0}/CONTRIBUTING.md +0 -0
  50. {simjecture-0.3.2 → simjecture-0.4.0}/LICENSE +0 -0
  51. {simjecture-0.3.2 → simjecture-0.4.0}/NOTICE +0 -0
  52. {simjecture-0.3.2 → simjecture-0.4.0}/SECURITY.md +0 -0
  53. {simjecture-0.3.2 → simjecture-0.4.0}/THIRD_PARTY_NOTICES.md +0 -0
  54. {simjecture-0.3.2 → simjecture-0.4.0}/capabilities/atomec-1.4.0.json +0 -0
  55. {simjecture-0.3.2 → simjecture-0.4.0}/capabilities/flash-island-coalescence-resistive-mhd-4.8.json +0 -0
  56. {simjecture-0.3.2 → simjecture-0.4.0}/capabilities/m-aneos-1.0.json +0 -0
  57. {simjecture-0.3.2 → simjecture-0.4.0}/capabilities/optab-1.3.1.json +0 -0
  58. {simjecture-0.3.2 → simjecture-0.4.0}/capabilities/singularity-eos-1.12.1.json +0 -0
  59. {simjecture-0.3.2 → simjecture-0.4.0}/capabilities/warpx-cpu-26.07.json +0 -0
  60. {simjecture-0.3.2 → simjecture-0.4.0}/capabilities/warpx-cuda-openpmd-26.07.json +0 -0
  61. {simjecture-0.3.2 → simjecture-0.4.0}/demos/README.md +0 -0
  62. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/README.md +0 -0
  63. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/artifact_provenance.json +0 -0
  64. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/hypothesis_ledger.json +0 -0
  65. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/mvp_manifest.json +0 -0
  66. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/mvp_report.json +0 -0
  67. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/workspace/artifacts/commission_binary64_ops.json +0 -0
  68. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/workspace/artifacts/commission_series_round_002.json +0 -0
  69. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/workspace/artifacts/commission_series_round_003.json +0 -0
  70. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/workspace/artifacts/euler_bound_002_prospective.json +0 -0
  71. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/workspace/artifacts/euler_ten_step_error.json +0 -0
  72. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/workspace/scripts/commission_binary64_ops.py +0 -0
  73. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/workspace/scripts/commission_series_round_002.py +0 -0
  74. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/workspace/scripts/commission_series_round_003.py +0 -0
  75. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/workspace/scripts/euler_bound_002_prospective.py +0 -0
  76. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/record/workspace/scripts/euler_ten_step_error.py +0 -0
  77. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/sha256.json +0 -0
  78. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/validation.json +0 -0
  79. {simjecture-0.3.2 → simjecture-0.4.0}/demos/agent_roles_validation/verify_record.py +0 -0
  80. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/README.md +0 -0
  81. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/campaign_instruction.txt +0 -0
  82. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/guided/anchor_operator_validation.json +0 -0
  83. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/guided/gem_anchor_validation.json +0 -0
  84. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/guided/gem_collisionless.py +0 -0
  85. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/guided/prior_campaign_0002_audit_summary.json +0 -0
  86. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/guided/prior_campaign_0003_audit_summary.json +0 -0
  87. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/guided/prior_campaign_audit_summary.json +0 -0
  88. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/guided_commission.json +0 -0
  89. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/hypothesis.txt +0 -0
  90. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/plot_results.py +0 -0
  91. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/artifact_provenance.json +0 -0
  92. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/claim_summary.md +0 -0
  93. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/guided_commissioning.json +0 -0
  94. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/hypothesis_ledger.json +0 -0
  95. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/literature_searches.json +0 -0
  96. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/mvp_manifest.json +0 -0
  97. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/mvp_report.json +0 -0
  98. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/transcript.jsonl +0 -0
  99. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000012.py +0 -0
  100. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000013.py +0 -0
  101. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000019.py +0 -0
  102. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000020.py +0 -0
  103. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000026.py +0 -0
  104. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000027.py +0 -0
  105. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000032.py +0 -0
  106. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000033.py +0 -0
  107. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000037.py +0 -0
  108. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000041.py +0 -0
  109. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000042.py +0 -0
  110. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000043.py +0 -0
  111. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000049.py +0 -0
  112. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/analyze_ensemble.py +0 -0
  113. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/analyze_manifest.json +0 -0
  114. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/commission_summary.json +0 -0
  115. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/ensemble_result.json +0 -0
  116. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t1_s20260902/diagnostic_overview.svg +0 -0
  117. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t1_s20260902/final_fields.npz +0 -0
  118. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t1_s20260902/warpx_used_inputs +0 -0
  119. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t20_s20260902/diagnostic_overview.svg +0 -0
  120. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t20_s20260902/final_fields.npz +0 -0
  121. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t20_s20260902/warpx_used_inputs +0 -0
  122. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t1_s20260902_summary.json +0 -0
  123. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t1_s20260903_summary.json +0 -0
  124. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t1_s20260904_summary.json +0 -0
  125. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t20_s20260902_summary.json +0 -0
  126. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t20_s20260903_summary.json +0 -0
  127. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t20_s20260904_summary.json +0 -0
  128. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t1_s20260902_summary.json +0 -0
  129. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t1_s20260903_summary.json +0 -0
  130. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t1_s20260904_summary.json +0 -0
  131. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t20_s20260902_summary.json +0 -0
  132. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t20_s20260903_summary.json +0 -0
  133. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t20_s20260904_summary.json +0 -0
  134. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/design_pin.json +0 -0
  135. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/energy_reader.py +0 -0
  136. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fallback_solver_plan.json +0 -0
  137. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/commission_manifest.json +0 -0
  138. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/commission_output.json +0 -0
  139. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/commission_output_wb.json +0 -0
  140. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t1_s20260902_summary.json +0 -0
  141. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t1_s20260903_summary.json +0 -0
  142. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t1_s20260904_summary.json +0 -0
  143. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t20_s20260902_summary.json +0 -0
  144. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t20_s20260903_summary.json +0 -0
  145. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t20_s20260904_summary.json +0 -0
  146. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t1_s20260902_summary.json +0 -0
  147. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t1_s20260903_summary.json +0 -0
  148. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t1_s20260904_summary.json +0 -0
  149. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t20_s20260902_summary.json +0 -0
  150. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t20_s20260903_summary.json +0 -0
  151. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t20_s20260904_summary.json +0 -0
  152. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/gen_fixtures.py +0 -0
  153. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/guided/anchor_operator_validation.json +0 -0
  154. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/guided/gem_anchor_validation.json +0 -0
  155. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/guided/gem_collisionless.py +0 -0
  156. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/guided/prior_campaign_0002_audit_summary.json +0 -0
  157. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/guided/prior_campaign_0003_audit_summary.json +0 -0
  158. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/record/workspace/guided/prior_campaign_audit_summary.json +0 -0
  159. {simjecture-0.3.2 → simjecture-0.4.0}/demos/collisionless_gem_reconnection/verify_record.py +0 -0
  160. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/README.md +0 -0
  161. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/capture_tui.py +0 -0
  162. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/hypothesis.txt +0 -0
  163. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/plot_results.py +0 -0
  164. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/README.md +0 -0
  165. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/artifact_provenance.json +0 -0
  166. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/claim_summary.md +0 -0
  167. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/hypothesis_ledger.json +0 -0
  168. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/mvp_manifest.json +0 -0
  169. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/mvp_report.json +0 -0
  170. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/transcript.jsonl +0 -0
  171. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/analyze_results.py +0 -0
  172. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/calc_growth.py +0 -0
  173. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/linear_stability.py +0 -0
  174. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/mode_analysis.py +0 -0
  175. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/mode_analysis_results.json +0 -0
  176. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/pick_regime.py +0 -0
  177. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/regime_candidates.json +0 -0
  178. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/result_s1.npz +0 -0
  179. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/result_s10.npz +0 -0
  180. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/result_s10_dt025.npz +0 -0
  181. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/result_s1_dt025.npz +0 -0
  182. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/root_pattern_results.json +0 -0
  183. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/root_s10_dt0p025.npz +0 -0
  184. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/root_s10_dt0p05.npz +0 -0
  185. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/root_s1_dt0p025.npz +0 -0
  186. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/root_s1_dt0p05.npz +0 -0
  187. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/simulate_gs.py +0 -0
  188. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/simulate_gs_dt025.py +0 -0
  189. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/simulate_gs_root.py +0 -0
  190. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/simulation_results.json +0 -0
  191. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/simulation_results_dt025.json +0 -0
  192. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/record/workspace/turing_diagnostic.py +0 -0
  193. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/reproduce.py +0 -0
  194. {simjecture-0.3.2 → simjecture-0.4.0}/demos/gray_scott_counterexample/verify_record.py +0 -0
  195. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/.gitignore +0 -0
  196. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/README.md +0 -0
  197. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/campaign_audit.json +0 -0
  198. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/campaign_instruction.txt +0 -0
  199. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/figures/README.md +0 -0
  200. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/figures/island_coalescence_evolution.png +0 -0
  201. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/figures/reconnection_layer_physics.png +0 -0
  202. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/figures/reconnection_microphysics_profiles.png +0 -0
  203. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/figures/scaling_law_discovery.png +0 -0
  204. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/figures/simjecture_web_dashboard.png +0 -0
  205. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/guided/anchor_validation.json +0 -0
  206. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/guided/island_coalescence.py +0 -0
  207. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/guided/operator_validation.json +0 -0
  208. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/guided_commission.json +0 -0
  209. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/hypothesis.txt +0 -0
  210. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/literature_basis.md +0 -0
  211. {simjecture-0.3.2 → simjecture-0.4.0}/demos/resistive_mhd_island_coalescence/plot_results.py +0 -0
  212. {simjecture-0.3.2 → simjecture-0.4.0}/docs/_static/demos/gem-ensemble-result.png +0 -0
  213. {simjecture-0.3.2 → simjecture-0.4.0}/docs/_static/demos/gem-reconnection-fields.png +0 -0
  214. {simjecture-0.3.2 → simjecture-0.4.0}/docs/_static/demos/gray-scott-completed-tui.svg +0 -0
  215. {simjecture-0.3.2 → simjecture-0.4.0}/docs/_static/demos/gray-scott-result.png +0 -0
  216. {simjecture-0.3.2 → simjecture-0.4.0}/docs/concepts/architecture.md +0 -0
  217. {simjecture-0.3.2 → simjecture-0.4.0}/docs/concepts/evidence-and-claims.md +0 -0
  218. {simjecture-0.3.2 → simjecture-0.4.0}/docs/demos/collisionless-gem.md +0 -0
  219. {simjecture-0.3.2 → simjecture-0.4.0}/docs/demos/gray-scott.md +0 -0
  220. {simjecture-0.3.2 → simjecture-0.4.0}/docs/development/documentation.md +0 -0
  221. {simjecture-0.3.2 → simjecture-0.4.0}/docs/development/releasing.md +0 -0
  222. {simjecture-0.3.2 → simjecture-0.4.0}/docs/getting-started/first-run.md +0 -0
  223. {simjecture-0.3.2 → simjecture-0.4.0}/docs/getting-started/installation.md +0 -0
  224. {simjecture-0.3.2 → simjecture-0.4.0}/docs/getting-started/terminal-ui.md +0 -0
  225. {simjecture-0.3.2 → simjecture-0.4.0}/docs/getting-started/web-interface.md +0 -0
  226. {simjecture-0.3.2 → simjecture-0.4.0}/docs/how-to/add-a-capability.md +0 -0
  227. {simjecture-0.3.2 → simjecture-0.4.0}/docs/how-to/deploy-runtimes.md +0 -0
  228. {simjecture-0.3.2 → simjecture-0.4.0}/docs/how-to/guided-commissioning.md +0 -0
  229. {simjecture-0.3.2 → simjecture-0.4.0}/docs/reference/cli.md +0 -0
  230. {simjecture-0.3.2 → simjecture-0.4.0}/docs/reference/repository-map.md +0 -0
  231. {simjecture-0.3.2 → simjecture-0.4.0}/docs/requirements.txt +0 -0
  232. {simjecture-0.3.2 → simjecture-0.4.0}/docs/research/limitations.md +0 -0
  233. {simjecture-0.3.2 → simjecture-0.4.0}/docs/research/next-steps.md +0 -0
  234. {simjecture-0.3.2 → simjecture-0.4.0}/docs/research/run-0004.md +0 -0
  235. {simjecture-0.3.2 → simjecture-0.4.0}/docs/research/status.md +0 -0
  236. {simjecture-0.3.2 → simjecture-0.4.0}/environments/warpx-cpu.yml +0 -0
  237. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/AIStrategyDraft.schema.json +0 -0
  238. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ActionExecution.schema.json +0 -0
  239. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ActionFailureRecord.schema.json +0 -0
  240. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/AttemptRecord.schema.json +0 -0
  241. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/BlindedSearchReport.schema.json +0 -0
  242. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/BlindedSearchRequest.schema.json +0 -0
  243. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/CampaignAction.schema.json +0 -0
  244. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/CampaignActionGraph.schema.json +0 -0
  245. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/CampaignActionState.schema.json +0 -0
  246. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/CampaignBudget.schema.json +0 -0
  247. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/CampaignCheckpoint.schema.json +0 -0
  248. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/CampaignState.schema.json +0 -0
  249. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/CandidateEvaluation.schema.json +0 -0
  250. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/CandidateResult.schema.json +0 -0
  251. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/CapabilityManifest.schema.json +0 -0
  252. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/Claim.schema.json +0 -0
  253. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/CollisionalityIntervention.schema.json +0 -0
  254. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ControlDirective.schema.json +0 -0
  255. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/DecisionRecord.schema.json +0 -0
  256. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/DiscoveryPackage.schema.json +0 -0
  257. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/DispatchAttempt.schema.json +0 -0
  258. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/DomainDiagnosisSummary.schema.json +0 -0
  259. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/DomainEvolutionSummary.schema.json +0 -0
  260. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/DomainPluginMetadata.schema.json +0 -0
  261. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/DomainRunSummary.schema.json +0 -0
  262. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/DomainTemplateSummary.schema.json +0 -0
  263. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ExperimentSpec.schema.json +0 -0
  264. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ExternalReceipt.schema.json +0 -0
  265. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/FreshSeedIntervention.schema.json +0 -0
  266. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/HumanIntervention.schema.json +0 -0
  267. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/HypothesisNode.schema.json +0 -0
  268. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/KineticSufficiencyDiscoveryPackage.schema.json +0 -0
  269. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/KineticSufficiencyHypothesisInput.schema.json +0 -0
  270. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/KineticSufficiencyResult.schema.json +0 -0
  271. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/KineticSufficiencySolveResult.schema.json +0 -0
  272. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/LifecycleEvent.schema.json +0 -0
  273. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/MVPGuidedCommissioningSpec.schema.json +0 -0
  274. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/MatchedPairFormalPredicate.schema.json +0 -0
  275. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ModelCallProvenance.schema.json +0 -0
  276. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/MultiActionCampaignReport.schema.json +0 -0
  277. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/NormalizedResult.schema.json +0 -0
  278. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/NumericalAssessment.schema.json +0 -0
  279. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/NumericalDiagnostics.schema.json +0 -0
  280. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/NumericalGate.schema.json +0 -0
  281. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ObservablePrediction.schema.json +0 -0
  282. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/OutboxIntent.schema.json +0 -0
  283. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/PICCaseResult.schema.json +0 -0
  284. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/PICConfig.schema.json +0 -0
  285. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/PICConfirmationAttempt.schema.json +0 -0
  286. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/PICConfirmationDesign.schema.json +0 -0
  287. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/PICConfirmationReport.schema.json +0 -0
  288. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/PICMixtureCaseResult.schema.json +0 -0
  289. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/PICNumericalConfig.schema.json +0 -0
  290. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/PICSufficiencyResult.schema.json +0 -0
  291. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ParameterSpace.schema.json +0 -0
  292. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ParticleStatisticsIntervention.schema.json +0 -0
  293. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ProposalDraft.schema.json +0 -0
  294. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ProposalRecord.schema.json +0 -0
  295. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ProposalRequest.schema.json +0 -0
  296. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ProposalValidation.schema.json +0 -0
  297. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ProposedToolCall.schema.json +0 -0
  298. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/QualifiedWarpXCampaignPackage.schema.json +0 -0
  299. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/QualifiedWarpXInstrument.schema.json +0 -0
  300. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ReferenceQualification.schema.json +0 -0
  301. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchBudget.schema.json +0 -0
  302. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchCampaignReport.schema.json +0 -0
  303. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchConclusion.schema.json +0 -0
  304. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchDecision.schema.json +0 -0
  305. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchEvidencePolicy.schema.json +0 -0
  306. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchHypothesis.schema.json +0 -0
  307. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchObservation.schema.json +0 -0
  308. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchProblemContract.schema.json +0 -0
  309. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchRelation.schema.json +0 -0
  310. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchToolManifest.schema.json +0 -0
  311. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/ResearchToolResult.schema.json +0 -0
  312. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/RunEvidence.schema.json +0 -0
  313. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/RunPlan.schema.json +0 -0
  314. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/SearchStrategy.schema.json +0 -0
  315. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/SheetThicknessIntervention.schema.json +0 -0
  316. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/SubprocessResearchToolConfig.schema.json +0 -0
  317. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/SymmetricMixtureCandidate.schema.json +0 -0
  318. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXCalibrationPoint.schema.json +0 -0
  319. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXCaseSummary.schema.json +0 -0
  320. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXCompiledCase.schema.json +0 -0
  321. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXConfirmationAttempt.schema.json +0 -0
  322. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXConfirmationDesign.schema.json +0 -0
  323. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXConfirmationFailure.schema.json +0 -0
  324. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXConfirmationReport.schema.json +0 -0
  325. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXConfirmationResolution.schema.json +0 -0
  326. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXExecutionProfile.schema.json +0 -0
  327. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXNumericalConfig.schema.json +0 -0
  328. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXPairSummary.schema.json +0 -0
  329. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXPhysicalConfig.schema.json +0 -0
  330. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXPhysicsQualificationRecord.schema.json +0 -0
  331. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXQualificationRecord.schema.json +0 -0
  332. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/WarpXQualifiedScope.schema.json +0 -0
  333. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/mvp/MVPAgentAction.schema.json +0 -0
  334. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/mvp/MVPAgentReport.schema.json +0 -0
  335. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/mvp/MVPClaim.schema.json +0 -0
  336. {simjecture-0.3.2 → simjecture-0.4.0}/schemas/mvp/MVPClaimLedger.schema.json +0 -0
  337. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/postprocess_warpx_case.py +0 -0
  338. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/probe_provider.py +0 -0
  339. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/propose_hypothesis.py +0 -0
  340. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/propose_search_strategy.py +0 -0
  341. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/qualify_warpx.py +0 -0
  342. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/qualify_warpx_physics.py +0 -0
  343. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/run_admitted_proposal.py +0 -0
  344. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/run_blinded_search.py +0 -0
  345. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/run_qualified_warpx_campaign.py +0 -0
  346. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/run_warpx_confirmation.py +0 -0
  347. {simjecture-0.3.2 → simjecture-0.4.0}/scripts/run_warpx_pair.py +0 -0
  348. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/SKILL.md +0 -0
  349. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/agents/openai.yaml +0 -0
  350. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/examples/atomec_runtime_smoke.py +0 -0
  351. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/examples/maneos_runtime_smoke.py +0 -0
  352. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/examples/singularity_runtime_smoke.py +0 -0
  353. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/manifest.json +0 -0
  354. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/references/execution-output.md +0 -0
  355. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/references/local-deployment.md +0 -0
  356. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/scripts/bootstrap_atomec.sh +0 -0
  357. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/scripts/bootstrap_maneos.sh +0 -0
  358. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/scripts/bootstrap_singularity_eos.sh +0 -0
  359. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/scripts/maneos_query.f90 +0 -0
  360. {simjecture-0.3.2 → simjecture-0.4.0}/skills/eos/scripts/singularity_query.cpp +0 -0
  361. {simjecture-0.3.2 → simjecture-0.4.0}/skills/flash-mhd/SKILL.md +0 -0
  362. {simjecture-0.3.2 → simjecture-0.4.0}/skills/flash-mhd/agents/openai.yaml +0 -0
  363. {simjecture-0.3.2 → simjecture-0.4.0}/skills/flash-mhd/examples/runtime_smoke.py +0 -0
  364. {simjecture-0.3.2 → simjecture-0.4.0}/skills/flash-mhd/manifest.json +0 -0
  365. {simjecture-0.3.2 → simjecture-0.4.0}/skills/flash-mhd/references/execution-output.md +0 -0
  366. {simjecture-0.3.2 → simjecture-0.4.0}/skills/flash-mhd/references/local-deployment.md +0 -0
  367. {simjecture-0.3.2 → simjecture-0.4.0}/skills/flash-mhd/references/model-validity.md +0 -0
  368. {simjecture-0.3.2 → simjecture-0.4.0}/skills/flash-mhd/references/private-install.md +0 -0
  369. {simjecture-0.3.2 → simjecture-0.4.0}/skills/flash-mhd/scripts/bootstrap_flash.sh +0 -0
  370. {simjecture-0.3.2 → simjecture-0.4.0}/skills/opacity/SKILL.md +0 -0
  371. {simjecture-0.3.2 → simjecture-0.4.0}/skills/opacity/agents/openai.yaml +0 -0
  372. {simjecture-0.3.2 → simjecture-0.4.0}/skills/opacity/examples/optab_runtime_smoke.py +0 -0
  373. {simjecture-0.3.2 → simjecture-0.4.0}/skills/opacity/manifest.json +0 -0
  374. {simjecture-0.3.2 → simjecture-0.4.0}/skills/opacity/references/execution-output.md +0 -0
  375. {simjecture-0.3.2 → simjecture-0.4.0}/skills/opacity/references/local-deployment.md +0 -0
  376. {simjecture-0.3.2 → simjecture-0.4.0}/skills/opacity/scripts/bootstrap_optab.sh +0 -0
  377. {simjecture-0.3.2 → simjecture-0.4.0}/skills/opacity/scripts/write_optab_preflight.py +0 -0
  378. {simjecture-0.3.2 → simjecture-0.4.0}/skills/python-experiment/SKILL.md +0 -0
  379. {simjecture-0.3.2 → simjecture-0.4.0}/skills/python-experiment/manifest.json +0 -0
  380. {simjecture-0.3.2 → simjecture-0.4.0}/skills/scientific-markdown/SKILL.md +0 -0
  381. {simjecture-0.3.2 → simjecture-0.4.0}/skills/scientific-markdown/agents/openai.yaml +0 -0
  382. {simjecture-0.3.2 → simjecture-0.4.0}/skills/scientific-markdown/manifest.json +0 -0
  383. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/SKILL.md +0 -0
  384. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/agents/openai.yaml +0 -0
  385. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/examples/implicit_em_smoke.py +0 -0
  386. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/examples/minimal_smoke.py +0 -0
  387. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/examples/openpmd_field_smoke.py +0 -0
  388. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/examples/openpmd_xz_reader.py +0 -0
  389. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/manifest.json +0 -0
  390. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/references/2d-xz-commissioning.md +0 -0
  391. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/references/cpu-launch-tuning.md +0 -0
  392. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/references/diagnostics.md +0 -0
  393. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/references/gpu-launch-tuning.md +0 -0
  394. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/references/hybrid-pic.md +0 -0
  395. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/references/local-cuda-deployment.md +0 -0
  396. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/references/numerical-risks.md +0 -0
  397. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/references/picmi-interface.md +0 -0
  398. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/references/resource-scaling.md +0 -0
  399. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/references/time-integration.md +0 -0
  400. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/scripts/benchmark_cpu_threads.py +0 -0
  401. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/scripts/benchmark_gpu.py +0 -0
  402. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/scripts/bootstrap_local_cuda.sh +0 -0
  403. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/scripts/probe_local_cuda.py +0 -0
  404. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/scripts/reduced_energy_budget.py +0 -0
  405. {simjecture-0.3.2 → simjecture-0.4.0}/skills/warpx/scripts/run_local_cuda.sh +0 -0
  406. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/__main__.py +0 -0
  407. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/action_handlers.py +0 -0
  408. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/adapters/__init__.py +0 -0
  409. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/adapters/base.py +0 -0
  410. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/adapters/fake.py +0 -0
  411. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/adapters/pic.py +0 -0
  412. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/adapters/warpx.py +0 -0
  413. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/autonomous_research.py +0 -0
  414. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/benchmarks/__init__.py +0 -0
  415. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/benchmarks/electrostatic_pic.py +0 -0
  416. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/benchmarks/kinetic_sufficiency.py +0 -0
  417. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/campaign.py +0 -0
  418. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/campaign_jobs.py +0 -0
  419. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/cli.py +0 -0
  420. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/confirmation.py +0 -0
  421. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/control.py +0 -0
  422. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/corrective_audit.py +0 -0
  423. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/deployment.py +0 -0
  424. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/discovery.py +0 -0
  425. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/domains/__init__.py +0 -0
  426. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/domains/base.py +0 -0
  427. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/domains/kinetic_sufficiency.py +0 -0
  428. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/dsh_engine.py +0 -0
  429. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/kernel_worker.py +0 -0
  430. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/ledger.py +0 -0
  431. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/lifecycle.py +0 -0
  432. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/literature.py +0 -0
  433. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/llm.py +0 -0
  434. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/models.py +0 -0
  435. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/mvp_agent.py +0 -0
  436. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/mvp_claims.py +0 -0
  437. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/mvp_control.py +0 -0
  438. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/mvp_guidance.py +0 -0
  439. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/mvp_launch.py +0 -0
  440. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/mvp_monitor.py +0 -0
  441. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/mvp_skills.py +0 -0
  442. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/oneshot.py +0 -0
  443. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/orchestration.py +0 -0
  444. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/outbox.py +0 -0
  445. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/parameters.py +0 -0
  446. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/presentation.py +0 -0
  447. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/proposals.py +0 -0
  448. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/research_tools.py +0 -0
  449. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/schema_export.py +0 -0
  450. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/search.py +0 -0
  451. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/semantics.py +0 -0
  452. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/tui/__init__.py +0 -0
  453. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/tui/app.py +0 -0
  454. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/tui/claim_views.py +0 -0
  455. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/tui/screens.py +0 -0
  456. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/warpx_analysis.py +0 -0
  457. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/warpx_campaign.py +0 -0
  458. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/warpx_confirmation.py +0 -0
  459. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/__init__.py +0 -0
  460. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/application.py +0 -0
  461. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/server.py +0 -0
  462. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/app.js +0 -0
  463. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/index.html +0 -0
  464. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/markdown.js +0 -0
  465. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/styles.css +0 -0
  466. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/vendor/LICENSE.dagre.txt +0 -0
  467. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/vendor/LICENSE.dompurify.txt +0 -0
  468. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/vendor/LICENSE.katex.txt +0 -0
  469. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/vendor/LICENSE.marked.txt +0 -0
  470. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/vendor/README.md +0 -0
  471. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/vendor/dagre-2.0.0.min.js +0 -0
  472. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/vendor/dompurify-3.4.14.min.js +0 -0
  473. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/vendor/katex-0.18.4.min.js +0 -0
  474. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/vendor/katex-auto-render-0.18.4.min.js +0 -0
  475. {simjecture-0.3.2 → simjecture-0.4.0}/src/conjecture_solver/web/static/vendor/marked-18.0.10.umd.js +0 -0
  476. {simjecture-0.3.2 → simjecture-0.4.0}/tests/__init__.py +0 -0
  477. {simjecture-0.3.2 → simjecture-0.4.0}/tests/fixtures/fake_warpx_runner.py +0 -0
  478. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_adapter.py +0 -0
  479. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_autonomous_research.py +0 -0
  480. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_benchmark.py +0 -0
  481. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_campaign.py +0 -0
  482. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_campaign_jobs.py +0 -0
  483. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_campaign_kernel.py +0 -0
  484. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_control.py +0 -0
  485. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_corrective_audit.py +0 -0
  486. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_deployment.py +0 -0
  487. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_domain_plugins.py +0 -0
  488. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_ledger.py +0 -0
  489. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_lifecycle.py +0 -0
  490. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_literature.py +0 -0
  491. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_llm.py +0 -0
  492. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_models.py +0 -0
  493. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_mvp_agent.py +0 -0
  494. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_mvp_claims.py +0 -0
  495. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_mvp_control.py +0 -0
  496. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_mvp_monitor.py +0 -0
  497. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_mvp_pause.py +0 -0
  498. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_mvp_status_watch.py +0 -0
  499. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_oneshot.py +0 -0
  500. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_orchestration.py +0 -0
  501. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_outbox.py +0 -0
  502. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_parameters.py +0 -0
  503. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_pic.py +0 -0
  504. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_proposals.py +0 -0
  505. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_recorded_demo.py +0 -0
  506. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_role_assignments.py +0 -0
  507. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_schema_export.py +0 -0
  508. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_search.py +0 -0
  509. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_semantics.py +0 -0
  510. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_tui.py +0 -0
  511. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_tui_claim_views.py +0 -0
  512. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_warpx.py +0 -0
  513. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_warpx_analysis.py +0 -0
  514. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_warpx_campaign.py +0 -0
  515. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_warpx_openpmd_xz.py +0 -0
  516. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_warpx_qualification.py +0 -0
  517. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_warpx_reduced_energy.py +0 -0
  518. {simjecture-0.3.2 → simjecture-0.4.0}/tests/test_web.py +0 -0
@@ -50,7 +50,16 @@ jobs:
50
50
  - name: Install uv
51
51
  run: python -m pip install uv
52
52
  - name: Install locked environment
53
- run: uv sync --frozen --extra tui
53
+ run: uv sync --frozen --extra tui --extra dsh
54
+ - uses: actions/setup-node@v4
55
+ with:
56
+ node-version: "22.23.1"
57
+ cache: npm
58
+ cache-dependency-path: integrations/dsh/package-lock.json
59
+ - name: Install pinned DSH test runtime
60
+ run: npm ci --prefix integrations/dsh
61
+ - name: Test DSH adapter and real MCP profile
62
+ run: SIMJECTURE_MCP_EXECUTABLE="$PWD/.venv/bin/simjecture-mcp" npm test --prefix integrations/dsh
54
63
  - name: Lint
55
64
  run: uv run ruff check .
56
65
  - name: Test
@@ -40,7 +40,16 @@ jobs:
40
40
  --ro-bind /lib64 /lib64 \
41
41
  /usr/bin/true
42
42
  - name: Install locked test environment
43
- run: uv sync --frozen --extra tui
43
+ run: uv sync --frozen --extra tui --extra dsh
44
+ - uses: actions/setup-node@v4
45
+ with:
46
+ node-version: "22.23.1"
47
+ cache: npm
48
+ cache-dependency-path: integrations/dsh/package-lock.json
49
+ - name: Install pinned DSH test runtime
50
+ run: npm ci --prefix integrations/dsh
51
+ - name: Test DSH adapter and real MCP profile
52
+ run: SIMJECTURE_MCP_EXECUTABLE="$PWD/.venv/bin/simjecture-mcp" npm test --prefix integrations/dsh
44
53
  - name: Lint release source
45
54
  run: uv run ruff check .
46
55
  - name: Test release source
@@ -21,3 +21,5 @@ artifacts/
21
21
  !demos/agent_roles_validation/record/workspace/artifacts/*.json
22
22
  data/
23
23
  .private/
24
+
25
+ integrations/dsh/node_modules/
@@ -4,6 +4,30 @@ This project follows semantic versioning. Dates use ISO 8601.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.4.0 — 2026-09-20
8
+
9
+ - Updated the bundled DSH integration to the tested `0.1.5-rc.2` runtime,
10
+ including current session, tool-call, prompt and structured-output APIs.
11
+ The Python release and DSH bundle now share version `0.4.0`.
12
+ - Enabled native web search, page retrieval, shell, filesystem, skills,
13
+ workflows and configured plugins for research agents. Scientific calls retain
14
+ role restrictions; independent judges retain their frozen-case isolation.
15
+ - Separated the native research workspace from authoritative campaign files.
16
+ Upgrades start a fresh `.research-v1` conversation, reconcile existing kernel
17
+ state, and preserve older conversations. Built-in DSH file/shell policies
18
+ protect records; arbitrary installed plugins remain trusted process code.
19
+ - Added `read_workspace_image` for bounded PNG, JPEG and WebP image inspection
20
+ through MCP, with dimensions and content hashes. Inspection is not evidence
21
+ acceptance and requires a vision-capable model.
22
+ - Extended the Simote scientific tool catalog for image reads. Matching Simote
23
+ changes add AGY workers and judges; Simote remains a separate optional app.
24
+ - Added real-runtime DSH tests for role isolation, context pruning, V2/V3 log
25
+ migration, durable-job recovery and complete CLI/MCP pause/resume behavior.
26
+ - Verified native search, fetch, file writing and image inspection with real
27
+ DeepSeek API calls on non-simulation research tasks.
28
+ - Added a Linux launch bundle containing the wheel, source distribution,
29
+ matching DSH profile, setup/launch scripts and SHA-256 checksums.
30
+
7
31
  ## 0.3.2 — 2026-09-09
8
32
 
9
33
  - Added `simjecture-call`, a one-shot JSON transport for trusted supervisors,
@@ -2,8 +2,8 @@ cff-version: 1.2.0
2
2
  message: "If you use this software, please cite the exact software version and Git commit."
3
3
  title: "Simjecture"
4
4
  type: software
5
- version: 0.3.2
6
- date-released: 2026-09-09
5
+ version: 0.4.0
6
+ date-released: 2026-09-20
7
7
  abstract: >-
8
8
  An evidence-governed runtime for autonomous computational experimentation and
9
9
  falsification over hypothesis trees.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: simjecture
3
- Version: 0.3.2
3
+ Version: 0.4.0
4
4
  Summary: Evidence-governed autonomous experimentation and falsification for computational science
5
5
  Project-URL: Homepage, https://github.com/tomzhu0225/simjecture
6
6
  Project-URL: Documentation, https://github.com/tomzhu0225/simjecture/tree/main/docs
@@ -24,6 +24,7 @@ Requires-Dist: httpx<1,>=0.27
24
24
  Requires-Dist: matplotlib<4,>=3.8
25
25
  Requires-Dist: numpy<3,>=1.26
26
26
  Requires-Dist: pandas<4,>=2.2
27
+ Requires-Dist: pillow<13,>=10
27
28
  Requires-Dist: pydantic<3,>=2.9
28
29
  Requires-Dist: scipy<2,>=1.12
29
30
  Provides-Extra: dsh
@@ -49,7 +50,7 @@ writes its own experiments and diagnostics, and searches deliberately for the
49
50
  simplest result that survives independent verification. The harness controls
50
51
  what may count as evidence.
51
52
 
52
- > **Research preview:** version 0.3 extends the infrastructure with a
53
+ > **Research preview:** version 0.4 extends the infrastructure with a
53
54
  > license-safe FLASH resistive-MHD capability and an explicitly bounded
54
55
  > island-coalescence audit. It does not claim to solve arbitrary
55
56
  > scientific prose, establish truth about nature from one simulator, or replace
@@ -289,11 +290,11 @@ the human-first projection.
289
290
 
290
291
  ## DeepSeek Harness integration
291
292
 
292
- The v0.2.2 integration moves the model-facing research loop to DeepSeek Harness
293
+ The v0.4.0 integration moves the model-facing research loop to DeepSeek Harness
293
294
  without moving scientific authority out of Simjecture. DSH owns the provider,
294
295
  conversation, retry policy, compaction, and resumable session. A native MCP
295
- boundary implements 22 typed endpoints. A compact persistent Lead Scientist
296
- sees seven coordination tools and delegates claim work to fresh, scoped
296
+ boundary implements 23 typed endpoints. A compact persistent Lead Scientist
297
+ sees eight scientific coordination/inspection tools plus native research tools and delegates claim work to fresh, scoped
297
298
  Falsifier/Experimenter, Blocker Resolver, and Repair Scientist sessions. A separate fresh,
298
299
  tool-free Judge reviews surviving claims. The Python campaign kernel continues to own hypotheses,
299
300
  evidence contracts, commissioning, skills, simulation capabilities, sandboxing,
@@ -13,7 +13,7 @@ writes its own experiments and diagnostics, and searches deliberately for the
13
13
  simplest result that survives independent verification. The harness controls
14
14
  what may count as evidence.
15
15
 
16
- > **Research preview:** version 0.3 extends the infrastructure with a
16
+ > **Research preview:** version 0.4 extends the infrastructure with a
17
17
  > license-safe FLASH resistive-MHD capability and an explicitly bounded
18
18
  > island-coalescence audit. It does not claim to solve arbitrary
19
19
  > scientific prose, establish truth about nature from one simulator, or replace
@@ -253,11 +253,11 @@ the human-first projection.
253
253
 
254
254
  ## DeepSeek Harness integration
255
255
 
256
- The v0.2.2 integration moves the model-facing research loop to DeepSeek Harness
256
+ The v0.4.0 integration moves the model-facing research loop to DeepSeek Harness
257
257
  without moving scientific authority out of Simjecture. DSH owns the provider,
258
258
  conversation, retry policy, compaction, and resumable session. A native MCP
259
- boundary implements 22 typed endpoints. A compact persistent Lead Scientist
260
- sees seven coordination tools and delegates claim work to fresh, scoped
259
+ boundary implements 23 typed endpoints. A compact persistent Lead Scientist
260
+ sees eight scientific coordination/inspection tools plus native research tools and delegates claim work to fresh, scoped
261
261
  Falsifier/Experimenter, Blocker Resolver, and Repair Scientist sessions. A separate fresh,
262
262
  tool-free Judge reviews surviving claims. The Python campaign kernel continues to own hypotheses,
263
263
  evidence contracts, commissioning, skills, simulation capabilities, sandboxing,
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  project = "Simjecture"
4
4
  author = "Bowen Zhu"
5
5
  copyright = "2026, Bowen Zhu and contributors"
6
- release = "0.3.0"
6
+ release = "0.4.0"
7
7
 
8
8
  extensions = [
9
9
  "myst_parser",
@@ -1,16 +1,21 @@
1
1
  # Run a Simjecture campaign under DSH
2
2
 
3
3
  The DSH integration is a native-tool profile plus a small resumable driver for
4
- a durable Simjecture campaign. Version 0.2.2 uses a persistent Lead Scientist
4
+ a durable Simjecture campaign. Version 0.4.0 uses a persistent Lead Scientist
5
5
  and fresh, claim-scoped Falsifier, Repair Scientist, and tool-free Judge
6
6
  sessions. Fresh workers see bounded kernel state rather than inherited chat.
7
- The Python MCP process is the only scientific tool surface: it exposes campaign
8
- state, claims, evidence contracts, skills, literature metadata, workspace files,
9
- and bounded jobs. Generic shell, filesystem bypass, and unguarded `finish` tools are
10
- disabled by the profile wherever the host DSH version supports disabling them.
11
- The profile also sets DSH's approval policy to `never`: all remaining scientific
12
- side effects already cross the typed CampaignKernel policy and Bubblewrap
13
- boundary, so no second routine permission loop is inserted around MCP calls.
7
+ Native web search, page fetch, shell, filesystem, skills, workflows and configured
8
+ plugins remain available to research agents. Only authoritative Simjecture tools
9
+ are filtered by scientific role. The Python MCP process governs campaign state,
10
+ contracts, evidence acceptance, and tracked experiments. Its image endpoint
11
+ returns bounded PNG/JPEG/WebP pixels for vision-capable models.
12
+
13
+ The profile uses DSH's `workspace-write` file policy around a separate research
14
+ directory and approval `never` (no prompts; escalation requests are rejected).
15
+ Experiment execution retains Simjecture's separate Bubblewrap sandbox.
16
+
17
+ For the upstream version review and migration requirements, see the
18
+ [DSH upgrade assessment](dsh-upgrade-assessment.md).
14
19
 
15
20
  ## Provision the two runtimes
16
21
 
@@ -59,8 +64,8 @@ resulting local bundle into the isolated harness profile:
59
64
  ```bash
60
65
  SIMJECTURE_DSH_PROFILE="$(simjecture dsh-profile)"
61
66
  npm pack "$SIMJECTURE_DSH_PROFILE" --pack-destination /tmp
62
- dsh plugin --profile simjecture add @deepseek-ai/dsh-headless@0.1.1-rc.2
63
- dsh plugin --profile simjecture add /tmp/simjecture-dsh-bundle-0.2.2.tgz
67
+ dsh plugin --profile simjecture add @deepseek-ai/dsh-headless@0.1.5-rc.2
68
+ dsh plugin --profile simjecture add /tmp/simjecture-dsh-bundle-0.4.0.tgz
64
69
  ```
65
70
 
66
71
  For a checkout-only development install, use the directory directly when the
@@ -71,11 +76,13 @@ dsh plugin --profile simjecture add "$PWD/integrations/dsh"
71
76
  ```
72
77
 
73
78
  The bundle pins the tested DSH prerelease and MCP-client prerelease in its
74
- `package.json`. Keep the lockfile produced by `npm pack`/the DSH plugin manager
75
- with the deployment artifact; do not silently widen either range.
79
+ `package.json`. The source bundle includes a `package-lock.json` for `npm ci` and runtime tests.
80
+ Keep the separate lockfile produced by the DSH plugin manager with the
81
+ deployment artifact; `npm pack` does not create a lockfile. Do not widen the pins.
76
82
 
77
- DSH `0.1.1-rc.2` requires Node.js `^22.19.0` or `>=24.0.0`. Install the DSH CLI
78
- according to its upstream instructions and verify that `dsh` is on `PATH`
83
+ DSH `0.1.5-rc.2` requires Node.js `^22.19.0` or `>=24.0.0`. Install the DSH CLI
84
+ at that exact version (`npm install -g @deepseek-ai/dsh@0.1.5-rc.2`)
85
+ and verify that `dsh` is on `PATH`
79
86
  before installing this isolated profile.
80
87
 
81
88
  ## Inspect the resolved configuration
@@ -91,8 +98,8 @@ Confirm that the native MCP client is named `simjecture`, starts
91
98
  `simjecture-mcp`, carries the `SIMJECTURE_*` environment, and has
92
99
  `failOnStartupError: true`. Also confirm `approval.policy: never`, the
93
100
  `simjecture` permission preset (`workspace-write` plus `never`), and that the
94
- generic tool rows are disabled. A startup or handshake failure should stop the
95
- scientific profile rather than silently fall back to a bypass tool.
101
+ native research tools remain enabled. A startup or handshake failure must stop
102
+ the profile before its first model request.
96
103
 
97
104
  Completed large execution and workspace-write exchanges stay fully visible for
98
105
  one model request. At a later step the profile may replace the balanced exchange
@@ -138,11 +145,12 @@ simjecture-mcp --workspace "$SIMJECTURE_WORKSPACE" \
138
145
 
139
146
  That command speaks MCP over stdio and expects an MCP client; it is not a
140
147
  human-facing REPL. Use DSH's initialize/list-tools/call-tool trace to verify the
141
- 22 explicit MCP endpoints before submitting work. The persistent lead sees seven
142
- tools: two durable reads, fresh falsification, blocker resolution, and repair
143
- delegation, independent adjudication, and guarded finalization. Each worker receives a narrower tool
144
- surface plus a claim-scoped argument guard. Raw judge prepare/commit operations
145
- are private to the adjudication composite.
148
+ 23 explicit MCP endpoints before submitting work. The lead has eight scientific
149
+ coordination/inspection tools alongside native research tools. Workers receive
150
+ role-specific scientific subsets and claim guards, while retaining native tools.
151
+ Native delegated children inherit their parent's scientific restrictions. The
152
+ independent judge sees only its frozen case and DSH's structured-output handoff;
153
+ raw judge prepare/commit operations remain private to the composite.
146
154
 
147
155
  `observation_sufficient=true` means that a linked artifact satisfies its
148
156
  selected prospective contract; it is not a researcher-issued support verdict.
@@ -191,3 +199,65 @@ a `repairs` child; an honestly complete blocker may close as
191
199
  the immutable hand-off artifact. If later review finds an error, append a
192
200
  corrective audit record rather than editing the original ledger, transcript, or
193
201
  report.
202
+
203
+ ## Upgrade an existing deployment
204
+
205
+ Stop its campaign supervisor and back up the entire campaign directory, including
206
+ `operator_input/dsh_sessions`, before upgrading the CLI and isolated profile.
207
+ Install DSH `0.1.5-rc.2`, replace the headless bundle with the matching version,
208
+ and install Simjecture's `0.4.0` profile using the commands above. Inspect
209
+ `--dump-config` before resuming. Do not mix the `0.1.6` alpha packages into this
210
+ profile. Provider/model selection stays in your DSH configuration.
211
+
212
+ DSH publishes a new V3 session generation when opening an older supported log
213
+ for writing; it retains the older generation. A rollback must use the complete
214
+ pre-upgrade campaign backup and the matching older runtime/profile. Do not point
215
+ an older DSH runtime at a campaign that has continued under the newer version.
216
+
217
+ To reproduce adapter validation from this checkout:
218
+
219
+ ```bash
220
+ uv sync --extra dsh
221
+ npm ci --prefix integrations/dsh
222
+ SIMJECTURE_MCP_EXECUTABLE="$PWD/.venv/bin/simjecture-mcp" npm test --prefix integrations/dsh
223
+ uv run pytest -q tests/test_dsh_bundle.py tests/test_dsh_engine.py
224
+ ```
225
+
226
+ The JavaScript tests use the pinned real DSH agent loop, tools, child runtime,
227
+ and persistence, with a deterministic model adapter. The CLI test also starts
228
+ the real Python MCP server and exercises snapshot, finalization refusal,
229
+ pause/resume, and mandatory-startup failure. It skips when the Python executable
230
+ is unavailable. These tests make no paid model requests and run no scientific
231
+ simulation. The test profile uses filesystem polling to avoid host inotify
232
+ limits; this is a test setting, not a change to deployed profiles.
233
+
234
+ ## Research workspace and record boundary
235
+
236
+ The runner creates a native research directory outside `SIMJECTURE_WORKSPACE`.
237
+ Its default is the sibling `.simjecture-research/<session-id>` directory;
238
+ `SIMJECTURE_DSH_RESEARCH_ROOT` can select another directory. Overlapping research
239
+ and campaign roots are rejected. Native DSH file and shell tools may write in
240
+ this research directory; they cannot directly overwrite campaign files under
241
+ the configured file policy. Network tools remain enabled. Copy experiment source
242
+ into the scientific workspace using `write_workspace_file` before submitting a
243
+ contracted run. Native notes and calculations do not automatically become evidence.
244
+
245
+ Bundle 0.4.0 uses the deterministic `<launch-session-id>.research-v1` DSH identity.
246
+ This deliberately avoids resuming pre-0.4.0 sessions whose immutable working
247
+ directory was the campaign itself. On first upgrade, the researcher starts a
248
+ fresh conversation and reconciles the existing kernel snapshot; previous logs
249
+ are retained. Later pause/resume uses the new stable identity normally.
250
+
251
+ This is a boundary for DSH's enforcing built-in tools, not an OS security boundary
252
+ around arbitrary plugin code. Installed extensions are trusted code with the
253
+ DSH process's authority; upstream 0.1.5 workflow workers likewise are not a
254
+ security sandbox. Deploy the scientific service under a separate account or on
255
+ another host if protection against hostile extensions is required. This profile
256
+ does not install that account/service separation.
257
+
258
+ `read_workspace_image(path)` accepts campaign-relative PNG, JPEG, and WebP files
259
+ up to 4 MiB and 16 megapixels. MCP clients receive actual image content plus
260
+ path, dimensions, byte count and SHA-256 metadata. A vision-capable model is
261
+ required to interpret the pixels. Image reading is non-mutating and does not
262
+ promote an artifact to scientific evidence. The independent judge still receives
263
+ only its frozen adjudication packet, not unrestricted browsing or image tools.
@@ -0,0 +1,73 @@
1
+ # DSH upgrade assessment — 2026-09-20
2
+
3
+ Migration implemented: Simjecture profile `0.2.3` pins DSH `0.1.5-rc.2`.
4
+ The scientific CampaignKernel and its evidence contract remain unchanged.
5
+ The adapter changes and validation described below replace the earlier
6
+ recommendation to retain `0.1.1-rc.2` pending compatibility work.
7
+
8
+ The official npm registry currently tags `0.1.5-rc.2` as `latest` and `next`,
9
+ and `0.1.6-alpha.2` as `alpha`. These are all prereleases. The recommended first
10
+ migration target is the default-channel `0.1.5-rc.2`, keeping the alpha work
11
+ separate. Versions were checked with `npm view @deepseek-ai/dsh dist-tags --json`.
12
+
13
+ ## Compatibility findings addressed
14
+
15
+ The audit inspected upstream tag `dsh-v0.1.5-rc.2`, commit
16
+ `fb2c4b9e698e30edb738bca4cf0618587db7d203`.
17
+
18
+ | Boundary | Previous adapter | Upstream target | Migration requirement |
19
+ | --- | --- | --- | --- |
20
+ | Session history | `runner.js` and `context-elider.js` read `session.events` | `Session` exposes `snapshotEvents()` and `eventAt()` instead | Migrate history access and exercise resume, summarization, and pruning against real DSH |
21
+ | Surface replacement | `context-elider.js` writes `{ op: 'replace', start, end }` | `SurfaceOp` requires `startSeq` and `endSeq` | Update replacement events and test balanced tool exchanges and preserved original history |
22
+ | Durable sessions | Existing campaign-local DSH logs | Target includes session-format V3 and V2-to-V3 migration | Test upgrade on copies of old logs, including restart and failed migration; retain originals for rollback |
23
+ | Profile composition | Pinned headless profile, disabled generic tools, seven lead tools and scoped workers | Plugin composition and runtime have evolved | Inspect resolved configuration and actual tool catalogs; test mandatory MCP startup failure and every role restriction |
24
+
25
+ Primary source files:
26
+
27
+ - [Session history implementation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/core/session/src/index.ts)
28
+ - [Surface event types](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/core/session/src/types.ts)
29
+ - [V2-to-V3 migration](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/session/session-format-v2-to-v3/src/migration.ts)
30
+ - [Official releases](https://github.com/deepseek-ai/deepseek-harness/releases)
31
+
32
+ The `0.1.6` release notes additionally describe headless stdin/session/JSON-event
33
+ support, MCP SDK v2, asynchronous agent initialization, deprecation of synchronous
34
+ history readers, and changes to plugin loading. Those features may eventually
35
+ simplify our custom driver, but do not by themselves replace its campaign budget,
36
+ control-file, activity projection, and reconciliation responsibilities. An alpha
37
+ migration should use its asynchronous history API rather than adopting a newly
38
+ deprecated synchronous interface.
39
+
40
+ ## Why the scientific kernel does not need to change
41
+
42
+ DSH owns model requests, retries, conversation history, compaction, and child
43
+ sessions. CampaignKernel owns contracts, claim disposition, evidence provenance,
44
+ sandboxing, durable simulation jobs, and the deterministic finish gate. The
45
+ confirmed upstream breaks are in the JavaScript adapter's DSH APIs, not the
46
+ scientific MCP contract. No kernel schema migration is justified by these changes.
47
+
48
+ The version-change acceptance criteria require a real-runtime adapter smoke test in addition
49
+ to the existing bundle tests: fresh campaign, each scoped role, tool-free judge,
50
+ context pruning, pause/resume on migrated logs, interrupted durable job recovery,
51
+ and finalization only through the kernel gate. Existing source-string/fake tests
52
+ alone cannot qualify a DSH version change. Install and test an isolated profile;
53
+ do not migrate active campaign logs in place during evaluation.
54
+
55
+ ## Completed validation
56
+
57
+ The adapter now uses `snapshotEvents()` / `eventAt()`, V3 surface replacement
58
+ fields, the renamed `ToolCallId` export, and `personaPrefix`. Removed profile
59
+ rows no longer produce missing-entry warnings. Claim guards attach at
60
+ `agent/created`, before a child receives its first prompt. The Blocker Resolver
61
+ allows DSH's schema-validated `structured_output` handoff. The Judge uses the
62
+ supported schema subset and explicitly rejects inconsistent decision/disposition
63
+ pairs before calling the kernel.
64
+
65
+ The checked-in Node tests run real DSH services with deterministic model output.
66
+ They cover original-history preservation, V2-to-V3 migration, fresh/resumed lead
67
+ sessions, each worker's first-call mutation guard, independent judge tools and
68
+ usage, and job reconciliation without model polling or resubmission. A complete
69
+ CLI/profile/Python-MCP test verifies the exact lead tool catalog, immutable
70
+ snapshot access, rejection of premature finalization, pause/resume, and no model
71
+ request after mandatory MCP startup failure. No paid-provider or long-running
72
+ scientific campaign was used for qualification. Production profiles and existing
73
+ campaign logs were not modified during this work.
@@ -1,6 +1,6 @@
1
1
  # Scientific roles with Simote agent sessions
2
2
 
3
- Simote can run Codex and Grok CLI agents as claim-scoped Simjecture workers.
3
+ Simote can run Codex, Grok, and AGY (Antigravity) CLI agents as claim-scoped Simjecture workers.
4
4
  Simjecture remains the authority for evidence, claim disposition, jobs, budgets,
5
5
  and campaign finalization. The native API runner and DSH profile remain available.
6
6
 
@@ -18,7 +18,7 @@ and role launches; existing assigned work can finish and records are preserved.
18
18
  ## Run a shared campaign
19
19
 
20
20
  1. Configure a campaign-owner bot and one or more worker bots in the same Simote
21
- team section, using the same named SSH compute machine. Select Codex or Grok
21
+ team section, using the same named SSH compute machine. Select Codex, Grok, or AGY
22
22
  agent engines for the workers, with their existing local logins.
23
23
  2. Ask the owner to use `simjecture_open_campaign`. The owner keeps the campaign
24
24
  under its workspace. Scientific worker tasks share that campaign; they do not
@@ -49,7 +49,7 @@ and role launches; existing assigned work can finish and records are preserved.
49
49
  5. For independent review, the owner or assigned lead calls
50
50
  `simjecture_adjudicate` with `campaign_id`, `judge_bot_id`, `operation_id`,
51
51
  `claim_id`, `contract_version`, and `case_for_sufficiency`. The selected
52
- Codex/Grok instance receives a fresh session, empty working directory, no
52
+ Codex/Grok/AGY instance receives a fresh session, empty working directory, no
53
53
  conversation history or Simote integrations, and only the frozen case.
54
54
  Tool activity invalidates the review. Only a successful text-only response
55
55
  reaches Simjecture's existing verdict validation and scientific gates.
@@ -64,6 +64,13 @@ and the final report. You can create or attach a campaign, assign workers,
64
64
  request independent review, cancel jobs, and finalize through the same kernel
65
65
  gates. The existing Simjecture web dashboard is also available.
66
66
 
67
+ AGY workers require the instance's full-auto setting, because its headless CLI
68
+ cannot approve MCP calls interactively. Simote mounts named scientific MCP tools
69
+ for each turn and removes them before a tool-free judge starts. AGY uses a global
70
+ MCP configuration, so Simote serializes AGY child lifetimes to prevent one task
71
+ from receiving another task's credentials. User-configured MCP entries remain
72
+ preserved; any observed judge tool use rejects the review, as for other engines.
73
+
67
74
  ## Recovery and boundaries
68
75
 
69
76
  Campaign creation first probes Bubblewrap namespace support. A GPU container
@@ -6,7 +6,7 @@ It accepts a natural-language hypothesis, lets an agent commission and use
6
6
  computational instruments, and preserves an independently inspectable path from
7
7
  proposal to claim disposition.
8
8
 
9
- This documentation describes version 0.3.2, a research preview. The project
9
+ This documentation describes version 0.4.0, a research preview. The project
10
10
  began in computational plasma physics. The same evidence harness is now ready
11
11
  to extend to other simulation-gated fields. The software has completed real
12
12
  autonomous CPU and CUDA campaigns, but it does not claim unrestricted
@@ -75,6 +75,7 @@ how-to/guided-commissioning
75
75
  how-to/add-a-capability
76
76
  how-to/deploy-runtimes
77
77
  how-to/deepseek-harness
78
+ how-to/dsh-upgrade-assessment
78
79
  how-to/simote-agent-roles
79
80
  ```
80
81
 
@@ -7,7 +7,7 @@ final response. Simjecture remains authoritative for the hypothesis DAG,
7
7
  evidence contracts, commissioning, provenance, sandbox, and durable simulation
8
8
  jobs.
9
9
 
10
- Version 0.2.2 separates scientific work into four scopes:
10
+ Version 0.4.0 targets DSH 0.1.5-rc.2 and separates scientific work into four scopes:
11
11
 
12
12
  - a persistent, compact **Lead Scientist** reads durable state and delegates;
13
13
  - a fresh **Falsifier/Experimenter** commissions and tests exactly one open
@@ -52,26 +52,24 @@ the hypothesis file must exactly match the immutable root stored there.
52
52
 
53
53
  ## Pack and install an isolated profile
54
54
 
55
- The integration is pinned to DSH `0.1.1-rc.2`. `simjecture dsh-profile` resolves
55
+ The integration is pinned to DSH `0.1.5-rc.2`. `simjecture dsh-profile` resolves
56
56
  the same bundle from either a source checkout or an installed wheel. Pack it
57
57
  outside the repository or remove the generated tarball after installation:
58
58
 
59
59
  ```bash
60
60
  SIMJECTURE_DSH_PROFILE="$(simjecture dsh-profile)"
61
61
  npm pack "$SIMJECTURE_DSH_PROFILE" --pack-destination /tmp
62
- dsh plugin --profile simjecture add @deepseek-ai/dsh-headless@0.1.1-rc.2
63
- dsh plugin --profile simjecture add /tmp/simjecture-dsh-bundle-0.2.2.tgz
62
+ dsh plugin --profile simjecture add @deepseek-ai/dsh-headless@0.1.5-rc.2
63
+ dsh plugin --profile simjecture add /tmp/simjecture-dsh-bundle-0.4.0.tgz
64
64
  ```
65
65
 
66
- The dedicated profile is important: its base/headless composition lets this
67
- bundle disable generic shell, filesystem, web, skill, workflow, and subagent
68
- tools. Installing only the host row into DSH's standard Web agent preset would
69
- also leave that preset's coding tools available.
70
-
71
- The profile sets DSH approval to `never`; this does not bypass Simjecture's
72
- policy. The only remaining scientific side effects are typed MCP actions checked
73
- by CampaignKernel and executed in its sandbox. Provider/model choice is still a
74
- DSH setting and is not hard-coded by this bundle.
66
+ The dedicated profile composes DSH's native research tools with Simjecture's
67
+ scientific tools. Web, shell, files, skills, workflows, and configured plugins
68
+ remain available. Role restrictions apply to scientific calls, and ordinary
69
+ native file/shell operations are confined to a separate research workspace.
70
+ Approval `never` disables prompts and rejects privilege escalation. Experiment
71
+ execution and evidence acceptance remain governed by CampaignKernel.
72
+ Provider/model choice remains a DSH setting.
75
73
 
76
74
  Two context policies are included. Completed large tool exchanges remain
77
75
  verbatim for one model request and may then be replaced on the model-facing
@@ -90,7 +88,7 @@ dsh --profile simjecture --dump-config
90
88
 
91
89
  The dump must show `mode: native`, `approval.policy: never`, the matching
92
90
  `simjecture` permission preset, `mcp-simjecture`, the explicit `SIMJECTURE_*`
93
- environment, and the bypass rows as disabled. Missing workspace or hypothesis
91
+ environment, and native research tools as enabled. Missing workspace or hypothesis
94
92
  variables fail profile activation.
95
93
 
96
94
  After installation, let Simjecture create the immutable launch contract and
@@ -107,10 +105,9 @@ log beside the campaign, and reopens the same session on **Resume**.
107
105
 
108
106
  The MCP child exposes no generic shell and no unguarded `finish` tool. Its
109
107
  `finalize_campaign` endpoint can write a report only after CampaignKernel's
110
- scientific finish gate passes. The lead sees only snapshot, claims, the three
111
- role composites, and finalization. Each child receives only the tools required
112
- for its assignment; the two raw judge prepare/commit endpoints remain private
113
- to the adjudication composite.
108
+ scientific finish gate passes. Research roles retain native tools alongside
109
+ role-scoped scientific operations, including image inspection. The two raw
110
+ judge prepare/commit endpoints remain private to the adjudication composite.
114
111
 
115
112
  Capability jobs, including configured WarpX capabilities, still return a
116
113
  durable job ID immediately at the kernel boundary. The DSH waiter performs the
@@ -125,7 +122,7 @@ invalid receipt remains `outcome_unknown` and cannot become evidence.
125
122
 
126
123
  `simjecture-mcp` speaks MCP over standard input/output and is not a human REPL.
127
124
  Use an MCP client to perform initialize, list-tools, and call-tool. A healthy
128
- server advertises 22 explicit endpoints. The persistent lead sees seven tools;
125
+ server advertises 23 explicit endpoints. The persistent lead sees eight scientific tools plus native research tools;
129
126
  the fresh role composites expose narrower task-specific subsets, while raw
130
127
  judge operations stay private. A direct MCP client must still reconcile a job
131
128
  with `job_status`; the DSH profile performs that wait automatically.
@@ -135,3 +132,22 @@ its selected contract; it does not declare scientific support. The Falsifier
135
132
  can make that bounded statement, but only the fresh Judge can authorize support.
136
133
  Adjudication is rejected before a Judge is started when no qualifying link could
137
134
  pass the kernel's deterministic closure gate.
135
+
136
+ ## Adapter validation
137
+
138
+ From the checkout, run `npm ci --prefix integrations/dsh` and
139
+ `npm test --prefix integrations/dsh`. Tests exercise the real pinned DSH runtime
140
+ with a deterministic model adapter, including V2-to-V3 history migration,
141
+ pruning, role isolation, and durable-job reconciliation. The full CLI/MCP test
142
+ requires the repository's Python environment with the `dsh` extra; set
143
+ `SIMJECTURE_MCP_EXECUTABLE` to its `simjecture-mcp` executable if needed.
144
+ Back up campaigns before upgrading an existing deployment and retain matching
145
+ CLI/headless/profile versions for rollback.
146
+
147
+ Native research files live outside campaign records (`SIMJECTURE_DSH_RESEARCH_ROOT`
148
+ can override the default sibling directory). Version 0.4.0 starts a new
149
+ `.research-v1` conversation when upgrading from older campaign-root sessions;
150
+ existing scientific state is reconciled and old logs remain available. DSH's
151
+ built-in file/shell policies protect records from ordinary native writes.
152
+ Installed plugins remain trusted process code; separate-account isolation against
153
+ hostile extensions is not provided by this profile.
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import { appendFileSync } from 'node:fs'
11
- import { CallId } from '@deepseek-ai/dsh-llm'
11
+ import { ToolCallId } from '@deepseek-ai/dsh-llm'
12
12
 
13
13
  export const name = 'simjecture-adjudicator'
14
14
  export const inject = ['agentDefaultModel', 'subagents', 'tools']
@@ -40,25 +40,6 @@ const VERDICT_SCHEMA = {
40
40
  evidence_gaps: { type: 'array', items: { type: 'string' } },
41
41
  next_test: { oneOf: [{ type: 'string' }, { type: 'null' }] },
42
42
  },
43
- oneOf: [
44
- {
45
- properties: {
46
- decision: { type: 'string', enum: ['sufficient'] },
47
- scientific_disposition: {
48
- type: 'string',
49
- enum: ['supported', 'falsified', 'instrument_limited', 'unresolved'],
50
- },
51
- },
52
- required: ['decision', 'scientific_disposition'],
53
- },
54
- {
55
- properties: {
56
- decision: { type: 'string', enum: ['insufficient'] },
57
- scientific_disposition: { type: 'null' },
58
- },
59
- required: ['decision', 'scientific_disposition'],
60
- },
61
- ],
62
43
  required: [
63
44
  'claim_id',
64
45
  'contract_version',
@@ -135,7 +116,7 @@ function errorText(result) {
135
116
 
136
117
  async function internalMcpCall(ctx, exec, suffix, name, args) {
137
118
  const result = await ctx.tools.execute({
138
- callId: CallId(`${String(exec.callId)}:simjecture:${suffix}`),
119
+ callId: ToolCallId(`${String(exec.callId)}:simjecture:${suffix}`),
139
120
  rootCallId: exec.rootCallId,
140
121
  name,
141
122
  arguments: args,
@@ -159,7 +140,7 @@ async function internalMcpCall(ctx, exec, suffix, name, args) {
159
140
 
160
141
  function usageFrom(run) {
161
142
  const totals = {}
162
- for (const event of run.localAgent?.session?.events ?? []) {
143
+ for (const event of run.localAgent?.session.snapshotEvents() ?? []) {
163
144
  if (event.type !== 'assistant/message' || event.data.usage === undefined) continue
164
145
  for (const [key, value] of Object.entries(event.data.usage)) {
165
146
  if (typeof value === 'number' && Number.isFinite(value)) {
@@ -289,6 +270,12 @@ export function apply(ctx) {
289
270
  )
290
271
  }
291
272
 
273
+ // DSH's structured-output subset disallows type + oneOf at the same
274
+ // schema node. Preserve the cross-field invariant before kernel commit.
275
+ const verdict = result.structured
276
+ if ((verdict.decision === 'insufficient') !== (verdict.scientific_disposition === null)) {
277
+ throw new Error('independent judge returned an inconsistent decision and scientific disposition')
278
+ }
292
279
  const selection = ctx.agentDefaultModel.currentSelection()
293
280
  const recorded = await internalMcpCall(
294
281
  ctx,