simjecture 0.1.1__tar.gz → 0.2.2__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.
- {simjecture-0.1.1 → simjecture-0.2.2}/.github/workflows/release.yml +21 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/CHANGELOG.md +50 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/CITATION.cff +2 -2
- {simjecture-0.1.1 → simjecture-0.2.2}/PKG-INFO +41 -2
- {simjecture-0.1.1 → simjecture-0.2.2}/README.md +38 -1
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/concepts/architecture.md +38 -5
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/concepts/evidence-and-claims.md +6 -2
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/conf.py +1 -1
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/getting-started/first-run.md +15 -4
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/getting-started/installation.md +13 -2
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/getting-started/web-interface.md +20 -3
- simjecture-0.2.2/docs/how-to/deepseek-harness.md +180 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/index.md +3 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/reference/cli.md +2 -1
- simjecture-0.2.2/integrations/dsh/README.md +137 -0
- simjecture-0.2.2/integrations/dsh/adjudicator.js +261 -0
- simjecture-0.2.2/integrations/dsh/context-elider.js +343 -0
- simjecture-0.2.2/integrations/dsh/cordis.patch.yml +179 -0
- simjecture-0.2.2/integrations/dsh/job-waiter.js +277 -0
- simjecture-0.2.2/integrations/dsh/package.json +40 -0
- simjecture-0.2.2/integrations/dsh/roles.js +714 -0
- simjecture-0.2.2/integrations/dsh/runner.js +355 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/pyproject.toml +6 -1
- simjecture-0.2.2/skills/python-experiment/SKILL.md +61 -0
- simjecture-0.2.2/skills/python-experiment/manifest.json +8 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/__init__.py +1 -1
- simjecture-0.2.2/src/conjecture_solver/campaign_jobs.py +959 -0
- simjecture-0.2.2/src/conjecture_solver/campaign_kernel.py +2486 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/cli.py +42 -1
- simjecture-0.2.2/src/conjecture_solver/dsh_engine.py +383 -0
- simjecture-0.2.2/src/conjecture_solver/kernel_worker.py +345 -0
- simjecture-0.2.2/src/conjecture_solver/mcp_schemas.py +660 -0
- simjecture-0.2.2/src/conjecture_solver/mcp_server.py +1001 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/mvp_agent.py +232 -40
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/mvp_claims.py +136 -83
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/mvp_control.py +31 -5
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/mvp_launch.py +111 -10
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/mvp_monitor.py +182 -53
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/mvp_skills.py +28 -4
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/application.py +142 -1
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/server.py +5 -3
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/app.js +75 -9
- simjecture-0.2.2/tests/test_campaign_jobs.py +140 -0
- simjecture-0.2.2/tests/test_campaign_kernel.py +864 -0
- simjecture-0.2.2/tests/test_dsh_bundle.py +230 -0
- simjecture-0.2.2/tests/test_dsh_engine.py +205 -0
- simjecture-0.2.2/tests/test_mcp_server.py +624 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_mvp_agent.py +18 -0
- simjecture-0.2.2/tests/test_mvp_claims.py +83 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_mvp_control.py +16 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_mvp_monitor.py +157 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_mvp_status_watch.py +33 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_web.py +86 -1
- {simjecture-0.1.1 → simjecture-0.2.2}/uv.lock +596 -62
- simjecture-0.1.1/tests/test_mvp_claims.py +0 -38
- {simjecture-0.1.1 → simjecture-0.2.2}/.env.example +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/.gitattributes +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/.github/workflows/ci.yml +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/.gitignore +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/.readthedocs.yaml +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/CONTRIBUTING.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/LICENSE +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/NOTICE +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/SECURITY.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/THIRD_PARTY_NOTICES.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/capabilities/warpx-cpu-26.07.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/capabilities/warpx-cuda-openpmd-26.07.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/README.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/README.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/campaign_instruction.txt +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/guided/anchor_operator_validation.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/guided/gem_anchor_validation.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/guided/gem_collisionless.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/guided/prior_campaign_0002_audit_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/guided/prior_campaign_0003_audit_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/guided/prior_campaign_audit_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/guided_commission.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/hypothesis.txt +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/plot_results.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/artifact_provenance.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/claim_summary.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/guided_commissioning.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/hypothesis_ledger.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/literature_searches.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/mvp_manifest.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/mvp_report.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/transcript.jsonl +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000012.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000013.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000019.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000020.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000026.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000027.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000032.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000033.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000037.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000041.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000042.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000043.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/.acs/evidence_programs/iteration_000049.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/analyze_ensemble.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/analyze_manifest.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/commission_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/ensemble_result.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t1_s20260902/diagnostic_overview.svg +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t1_s20260902/final_fields.npz +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t1_s20260902/warpx_used_inputs +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t20_s20260902/diagnostic_overview.svg +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t20_s20260902/final_fields.npz +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/run_p16_t20_s20260902/warpx_used_inputs +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t1_s20260902_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t1_s20260903_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t1_s20260904_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t20_s20260902_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t20_s20260903_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p16_t20_s20260904_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t1_s20260902_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t1_s20260903_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t1_s20260904_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t20_s20260902_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t20_s20260903_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/campaign/summaries/p8_t20_s20260904_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/design_pin.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/energy_reader.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fallback_solver_plan.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/commission_manifest.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/commission_output.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/commission_output_wb.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t1_s20260902_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t1_s20260903_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t1_s20260904_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t20_s20260902_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t20_s20260903_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p16_t20_s20260904_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t1_s20260902_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t1_s20260903_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t1_s20260904_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t20_s20260902_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t20_s20260903_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/fixtures/inp/p8_t20_s20260904_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/gen_fixtures.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/guided/anchor_operator_validation.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/guided/gem_anchor_validation.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/guided/gem_collisionless.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/guided/prior_campaign_0002_audit_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/guided/prior_campaign_0003_audit_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/record/workspace/guided/prior_campaign_audit_summary.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/collisionless_gem_reconnection/verify_record.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/README.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/capture_tui.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/hypothesis.txt +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/plot_results.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/README.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/artifact_provenance.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/claim_summary.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/hypothesis_ledger.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/mvp_manifest.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/mvp_report.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/transcript.jsonl +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/analyze_results.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/calc_growth.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/linear_stability.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/mode_analysis.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/mode_analysis_results.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/pick_regime.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/regime_candidates.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/result_s1.npz +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/result_s10.npz +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/result_s10_dt025.npz +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/result_s1_dt025.npz +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/root_pattern_results.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/root_s10_dt0p025.npz +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/root_s10_dt0p05.npz +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/root_s1_dt0p025.npz +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/root_s1_dt0p05.npz +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/simulate_gs.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/simulate_gs_dt025.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/simulate_gs_root.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/simulation_results.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/simulation_results_dt025.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/record/workspace/turing_diagnostic.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/reproduce.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/demos/gray_scott_counterexample/verify_record.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/_static/demos/gem-ensemble-result.png +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/_static/demos/gem-reconnection-fields.png +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/_static/demos/gray-scott-completed-tui.svg +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/_static/demos/gray-scott-result.png +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/demos/collisionless-gem.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/demos/gray-scott.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/development/documentation.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/development/releasing.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/getting-started/terminal-ui.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/how-to/add-a-capability.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/how-to/deploy-runtimes.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/how-to/guided-commissioning.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/reference/repository-map.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/requirements.txt +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/research/limitations.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/research/next-steps.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/research/run-0004.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/docs/research/status.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/environments/warpx-cpu.yml +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/AIStrategyDraft.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ActionExecution.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ActionFailureRecord.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/AttemptRecord.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/BlindedSearchReport.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/BlindedSearchRequest.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/CampaignAction.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/CampaignActionGraph.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/CampaignActionState.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/CampaignBudget.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/CampaignCheckpoint.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/CampaignState.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/CandidateEvaluation.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/CandidateResult.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/CapabilityManifest.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/Claim.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/CollisionalityIntervention.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ControlDirective.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/DecisionRecord.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/DiscoveryPackage.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/DispatchAttempt.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/DomainDiagnosisSummary.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/DomainEvolutionSummary.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/DomainPluginMetadata.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/DomainRunSummary.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/DomainTemplateSummary.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ExperimentSpec.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ExternalReceipt.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/FreshSeedIntervention.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/HumanIntervention.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/HypothesisNode.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/KineticSufficiencyDiscoveryPackage.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/KineticSufficiencyHypothesisInput.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/KineticSufficiencyResult.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/KineticSufficiencySolveResult.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/LifecycleEvent.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/MVPGuidedCommissioningSpec.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/MatchedPairFormalPredicate.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ModelCallProvenance.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/MultiActionCampaignReport.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/NormalizedResult.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/NumericalAssessment.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/NumericalDiagnostics.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/NumericalGate.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ObservablePrediction.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/OutboxIntent.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/PICCaseResult.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/PICConfig.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/PICConfirmationAttempt.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/PICConfirmationDesign.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/PICConfirmationReport.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/PICMixtureCaseResult.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/PICNumericalConfig.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/PICSufficiencyResult.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ParameterSpace.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ParticleStatisticsIntervention.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ProposalDraft.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ProposalRecord.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ProposalRequest.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ProposalValidation.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ProposedToolCall.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/QualifiedWarpXCampaignPackage.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/QualifiedWarpXInstrument.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ReferenceQualification.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchBudget.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchCampaignReport.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchConclusion.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchDecision.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchEvidencePolicy.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchHypothesis.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchObservation.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchProblemContract.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchRelation.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchToolManifest.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/ResearchToolResult.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/RunEvidence.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/RunPlan.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/SearchStrategy.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/SheetThicknessIntervention.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/SubprocessResearchToolConfig.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/SymmetricMixtureCandidate.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXCalibrationPoint.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXCaseSummary.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXCompiledCase.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXConfirmationAttempt.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXConfirmationDesign.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXConfirmationFailure.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXConfirmationReport.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXConfirmationResolution.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXExecutionProfile.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXNumericalConfig.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXPairSummary.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXPhysicalConfig.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXPhysicsQualificationRecord.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXQualificationRecord.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/WarpXQualifiedScope.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/mvp/MVPAgentAction.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/mvp/MVPAgentReport.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/mvp/MVPClaim.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/schemas/mvp/MVPClaimLedger.schema.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/postprocess_warpx_case.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/probe_provider.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/propose_hypothesis.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/propose_search_strategy.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/qualify_warpx.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/qualify_warpx_physics.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/run_admitted_proposal.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/run_blinded_search.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/run_qualified_warpx_campaign.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/run_warpx_confirmation.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/scripts/run_warpx_pair.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/scientific-markdown/SKILL.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/scientific-markdown/agents/openai.yaml +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/scientific-markdown/manifest.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/SKILL.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/agents/openai.yaml +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/examples/implicit_em_smoke.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/examples/minimal_smoke.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/examples/openpmd_field_smoke.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/manifest.json +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/references/2d-xz-commissioning.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/references/cpu-launch-tuning.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/references/diagnostics.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/references/gpu-launch-tuning.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/references/local-cuda-deployment.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/references/numerical-risks.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/references/picmi-interface.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/references/resource-scaling.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/references/time-integration.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/scripts/benchmark_cpu_threads.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/scripts/benchmark_gpu.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/scripts/bootstrap_local_cuda.sh +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/scripts/probe_local_cuda.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/scripts/reduced_energy_budget.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/skills/warpx/scripts/run_local_cuda.sh +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/__main__.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/action_handlers.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/adapters/__init__.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/adapters/base.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/adapters/fake.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/adapters/pic.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/adapters/warpx.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/autonomous_research.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/benchmarks/__init__.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/benchmarks/electrostatic_pic.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/benchmarks/kinetic_sufficiency.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/campaign.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/confirmation.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/control.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/deployment.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/discovery.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/domains/__init__.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/domains/base.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/domains/kinetic_sufficiency.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/ledger.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/lifecycle.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/literature.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/llm.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/models.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/mvp_guidance.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/orchestration.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/outbox.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/parameters.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/presentation.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/proposals.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/research_tools.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/schema_export.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/search.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/semantics.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/tui/__init__.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/tui/app.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/tui/claim_views.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/tui/screens.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/warpx_analysis.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/warpx_campaign.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/warpx_confirmation.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/__init__.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/index.html +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/markdown.js +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/styles.css +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/vendor/LICENSE.dagre.txt +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/vendor/LICENSE.dompurify.txt +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/vendor/LICENSE.katex.txt +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/vendor/LICENSE.marked.txt +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/vendor/README.md +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/vendor/dagre-2.0.0.min.js +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/vendor/dompurify-3.4.14.min.js +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/vendor/katex-0.18.4.min.js +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/vendor/katex-auto-render-0.18.4.min.js +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/src/conjecture_solver/web/static/vendor/marked-18.0.10.umd.js +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/__init__.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/fixtures/fake_warpx_runner.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_adapter.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_autonomous_research.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_benchmark.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_campaign.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_control.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_deployment.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_domain_plugins.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_ledger.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_lifecycle.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_literature.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_llm.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_models.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_mvp_pause.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_orchestration.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_outbox.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_parameters.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_pic.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_proposals.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_recorded_demo.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_schema_export.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_search.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_semantics.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_tui.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_tui_claim_views.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_warpx.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_warpx_analysis.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_warpx_campaign.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_warpx_qualification.py +0 -0
- {simjecture-0.1.1 → simjecture-0.2.2}/tests/test_warpx_reduced_energy.py +0 -0
|
@@ -24,6 +24,27 @@ jobs:
|
|
|
24
24
|
python-version: "3.12"
|
|
25
25
|
- name: Install build frontend
|
|
26
26
|
run: python -m pip install uv
|
|
27
|
+
- name: Install sandbox runtime
|
|
28
|
+
run: |
|
|
29
|
+
sudo apt-get update
|
|
30
|
+
sudo apt-get install --yes bubblewrap
|
|
31
|
+
if sysctl kernel.unprivileged_userns_clone > /dev/null 2>&1; then
|
|
32
|
+
sudo sysctl -w kernel.unprivileged_userns_clone=1
|
|
33
|
+
fi
|
|
34
|
+
if sysctl kernel.apparmor_restrict_unprivileged_userns > /dev/null 2>&1; then
|
|
35
|
+
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
|
|
36
|
+
fi
|
|
37
|
+
bwrap --unshare-all --die-with-parent \
|
|
38
|
+
--ro-bind /usr /usr \
|
|
39
|
+
--ro-bind /lib /lib \
|
|
40
|
+
--ro-bind /lib64 /lib64 \
|
|
41
|
+
/usr/bin/true
|
|
42
|
+
- name: Install locked test environment
|
|
43
|
+
run: uv sync --frozen --extra tui
|
|
44
|
+
- name: Lint release source
|
|
45
|
+
run: uv run ruff check .
|
|
46
|
+
- name: Test release source
|
|
47
|
+
run: uv run pytest --cov=conjecture_solver --cov-report=term-missing
|
|
27
48
|
- name: Require the release tag to match the package version
|
|
28
49
|
run: |
|
|
29
50
|
python - <<'PY'
|
|
@@ -2,6 +2,56 @@
|
|
|
2
2
|
|
|
3
3
|
This project follows semantic versioning. Dates use ISO 8601.
|
|
4
4
|
|
|
5
|
+
## Unreleased
|
|
6
|
+
|
|
7
|
+
## 0.2.2 — 2026-08-24
|
|
8
|
+
|
|
9
|
+
- Fixed a process-lifecycle race where the supervisor that launched a short
|
|
10
|
+
durable job could observe the child after exit but before `Popen.poll()`
|
|
11
|
+
receipted it, incorrectly recording `outcome_unknown` instead of the known
|
|
12
|
+
terminal result.
|
|
13
|
+
- Made the release workflow install the sandbox runtime and locked test
|
|
14
|
+
environment, then run lint and the full deterministic test suite before any
|
|
15
|
+
distribution can be uploaded to PyPI.
|
|
16
|
+
|
|
17
|
+
## 0.2.1 — 2026-08-23
|
|
18
|
+
|
|
19
|
+
- Extracted a model-independent campaign kernel while preserving the existing
|
|
20
|
+
hypothesis graph, evidence contracts, commissioning, sandbox, capability,
|
|
21
|
+
provenance, and claim-closure rules.
|
|
22
|
+
- Added a strict DeepSeek Harness profile backed by 21 native MCP scientific
|
|
23
|
+
tools, with generic execution and delegation surfaces disabled.
|
|
24
|
+
- Split the DSH reasoning loop into a persistent, compact Lead Scientist and
|
|
25
|
+
fresh claim-scoped Falsifier/Experimenter, Repair Scientist, and tool-free
|
|
26
|
+
Judge sessions. Role-specific tool filters, mutation guards, structured
|
|
27
|
+
handoffs, and kernel rechecks prevent a child from silently exceeding its
|
|
28
|
+
scientific assignment.
|
|
29
|
+
- Moved durable job waiting beneath the model-facing tool call. Simulations are
|
|
30
|
+
submitted once, read-only status checks no longer consume model turns, and
|
|
31
|
+
cancellation leaves the job recoverable rather than resubmitting it.
|
|
32
|
+
- Added one-step-delayed, model-free context elision for completed large tool
|
|
33
|
+
exchanges and oversized results. Deterministic receipts shrink the active
|
|
34
|
+
model surface while the full append-only DSH log and campaign artifacts remain
|
|
35
|
+
intact; semantic compaction stays at 50% for the tested DeepSeek route.
|
|
36
|
+
- Added an ordinary-Python experiment skill that separates `run_python` from
|
|
37
|
+
named capability execution, records exact JSON validation checks, and avoids
|
|
38
|
+
capability-only commissioning fields in NumPy/SciPy contracts.
|
|
39
|
+
- Clarified that `observation_sufficient` records contract compliance rather
|
|
40
|
+
than self-certified scientific support. Falsifier handoffs and Judge
|
|
41
|
+
preparation now require closure-eligible evidence before adjudication, which
|
|
42
|
+
prevents a sufficient verdict from being persisted against an unclosable
|
|
43
|
+
claim.
|
|
44
|
+
- Added idempotent detached simulation jobs, verified cancellation, bounded
|
|
45
|
+
status reports, single-writer enforcement, and authenticated worker receipts
|
|
46
|
+
that recover known outcomes after an MCP restart without rerunning work.
|
|
47
|
+
- Added a lifetime root-campaign lease, restart-discoverable jobs and budgets,
|
|
48
|
+
cumulative active-time accounting, and durable cancellation after supervisor
|
|
49
|
+
restart. Custom skill and capability discovery roots replay in workers.
|
|
50
|
+
- Validated the official DSH MCP client against the Python bridge and the
|
|
51
|
+
release-pinned CUDA WarpX/openPMD capability.
|
|
52
|
+
- Shipped the pinned DSH profile inside the Python wheel and added
|
|
53
|
+
`simjecture dsh-profile` so installed deployments can pack the exact bundle.
|
|
54
|
+
|
|
5
55
|
## 0.1.1 — 2026-08-22
|
|
6
56
|
|
|
7
57
|
- Added a dependency-free, localhost-only browser interface with an interactive
|
|
@@ -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.
|
|
6
|
-
date-released: 2026-08-
|
|
5
|
+
version: 0.2.2
|
|
6
|
+
date-released: 2026-08-24
|
|
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
|
+
Version: 0.2.2
|
|
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
|
|
@@ -26,6 +26,8 @@ Requires-Dist: numpy<3,>=1.26
|
|
|
26
26
|
Requires-Dist: pandas<4,>=2.2
|
|
27
27
|
Requires-Dist: pydantic<3,>=2.9
|
|
28
28
|
Requires-Dist: scipy<2,>=1.12
|
|
29
|
+
Provides-Extra: dsh
|
|
30
|
+
Requires-Dist: mcp<3,>=2; extra == 'dsh'
|
|
29
31
|
Provides-Extra: tui
|
|
30
32
|
Requires-Dist: textual<9,>=2.0; extra == 'tui'
|
|
31
33
|
Description-Content-Type: text/markdown
|
|
@@ -263,7 +265,7 @@ uv run simjecture web artifacts/magnetic-mirror-mvp
|
|
|
263
265
|
```
|
|
264
266
|
|
|
265
267
|
Run `simjecture web` without a path to discover recent campaigns or launch a
|
|
266
|
-
new hypothesis.
|
|
268
|
+
new hypothesis. The server binds to localhost only; `--read-only` disables
|
|
267
269
|
all launch and process controls. Provider credentials remain in the launching
|
|
268
270
|
terminal environment and are never entered into the browser.
|
|
269
271
|
|
|
@@ -281,6 +283,43 @@ diagnostic, and control claims attached to the selected hypothesis. Press `v`
|
|
|
281
283
|
for the complete typed audit ledger; no claim or provenance record is hidden by
|
|
282
284
|
the human-first projection.
|
|
283
285
|
|
|
286
|
+
## DeepSeek Harness integration
|
|
287
|
+
|
|
288
|
+
The v0.2.2 integration moves the model-facing research loop to DeepSeek Harness
|
|
289
|
+
without moving scientific authority out of Simjecture. DSH owns the provider,
|
|
290
|
+
conversation, retry policy, compaction, and resumable session. A native MCP
|
|
291
|
+
boundary implements 21 typed endpoints. A compact persistent Lead Scientist
|
|
292
|
+
sees six coordination tools and delegates claim work to fresh, scoped
|
|
293
|
+
Falsifier/Experimenter and Repair Scientist sessions. A separate fresh,
|
|
294
|
+
tool-free Judge reviews surviving claims. The Python campaign kernel continues to own hypotheses,
|
|
295
|
+
evidence contracts, commissioning, skills, simulation capabilities, sandboxing,
|
|
296
|
+
provenance, and guarded claim closure. Existing WarpX CPU/CUDA capabilities use
|
|
297
|
+
the same kernel path. The isolated DSH profile has no interactive approval gate
|
|
298
|
+
around those tools; CampaignKernel's typed boundary and sandbox remain the
|
|
299
|
+
execution authority. Provider and model selection remain DSH configuration.
|
|
300
|
+
Every role handoff is verified against durable kernel state. Scientific support
|
|
301
|
+
is reviewed by the Judge, and only the kernel's deterministic finish gate can
|
|
302
|
+
write the terminal campaign report.
|
|
303
|
+
|
|
304
|
+
The browser remains the primary interface. Once the pinned DSH profile is
|
|
305
|
+
installed, the usual `uv run simjecture web` command launches new campaigns
|
|
306
|
+
through DSH; existing campaign replay is unchanged. `--engine native` retains
|
|
307
|
+
the built-in runner as an explicit compatibility and diagnosis path.
|
|
308
|
+
|
|
309
|
+
The integration is a small DSH profile bundle, not a second simulator stack.
|
|
310
|
+
Provision Simjecture and any desired runtime on the host, then follow
|
|
311
|
+
[the DSH deployment guide](docs/how-to/deepseek-harness.md) to install and audit
|
|
312
|
+
the isolated profile. `simjecture dsh-profile` locates the bundled profile from
|
|
313
|
+
either a checkout or an installed wheel. Long simulations return durable job
|
|
314
|
+
identifiers, but the DSH waiter performs lifecycle polling inside the original
|
|
315
|
+
tool execution instead of spending model turns on repeated status calls. An
|
|
316
|
+
authenticated worker receipt lets a restarted DSH/MCP client recover a known
|
|
317
|
+
outcome without repeating the run; an unverifiable outcome remains non-evidence.
|
|
318
|
+
The first snapshot after a restart reports durable job IDs and remaining action
|
|
319
|
+
and active-execution budgets. The resumed DSH process reopens the same stable
|
|
320
|
+
event-sourced session, reconciles that snapshot, and continues without hidden
|
|
321
|
+
process state or charging stopped-process downtime.
|
|
322
|
+
|
|
284
323
|
## Core safeguards
|
|
285
324
|
|
|
286
325
|
- Network-isolated writable agent workspace with no provider credentials.
|
|
@@ -231,7 +231,7 @@ uv run simjecture web artifacts/magnetic-mirror-mvp
|
|
|
231
231
|
```
|
|
232
232
|
|
|
233
233
|
Run `simjecture web` without a path to discover recent campaigns or launch a
|
|
234
|
-
new hypothesis.
|
|
234
|
+
new hypothesis. The server binds to localhost only; `--read-only` disables
|
|
235
235
|
all launch and process controls. Provider credentials remain in the launching
|
|
236
236
|
terminal environment and are never entered into the browser.
|
|
237
237
|
|
|
@@ -249,6 +249,43 @@ diagnostic, and control claims attached to the selected hypothesis. Press `v`
|
|
|
249
249
|
for the complete typed audit ledger; no claim or provenance record is hidden by
|
|
250
250
|
the human-first projection.
|
|
251
251
|
|
|
252
|
+
## DeepSeek Harness integration
|
|
253
|
+
|
|
254
|
+
The v0.2.2 integration moves the model-facing research loop to DeepSeek Harness
|
|
255
|
+
without moving scientific authority out of Simjecture. DSH owns the provider,
|
|
256
|
+
conversation, retry policy, compaction, and resumable session. A native MCP
|
|
257
|
+
boundary implements 21 typed endpoints. A compact persistent Lead Scientist
|
|
258
|
+
sees six coordination tools and delegates claim work to fresh, scoped
|
|
259
|
+
Falsifier/Experimenter and Repair Scientist sessions. A separate fresh,
|
|
260
|
+
tool-free Judge reviews surviving claims. The Python campaign kernel continues to own hypotheses,
|
|
261
|
+
evidence contracts, commissioning, skills, simulation capabilities, sandboxing,
|
|
262
|
+
provenance, and guarded claim closure. Existing WarpX CPU/CUDA capabilities use
|
|
263
|
+
the same kernel path. The isolated DSH profile has no interactive approval gate
|
|
264
|
+
around those tools; CampaignKernel's typed boundary and sandbox remain the
|
|
265
|
+
execution authority. Provider and model selection remain DSH configuration.
|
|
266
|
+
Every role handoff is verified against durable kernel state. Scientific support
|
|
267
|
+
is reviewed by the Judge, and only the kernel's deterministic finish gate can
|
|
268
|
+
write the terminal campaign report.
|
|
269
|
+
|
|
270
|
+
The browser remains the primary interface. Once the pinned DSH profile is
|
|
271
|
+
installed, the usual `uv run simjecture web` command launches new campaigns
|
|
272
|
+
through DSH; existing campaign replay is unchanged. `--engine native` retains
|
|
273
|
+
the built-in runner as an explicit compatibility and diagnosis path.
|
|
274
|
+
|
|
275
|
+
The integration is a small DSH profile bundle, not a second simulator stack.
|
|
276
|
+
Provision Simjecture and any desired runtime on the host, then follow
|
|
277
|
+
[the DSH deployment guide](docs/how-to/deepseek-harness.md) to install and audit
|
|
278
|
+
the isolated profile. `simjecture dsh-profile` locates the bundled profile from
|
|
279
|
+
either a checkout or an installed wheel. Long simulations return durable job
|
|
280
|
+
identifiers, but the DSH waiter performs lifecycle polling inside the original
|
|
281
|
+
tool execution instead of spending model turns on repeated status calls. An
|
|
282
|
+
authenticated worker receipt lets a restarted DSH/MCP client recover a known
|
|
283
|
+
outcome without repeating the run; an unverifiable outcome remains non-evidence.
|
|
284
|
+
The first snapshot after a restart reports durable job IDs and remaining action
|
|
285
|
+
and active-execution budgets. The resumed DSH process reopens the same stable
|
|
286
|
+
event-sourced session, reconciles that snapshot, and continues without hidden
|
|
287
|
+
process state or charging stopped-process downtime.
|
|
288
|
+
|
|
252
289
|
## Core safeguards
|
|
253
290
|
|
|
254
291
|
- Network-isolated writable agent workspace with no provider credentials.
|
|
@@ -8,11 +8,32 @@ The operator supplies the root hypothesis, operational instruction, resource
|
|
|
8
8
|
limits, installed capabilities, and any guided commissioning package. These
|
|
9
9
|
inputs are recorded before the agent begins.
|
|
10
10
|
|
|
11
|
-
## Reasoning
|
|
11
|
+
## Reasoning harness
|
|
12
12
|
|
|
13
13
|
The model decides how to operationalize the hypothesis, which diagnostics to
|
|
14
14
|
write, which sub-hypotheses to register, and which admissible experiment to run
|
|
15
|
-
next.
|
|
15
|
+
next. The built-in runner and the DSH profile are interchangeable reasoning
|
|
16
|
+
front ends; neither is the authority for scientific state or evidence.
|
|
17
|
+
|
|
18
|
+
## Native tool boundary
|
|
19
|
+
|
|
20
|
+
Under DeepSeek Harness, a strict MCP profile exposes only explicit Simjecture
|
|
21
|
+
tools. DSH owns the provider, conversation, retry policy, compaction, and model-facing
|
|
22
|
+
session. Generic shell, filesystem, workflow, web, and subagent tools are not
|
|
23
|
+
part of the scientific profile. Its approval policy is non-interactive because
|
|
24
|
+
CampaignKernel is the authoritative execution gate. Each tool call crosses the
|
|
25
|
+
kernel boundary at most once. The researcher receives one composite
|
|
26
|
+
adjudication tool. It freezes the current evidence case, runs a fresh tool-free
|
|
27
|
+
DSH child with a strict verdict schema, and commits the verdict through two raw
|
|
28
|
+
MCP endpoints hidden from the researcher's scoped tool view.
|
|
29
|
+
|
|
30
|
+
## Campaign kernel
|
|
31
|
+
|
|
32
|
+
The model-independent Python kernel validates typed actions and owns the root
|
|
33
|
+
hypothesis, hypothesis graph, claim ledger, evidence contracts, commissioning,
|
|
34
|
+
skills, capability registry, provenance, and workspace policy. The legacy MVP
|
|
35
|
+
runner delegates to this same kernel, so changing the reasoning harness does not
|
|
36
|
+
create a second scientific implementation.
|
|
16
37
|
|
|
17
38
|
The autonomous loop exposes three operational roles. The **Falsifier**
|
|
18
39
|
commissions tools and searches for counterexamples. After a valid
|
|
@@ -21,6 +42,9 @@ bounded search finds no counterexample, an independent **Judge** sees only the
|
|
|
21
42
|
auditable evidence package and decides whether it is sufficient or which gap
|
|
22
43
|
must be tested next. Roles are explicit workflow contexts, not claims of
|
|
23
44
|
different underlying model providers.
|
|
45
|
+
An accepted verdict does not itself end the process: guarded finalization checks
|
|
46
|
+
the entire scientific frontier and writes the report only when no open claim or
|
|
47
|
+
unrepaired counterexample remains.
|
|
24
48
|
|
|
25
49
|
## Sandbox and capabilities
|
|
26
50
|
|
|
@@ -39,9 +63,18 @@ execution.
|
|
|
39
63
|
|
|
40
64
|
## Durable operational state
|
|
41
65
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
66
|
+
The reasoning harness retains its model session. Under DSH, a stable session ID
|
|
67
|
+
and event-sourced log live inside the campaign; pause, process restart, and
|
|
68
|
+
resume reopen that session instead of constructing a blank conversation.
|
|
69
|
+
Simjecture journals simulator
|
|
70
|
+
intents before dispatch and stores content hashes, operation identifiers,
|
|
71
|
+
cancellation records, process identities, and authenticated worker receipts.
|
|
72
|
+
Long jobs survive an MCP restart. A missing or unverifiable receipt remains an
|
|
73
|
+
unknown operational outcome and cannot become scientific evidence. The bounded
|
|
74
|
+
snapshot exposes durable jobs, operation bindings, and remaining budgets to a
|
|
75
|
+
fresh session. One root runner/MCP process holds the campaign ownership lease;
|
|
76
|
+
detached workers hold explicit active-job writer leases. Budget accounting is
|
|
77
|
+
cumulative active execution time, not elapsed calendar time between sessions.
|
|
45
78
|
|
|
46
79
|
## Human interfaces
|
|
47
80
|
|
|
@@ -7,8 +7,12 @@ action. The contract states what is observed, how outcomes map to dispositions,
|
|
|
7
7
|
what uncertainty matters, what makes the observation inconclusive, and which
|
|
8
8
|
exact program commands may generate evidence.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
They cannot be promoted retroactively.
|
|
10
|
+
Agent-authored files and artifacts written while code is still being designed
|
|
11
|
+
remain workbench records. They cannot be promoted retroactively. An
|
|
12
|
+
execution-generated artifact is only eligible after the process succeeds and,
|
|
13
|
+
for detached work, its authenticated job receipt is reconciled as succeeded.
|
|
14
|
+
Failed, cancelled, or operationally unknown jobs remain non-evidence even when
|
|
15
|
+
they left a plausible partial output.
|
|
12
16
|
|
|
13
17
|
## Instruments are claims too
|
|
14
18
|
|
|
@@ -13,8 +13,18 @@ uv run simjecture web demos/gray_scott_counterexample/record --read-only
|
|
|
13
13
|
See [Recorded Gray–Scott demo](../demos/gray-scott.md) for the scientific result
|
|
14
14
|
and the boundaries of that record.
|
|
15
15
|
|
|
16
|
-
To start a new autonomous campaign,
|
|
17
|
-
can be evaluated with ordinary Python
|
|
16
|
+
To start a new autonomous campaign, first install the pinned DSH profile, then
|
|
17
|
+
choose a bounded hypothesis whose outcome can be evaluated with ordinary Python
|
|
18
|
+
before attaching an expensive simulator. The primary path is the browser:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
export DEEPSEEK_API_KEY='your-process-local-key'
|
|
22
|
+
uv run simjecture web
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Enter the hypothesis in **New hypothesis** and follow the DSH activity, typed
|
|
26
|
+
scientific actions, simulation jobs, and hypothesis graph in one view. The
|
|
27
|
+
headless built-in engine remains available as a compatibility path:
|
|
18
28
|
|
|
19
29
|
```bash
|
|
20
30
|
export DEEPSEEK_API_KEY='your-process-local-key'
|
|
@@ -24,8 +34,9 @@ uv run simjecture mvp \
|
|
|
24
34
|
--output artifacts/gray-scott-first-run
|
|
25
35
|
```
|
|
26
36
|
|
|
27
|
-
|
|
28
|
-
|
|
37
|
+
Both paths produce an output directory containing the immutable manifest,
|
|
38
|
+
complete transcript or DSH activity projection, claim ledger, artifact
|
|
39
|
+
provenance, final report, and the agent's workspace.
|
|
29
40
|
|
|
30
41
|
Important distinctions:
|
|
31
42
|
|
|
@@ -75,14 +75,25 @@ without granting scientific-evidence status.
|
|
|
75
75
|
|
|
76
76
|
## Local web interface
|
|
77
77
|
|
|
78
|
-
The browser dashboard is included with the core installation
|
|
78
|
+
The browser dashboard itself is included with the core installation. Recorded
|
|
79
|
+
campaigns can be opened without Node.js or a model runtime:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
uv run simjecture web demos/gray_scott_counterexample/record --read-only
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
New browser-launched campaigns use DeepSeek Harness by default. Install the
|
|
86
|
+
pinned DSH profile once per machine with the
|
|
87
|
+
[DSH deployment guide](../how-to/deepseek-harness.md), then use the same command:
|
|
79
88
|
|
|
80
89
|
```bash
|
|
81
90
|
uv run simjecture web
|
|
82
91
|
```
|
|
83
92
|
|
|
84
93
|
It binds only to localhost and can discover, launch, or attach to durable
|
|
85
|
-
campaigns.
|
|
94
|
+
campaigns. `uv run simjecture web --engine native` selects the built-in
|
|
95
|
+
compatibility engine when DSH is intentionally unavailable. See
|
|
96
|
+
[Web interface](web-interface.md).
|
|
86
97
|
|
|
87
98
|
## Optional terminal dashboard (maintenance mode)
|
|
88
99
|
|
|
@@ -17,8 +17,9 @@ uv run simjecture web demos/gray_scott_counterexample/record
|
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
This starts a local server at `http://127.0.0.1:8765/` and opens the default
|
|
20
|
-
browser. Use `--no-open` to print the address without opening it,
|
|
21
|
-
to select an available local port
|
|
20
|
+
browser. Use `--no-open` to print the address without opening it, `--open` to
|
|
21
|
+
state the default explicitly, or `--port 0` to select an available local port
|
|
22
|
+
automatically.
|
|
22
23
|
|
|
23
24
|
The interface has five connected projections:
|
|
24
25
|
|
|
@@ -132,7 +133,23 @@ uv run simjecture web --runs-root artifacts
|
|
|
132
133
|
|
|
133
134
|
Campaigns launched in the browser use the same structured
|
|
134
135
|
`operator_input/launch.json` contract as the TUI and CLI. No shell command is
|
|
135
|
-
constructed from hypothesis text.
|
|
136
|
+
constructed from hypothesis text. In v0.2, new browser campaigns use the
|
|
137
|
+
installed DeepSeek Harness profile by default. DSH owns provider routing,
|
|
138
|
+
retries, conversation compaction, and the resumable model session; Simjecture
|
|
139
|
+
continues to own the hypothesis graph, evidence rules, sandbox, capabilities,
|
|
140
|
+
jobs, and durable scientific record. The DSH session is stored inside the
|
|
141
|
+
campaign and reopened by **Resume** rather than replaced with a blank model
|
|
142
|
+
conversation.
|
|
143
|
+
|
|
144
|
+
The built-in reasoning loop remains available for compatibility and diagnosis:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
uv run simjecture web --engine native
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Viewing and controlling an already recorded campaign does not require Node.js
|
|
151
|
+
or DSH. Starting a new default campaign does; follow the
|
|
152
|
+
[DSH deployment guide](../how-to/deepseek-harness.md) once per machine.
|
|
136
153
|
|
|
137
154
|
## Local security boundary
|
|
138
155
|
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Run a Simjecture campaign under DSH
|
|
2
|
+
|
|
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
|
|
5
|
+
and fresh, claim-scoped Falsifier, Repair Scientist, and tool-free Judge
|
|
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.
|
|
14
|
+
|
|
15
|
+
## Provision the two runtimes
|
|
16
|
+
|
|
17
|
+
Provision the Python environment and any WarpX installation on the host first;
|
|
18
|
+
the bundle intentionally installs neither runtime. From the repository root:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
uv sync --extra dsh
|
|
22
|
+
source .venv/bin/activate
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`mcp>=2,<3` is optional. It is imported only when `simjecture-mcp` starts, so
|
|
26
|
+
schema and kernel-fake tests do not need the extra.
|
|
27
|
+
|
|
28
|
+
Ordinary users do not set the bridge variables themselves. The Web launcher
|
|
29
|
+
records the hypothesis and execution envelope first, generates a stable DSH
|
|
30
|
+
session identity, and supplies contained paths to the profile. The variables
|
|
31
|
+
below are shown only to make that process boundary auditable:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
mkdir -p runs
|
|
35
|
+
printf '%s\n' 'The initial scientific hypothesis goes here.' > hypothesis.txt
|
|
36
|
+
export SIMJECTURE_WORKSPACE="$PWD/runs"
|
|
37
|
+
export SIMJECTURE_CAMPAIGN="demo"
|
|
38
|
+
export SIMJECTURE_HYPOTHESIS_FILE="$PWD/hypothesis.txt"
|
|
39
|
+
export SIMJECTURE_CAPABILITIES="$PWD/capabilities"
|
|
40
|
+
export SIMJECTURE_SKILLS="$PWD/skills"
|
|
41
|
+
export SIMJECTURE_MCP_MAX_OUTPUT_CHARS=30000
|
|
42
|
+
export SIMJECTURE_MCP_TIMEOUT_SECONDS=600
|
|
43
|
+
export SIMJECTURE_DSH_SESSION_ID=simjecture-demo
|
|
44
|
+
export SIMJECTURE_DSH_SESSION_ROOT="$PWD/runs/demo/operator_input/dsh_sessions"
|
|
45
|
+
export SIMJECTURE_DSH_ACTIVITY_FILE="$PWD/runs/demo/operator_input/dsh_activity.jsonl"
|
|
46
|
+
export SIMJECTURE_DSH_STATE_FILE="$PWD/runs/demo/operator_input/dsh_state.json"
|
|
47
|
+
export SIMJECTURE_DSH_CONTROL_FILE="$PWD/runs/demo/operator_input/control.json"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The bridge uses these values for the MCP child process. It never accepts a
|
|
51
|
+
generic shell command or a host-wide absolute workspace path from a tool call.
|
|
52
|
+
|
|
53
|
+
## Pack and install the DSH profile
|
|
54
|
+
|
|
55
|
+
The profile bundle lives in `integrations/dsh` in a checkout and is also shipped
|
|
56
|
+
inside the Python wheel. Resolve, validate, and pack that copy, then install the
|
|
57
|
+
resulting local bundle into the isolated harness profile:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
SIMJECTURE_DSH_PROFILE="$(simjecture dsh-profile)"
|
|
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
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
For a checkout-only development install, use the directory directly when the
|
|
67
|
+
CLI supports local plugin paths:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
dsh plugin --profile simjecture add "$PWD/integrations/dsh"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
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.
|
|
76
|
+
|
|
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`
|
|
79
|
+
before installing this isolated profile.
|
|
80
|
+
|
|
81
|
+
## Inspect the resolved configuration
|
|
82
|
+
|
|
83
|
+
Before starting a long campaign, ask DSH to render the merged profile. The
|
|
84
|
+
exact option name is `--dump-config` in the prerelease CLI:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
dsh --profile simjecture --dump-config
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Confirm that the native MCP client is named `simjecture`, starts
|
|
91
|
+
`simjecture-mcp`, carries the `SIMJECTURE_*` environment, and has
|
|
92
|
+
`failOnStartupError: true`. Also confirm `approval.policy: never`, the
|
|
93
|
+
`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.
|
|
96
|
+
|
|
97
|
+
Completed large execution and workspace-write exchanges stay fully visible for
|
|
98
|
+
one model request. At a later step the profile may replace the balanced exchange
|
|
99
|
+
on the model-facing surface with a deterministic receipt containing stable
|
|
100
|
+
identifiers, selected status fields, sizes, and hashes. Other oversized tool
|
|
101
|
+
results receive deterministic head/tail pruning. Both are model-free, and all
|
|
102
|
+
original events remain in the append-only DSH log and Simjecture's durable
|
|
103
|
+
artifacts.
|
|
104
|
+
|
|
105
|
+
The tested `deepseek-official/deepseek-v4-flash` route advertises a one-million-
|
|
106
|
+
token context window. The Simjecture profile performs semantic compaction for
|
|
107
|
+
that exact route at 50% pressure and retains a 3% verbatim tail; DSH defaults
|
|
108
|
+
remain in force for other routes. This is a context threshold, not a campaign
|
|
109
|
+
token quota: scientific work continues until a durable stop condition or the
|
|
110
|
+
operator's wall/action budget is reached.
|
|
111
|
+
|
|
112
|
+
The bundle intentionally does not select a scientific reasoning model. Inspect
|
|
113
|
+
the resolved `agent-default-model` row and configure the desired provider/model
|
|
114
|
+
through DSH's profile settings or a later local patch.
|
|
115
|
+
|
|
116
|
+
## Launch through the Web interface
|
|
117
|
+
|
|
118
|
+
After the profile has been installed and inspected, use the ordinary Simjecture
|
|
119
|
+
entry point:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
uv run simjecture web
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
New browser campaigns use DSH by default. Recorded-run viewing needs neither
|
|
126
|
+
Node.js nor DSH, and `uv run simjecture web --engine native` retains the built-in
|
|
127
|
+
runner for compatibility and diagnosis. Pause and resume use the same Web and
|
|
128
|
+
CLI controls; resume opens the stable DSH session stored under
|
|
129
|
+
`operator_input/dsh_sessions` rather than starting an empty conversation.
|
|
130
|
+
|
|
131
|
+
The MCP server also supports a direct smoke launch when diagnosing the host:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
simjecture-mcp --workspace "$SIMJECTURE_WORKSPACE" \
|
|
135
|
+
--campaign "$SIMJECTURE_CAMPAIGN" \
|
|
136
|
+
--hypothesis-file "$SIMJECTURE_HYPOTHESIS_FILE"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
That command speaks MCP over stdio and expects an MCP client; it is not a
|
|
140
|
+
human-facing REPL. Use DSH's initialize/list-tools/call-tool trace to verify the
|
|
141
|
+
21 explicit MCP endpoints before submitting work. The persistent lead sees six
|
|
142
|
+
tools: two durable reads, fresh falsification and repair delegation, independent
|
|
143
|
+
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.
|
|
146
|
+
|
|
147
|
+
`observation_sufficient=true` means that a linked artifact satisfies its
|
|
148
|
+
selected prospective contract; it is not a researcher-issued support verdict.
|
|
149
|
+
Falsifiers may record that contract compliance but cannot close a scientific
|
|
150
|
+
claim as supported. The adjudication composite refuses to start a Judge without
|
|
151
|
+
at least one qualifying link under the selected contract, and only a sufficient
|
|
152
|
+
Judge verdict can pass the deterministic support gate.
|
|
153
|
+
|
|
154
|
+
Long-running actions have caller-supplied operation identifiers and return
|
|
155
|
+
durable jobs. Under DSH the waiter checks `job_status` below the model surface,
|
|
156
|
+
so one submitted run produces one terminal tool result instead of repeated
|
|
157
|
+
polling turns. An interrupted wait leaves the job durable and recoverable; it
|
|
158
|
+
never resubmits. A direct MCP client must perform these status reads itself.
|
|
159
|
+
Authenticated receipts let a restarted client recover known results, while
|
|
160
|
+
absent or invalid receipts remain `outcome_unknown`. A fresh `snapshot` includes
|
|
161
|
+
a bounded durable job list and remaining action/active-execution budget.
|
|
162
|
+
The campaign wall-time envelope charges time while its DSH researcher process
|
|
163
|
+
is active, including model and tool waits. The kernel additionally records
|
|
164
|
+
actual tool and simulation execution for durable recovery and per-command
|
|
165
|
+
limits. Calendar time while DSH and the MCP process are stopped is not charged.
|
|
166
|
+
|
|
167
|
+
One root MCP process owns the campaign for its lifetime. A second DSH profile or
|
|
168
|
+
the legacy runner fails closed instead of alternating writes through stale
|
|
169
|
+
in-memory ledgers. Detached simulation workers are the only exemption and use
|
|
170
|
+
the kernel's durable active-job lease.
|
|
171
|
+
|
|
172
|
+
## Scientific operating rule
|
|
173
|
+
|
|
174
|
+
Register a prospective evidence contract before linking an observation. Skill
|
|
175
|
+
materialization, literature results, workbench jobs, and partial jobs are
|
|
176
|
+
guidance or process metadata, not evidence. After a meaningful falsification
|
|
177
|
+
search, use the isolated adjudicator instead of self-certifying support. A
|
|
178
|
+
rejected package returns evidence gaps; an accepted package may close the claim,
|
|
179
|
+
but `finalize_campaign` writes a conclusion only after the global finish gate
|
|
180
|
+
passes. Preserve the durable campaign directory as the hand-off artifact.
|
|
@@ -29,6 +29,8 @@ hypothesis solving or empirical closure.
|
|
|
29
29
|
[Guided commissioning](how-to/guided-commissioning.md).
|
|
30
30
|
- **Operator:** use [Deploy runtime profiles](how-to/deploy-runtimes.md) to
|
|
31
31
|
provision and verify the core, WarpX CPU, or WarpX CUDA environment.
|
|
32
|
+
- **DSH operator:** use [Run a Simjecture campaign under DSH](how-to/deepseek-harness.md)
|
|
33
|
+
to install the native MCP profile and verify its tool boundary.
|
|
32
34
|
- **Reviewer:** inspect [Evaluation status](research/status.md),
|
|
33
35
|
the [recorded Gray–Scott demo](demos/gray-scott.md),
|
|
34
36
|
the [recorded collisionless GEM demo](demos/collisionless-gem.md),
|
|
@@ -69,6 +71,7 @@ research/limitations
|
|
|
69
71
|
how-to/guided-commissioning
|
|
70
72
|
how-to/add-a-capability
|
|
71
73
|
how-to/deploy-runtimes
|
|
74
|
+
how-to/deepseek-harness
|
|
72
75
|
```
|
|
73
76
|
|
|
74
77
|
```{toctree}
|
|
@@ -20,7 +20,8 @@ Principal command families:
|
|
|
20
20
|
- `watch`: follow durable MVP events until a terminal report or pause;
|
|
21
21
|
- `pause`: request an action-boundary pause of a verified live runner;
|
|
22
22
|
- `resume`: repeat a stored launch contract for a paused or incomplete run;
|
|
23
|
-
- `web`: local browser dashboard and reviewed campaign controls;
|
|
23
|
+
- `web`: local browser dashboard and reviewed campaign controls; new launches
|
|
24
|
+
use DSH by default, with `--engine native` as the compatibility fallback;
|
|
24
25
|
- `tui`: optional interactive dashboard (`uv sync --extra tui`);
|
|
25
26
|
- `benchmark`: deterministic planted scientific benchmarks;
|
|
26
27
|
- `campaign`: durable bounded campaign execution;
|