runops 1.2.0__tar.gz → 1.3.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.
- {runops-1.2.0/.codex → runops-1.3.0/.claude}/rules/commands.md +3 -3
- {runops-1.2.0/.claude → runops-1.3.0/.codex}/rules/commands.md +3 -3
- {runops-1.2.0 → runops-1.3.0}/PKG-INFO +1 -1
- {runops-1.2.0 → runops-1.3.0}/SPEC.md +22 -5
- {runops-1.2.0 → runops-1.3.0}/docs/architecture.md +7 -0
- {runops-1.2.0 → runops-1.3.0}/docs/get-started-with-agent.md +25 -0
- {runops-1.2.0 → runops-1.3.0}/docs/layers/interface.md +7 -2
- {runops-1.2.0 → runops-1.3.0}/docs/toml-reference.md +21 -0
- {runops-1.2.0 → runops-1.3.0}/pyproject.toml +1 -1
- {runops-1.2.0 → runops-1.3.0}/src/runops/__init__.py +1 -1
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/actions/__init__.py +16 -0
- runops-1.3.0/src/runops/application/actions/bundle_archive.py +700 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/actions/registry.py +3 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/actions/specs.py +39 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/list.py +5 -2
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/manage.py +145 -1
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/operations.py +10 -2
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/discovery.py +16 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/scaffold/gitignore.txt +5 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_action_contract.py +7 -1
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_actions.py +306 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_init.py +8 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_list.py +19 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_manage.py +117 -0
- {runops-1.2.0 → runops-1.3.0}/uv.lock +1 -1
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/beach/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/check/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/emses/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/implement-adapter/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/implement-cli/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/implement-core/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/implement-launcher/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/implement-slurm/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/improve-harness/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/agents/openai.yaml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/examples/refactor-request.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/references/anti-patterns.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/references/api-compatibility.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/references/packaging-modernization.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/references/refactor-playbook.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/references/verification.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/scripts/api_surface_snapshot.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/scripts/import_smoke.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/scripts/inspect_python_package.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/python-package-refactor/scripts/refactor_quality_gate.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/release/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/scaffold/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/spec-reviewer/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/test-module/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/test-writer/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.agents/skills/update-docs/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/agents/beach.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/agents/emses.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/agents/implement-adapter.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/agents/implement-cli.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/agents/implement-core.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/agents/implement-launcher.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/agents/implement-slurm.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/agents/scaffold.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/agents/spec-reviewer.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/agents/test-writer.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/rules/architecture.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/rules/dev-workflow.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/rules/gotchas.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/rules/knowledge-layer.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/settings.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/check/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/improve-harness/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/agents/openai.yaml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/examples/refactor-request.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/references/anti-patterns.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/references/api-compatibility.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/references/packaging-modernization.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/references/refactor-playbook.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/references/verification.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/scripts/api_surface_snapshot.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/scripts/import_smoke.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/scripts/inspect_python_package.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/python-package-refactor/scripts/refactor_quality_gate.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/release/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/test-module/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.claude/skills/update-docs/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/README.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/agents/beach.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/agents/emses.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/agents/implement-adapter.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/agents/implement-cli.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/agents/implement-core.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/agents/implement-launcher.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/agents/implement-slurm.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/agents/scaffold.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/agents/spec-reviewer.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/agents/test-writer.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/config.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/rules/architecture.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/rules/dev-workflow.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/rules/gotchas.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/rules/knowledge-layer.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/.codex/rules/runops.rules +0 -0
- {runops-1.2.0 → runops-1.3.0}/.dockerignore +0 -0
- {runops-1.2.0 → runops-1.3.0}/.gitattributes +0 -0
- {runops-1.2.0 → runops-1.3.0}/.github/workflows/ci.yml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.github/workflows/publish.yml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.gitignore +0 -0
- {runops-1.2.0 → runops-1.3.0}/.harness/manifest.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.pre-commit-config.yaml +0 -0
- {runops-1.2.0 → runops-1.3.0}/.vscode/settings.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/AGENTS.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/CLAUDE.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/LICENSE +0 -0
- {runops-1.2.0 → runops-1.3.0}/README.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/SKILLS.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/agent-user-guide.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/demo-replay.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/extending.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/figures/layers/overview.png +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/layers/README.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/layers/analysis.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/layers/execution-kernel.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/layers/experiment.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/layers/harness.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/layers/knowledge.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/layers/research.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/layers/upstream.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/local-runops-patches.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/mcp.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/migrations/README.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/migrations/v0.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/paper-requests.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/project-health.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/runops-intro.pdf +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/runops-intro.tex +0 -0
- {runops-1.2.0 → runops-1.3.0}/docs/simulator-kb-spec.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/entrypoints.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/beach/campaign.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/beach/cases/periodic2_basic/beach_template.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/beach/cases/periodic2_basic/case.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/beach/launchers.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/beach/simulators.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/beach/surveys/density_scan/survey.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/emses/campaign.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/emses/cases/flat_surface/case.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/emses/cases/flat_surface/plasma.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/emses/launchers.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/emses/simulators.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/examples/emses/surveys/mag_angle_scan/survey.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/campaign.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/case.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/codex-plugin-check-result.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/codex-plugin-inventory.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/codex-plugin-recommendation.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/launchers.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/manifest.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/runops.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/simulators.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/site.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/schemas/survey.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/_provenance.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/_runtime.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/_utils/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/_utils/toml_utils.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/base.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/bundled.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/_paths.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/beach/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/beach/adapter.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/beach/constants.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/beach/diagnostics.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/beach/metadata.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/beach/validation.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/emses/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/emses/adapter.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/emses/constants.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/emses/diagnostics.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/emses/metadata.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/contrib/emses/validation.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/generic.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/adapters/registry.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/actions/admin.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/actions/analysis.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/actions/helpers.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/actions/knowledge.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/actions/result.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/actions/run_lifecycle.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/artifacts.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/collection.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/comparison.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/plotting.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/report.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/story/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/story/audit.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/story/models.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/story/render.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/story/schema.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/story/sources.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/story/workspace.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/analysis/workflow.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/context.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/execution/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/execution/readiness.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/execution/retry.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/execution/submission/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/execution/submission/apply.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/execution/submission/claim.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/execution/submission/models.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/execution/submission/planning.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/gateway/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/gateway/plugins/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/gateway/plugins/discovery.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/gateway/plugins/inventory.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/gateway/plugins/models.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/gateway/plugins/validation.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/coverage_policy.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/harness_upgrade.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/lint/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/lint/analysis.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/lint/knowledge.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/lint/models.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/lint/plugins.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/lint/registry.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/lint/runs.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/lint/structure.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/migrations/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/migrations/models.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/migrations/registry.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/operator/migrations/v0.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/ports/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/ports/scheduler.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/publication/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/publication/files.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/publication/sources.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/publication/workflow.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/research/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/research/workspace.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/run_creation/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/run_creation/manifest.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/run_creation/merge.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/run_creation/plan.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/run_creation/regenerate.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/run_creation/resolve.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/run_creation/staging.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/application/run_creation/workflow.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/analyze.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/clone.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/config.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/context.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/create.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/dashboard.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/demo.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/extend.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/groups/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/groups/analyze.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/groups/case.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/groups/research.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/groups/runs.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/history.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/init/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/init/bootstrap.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/init/command.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/init/doctor.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/init/github_auth.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/init/knowledge.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/init/prompting.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/init/scaffold.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/init/serialization.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/init/workflow.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/jobs.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/knowledge/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/knowledge/command.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/knowledge/common.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/knowledge/sources.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/lint.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/log.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/main.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/mcp.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/migrate.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/new.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/plugins.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/regenerate.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/research.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/retry.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/run_lookup.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/setup.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/status.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/submit.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/update.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/update_harness.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/update_notice.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/cli/update_refs.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/campaign.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/case.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/codex_plugin.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/demo/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/demo/importer.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/demo/replay.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/demo/sanitize.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/environment/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/environment/runtime.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/event_log.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/exceptions.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge/facts.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge/insights.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge/paths.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge_source/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge_source/config.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge_source/discovery.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge_source/entrypoints.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge_source/imports.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge_source/paths.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge_source/render.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge_source/sync.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/knowledge_source/validation.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/manifest.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/models/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/models/analysis.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/models/knowledge.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/models/knowledge_source.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/models/publication.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/models/run_creation.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/project.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/project_files.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/provenance.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/repository.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/research/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/research/workspace.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/run/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/run/derivation.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/run/records.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/site/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/site/profile.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/state.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/survey/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/survey/config.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/survey/naming.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/upgrade_chain.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/core/validation/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/harness/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/harness/_adapters.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/harness/_plugins.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/harness/_skills.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/harness/builder.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/harness/claude.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/harness/codex.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/jobgen/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/jobgen/generator.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/launchers/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/launchers/base.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/launchers/mpiexec.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/launchers/mpirun.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/launchers/srun.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/_tools/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/_tools/analysis.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/_tools/common.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/_tools/project.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/_tools/provider.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/_tools/publication.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/_tools/runs.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/_tools/scheduler.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/registry.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/safety.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/schemas.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/server.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/mcp/tools.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/sites/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/sites/camphor.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/sites/camphor.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/slurm/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/slurm/query.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/slurm/submit.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/README.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/adapters/beach/agent_guide.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/adapters/beach/beach.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/adapters/beach/case.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/adapters/beach/summarize.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/adapters/emses/agent_guide.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/adapters/emses/case.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/adapters/emses/plasma.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/adapters/emses/summarize.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/adapters/generic/case.toml.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/adapters/generic/summarize.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/demo/replay.html.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/claude/CLAUDE.md.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/claude/rules/cookbook.md.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/claude/rules/plan-before-act.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/claude/rules/runops-workflow.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/codex/AGENTS.md.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/codex/README.md.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/codex/config.toml.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/codex/rules/runops.rules +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/shared/cases.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/shared/partials/agent-body.md.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/shared/rules/cookbook.md.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/harness/shared/runs.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/knowledge/runops/agent-user-guide.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/scaffold/campaign.toml.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/scaffold/facts.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/scaffold/materials/README.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/scaffold/materials/index.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/scaffold/research/CURRENT.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/scaffold/research/journal/active.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/scaffold/vscode_settings.json +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/analyze/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/check-status/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/cleanup/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/create-run/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/debug-failed/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/learn/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/migrate-runops/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/new-case/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/patch-runops/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/release/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/research-workspace/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/run-all/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/runops-reference/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/setup-campaign/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/setup-env/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/setup-plugins/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/setup-runops/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/summarize-script/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/survey-design/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/skills/update-runops/SKILL.md +0 -0
- {runops-1.2.0 → runops-1.3.0}/src/runops/templates/survey.toml.j2 +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/conftest.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/factories.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/fixtures/sample_case.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/fixtures/sample_launchers.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/fixtures/sample_manifest.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/fixtures/sample_runops.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/fixtures/sample_simulators.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/fixtures/sample_survey.toml +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_adapters/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_adapters/test_beach.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_adapters/test_contract.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_adapters/test_emses.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_adapters/test_generic.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_adapters/test_provenance.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_adapters/test_registry.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_adapters/test_runtime.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_adapters/test_toml_utils.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_analysis.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_analysis_comparison.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_analysis_story.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_capability_facades.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_context.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_coverage_policy.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_harness_upgrade.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_lint.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_migrations.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_plugins.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_publication.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_readiness.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_research_workspace.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_retry.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_run_creation.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_story_audit.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_story_render.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_story_schema.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_story_sources.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_submission.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_application/test_submission_parity.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_architecture/test_core_import_boundaries.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_analyze.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_clone.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_config.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_context_cli.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_create.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_dashboard.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_demo.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_event_log.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_extend.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_history.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_init_bootstrap.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_init_github_auth.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_init_helpers.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_init_scaffold.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_jobs.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_knowledge.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_knowledge_source_helpers.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_lint.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_log.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_main.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_mcp.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_migrate.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_new.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_plugins.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_regenerate.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_research.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_retry.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_setup.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_status.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_submit.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_update.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_update_harness.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_update_notice.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_cli/test_update_refs.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_case.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_demo_import.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_demo_replay.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_discovery.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_environment.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_event_log.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_knowledge_source.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_knowledge_source_render.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_knowledge_source_validation.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_manifest.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_project.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_provenance.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_repository.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_research_workspace.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_run.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_schemas.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_site.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_state.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_survey.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_core/test_upgrade_chain.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_e2e/test_bootstrap.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_e2e/test_golden_path.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_harness/test_claude.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_harness/test_codex.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_harness/test_development_guidance.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_launchers/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_launchers/test_launcher_base.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_launchers/test_mpiexec.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_launchers/test_mpirun.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_launchers/test_srun.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_mcp/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_mcp/test_registry.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_mcp/test_server.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_mcp/test_tools.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_slurm/__init__.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_slurm/test_jobgen.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_slurm/test_slurm_query.py +0 -0
- {runops-1.2.0 → runops-1.3.0}/tests/test_slurm/test_slurm_submit.py +0 -0
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
| `runo runs jobs [PATH] [--watch SECS]` | 実行中ジョブ一覧 |
|
|
54
54
|
| `runo runs dashboard [TARGETS...] [--watch SECS] [--all]` | 複数 run の進捗表。`--all` では cached analysis / next action も表示 |
|
|
55
55
|
| `runo runs history [PATH]` | 投入履歴表示 |
|
|
56
|
-
| `runo runs list [PATHS...] [--include-archived]` | run 一覧と cached analysis / next action を表示。既定では archived / purged
|
|
56
|
+
| `runo runs list [PATHS...] [--include-archived]` | run 一覧と cached analysis / next action を表示。既定では archived / purged と archived bundle 配下を除外 |
|
|
57
57
|
|
|
58
58
|
## 解析・知見
|
|
59
59
|
|
|
@@ -100,8 +100,8 @@
|
|
|
100
100
|
|
|
101
101
|
| コマンド | 説明 |
|
|
102
102
|
|---------|------|
|
|
103
|
-
| `runo runs archive [RUNS...] [--keep-in-place] [--move-to DIR]` | run
|
|
104
|
-
| `runo runs restore RUN` | archived run
|
|
103
|
+
| `runo runs archive [RUNS...] [--keep-in-place] [--move-to DIR] [--bundle] [--adopt-archived]` | 通常は completed run を archive。`--bundle` は親ディレクトリ全体を移動し、配下 run state を保持。`--adopt-archived` は同じ親から個別 archive 済みの run を検証して bundle へ採用 |
|
|
104
|
+
| `runo runs restore RUN [--bundle]` | 通常は archived run を復元。`--bundle` は親ディレクトリ全体を archive 前の場所へ復元 |
|
|
105
105
|
| `runo runs purge-work [RUN] [--discard-incomplete --reason WHY]` | work/ 内の不要ファイル削除。既知の non-ready output を破棄する場合は理由必須 |
|
|
106
106
|
| `runo runs cancel [RUN]` | scancel + sync (submitted/running を停止) |
|
|
107
107
|
| `runo runs delete [RUN]` | run ディレクトリ削除 (created/cancelled/failed のみ) |
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
| `runo runs jobs [PATH] [--watch SECS]` | 実行中ジョブ一覧 |
|
|
54
54
|
| `runo runs dashboard [TARGETS...] [--watch SECS] [--all]` | 複数 run の進捗表。`--all` では cached analysis / next action も表示 |
|
|
55
55
|
| `runo runs history [PATH]` | 投入履歴表示 |
|
|
56
|
-
| `runo runs list [PATHS...] [--include-archived]` | run 一覧と cached analysis / next action を表示。既定では archived / purged
|
|
56
|
+
| `runo runs list [PATHS...] [--include-archived]` | run 一覧と cached analysis / next action を表示。既定では archived / purged と archived bundle 配下を除外 |
|
|
57
57
|
|
|
58
58
|
## 解析・知見
|
|
59
59
|
|
|
@@ -100,8 +100,8 @@
|
|
|
100
100
|
|
|
101
101
|
| コマンド | 説明 |
|
|
102
102
|
|---------|------|
|
|
103
|
-
| `runo runs archive [RUNS...] [--keep-in-place] [--move-to DIR]` | run
|
|
104
|
-
| `runo runs restore RUN` | archived run
|
|
103
|
+
| `runo runs archive [RUNS...] [--keep-in-place] [--move-to DIR] [--bundle] [--adopt-archived]` | 通常は completed run を archive。`--bundle` は親ディレクトリ全体を移動し、配下 run state を保持。`--adopt-archived` は同じ親から個別 archive 済みの run を検証して bundle へ採用 |
|
|
104
|
+
| `runo runs restore RUN [--bundle]` | 通常は archived run を復元。`--bundle` は親ディレクトリ全体を archive 前の場所へ復元 |
|
|
105
105
|
| `runo runs purge-work [RUN] [--discard-incomplete --reason WHY]` | work/ 内の不要ファイル削除。既知の non-ready output を破棄する場合は理由必須 |
|
|
106
106
|
| `runo runs cancel [RUN]` | scancel + sync (submitted/running を停止) |
|
|
107
107
|
| `runo runs delete [RUN]` | run ディレクトリ削除 (created/cancelled/failed のみ) |
|
|
@@ -489,9 +489,15 @@ runs/**/work/*.err
|
|
|
489
489
|
runs/**/work/*.log
|
|
490
490
|
|
|
491
491
|
# analysis cache
|
|
492
|
-
runs/**/analysis/cache/
|
|
493
|
-
runs/**/analysis/.ipynb_checkpoints/
|
|
494
|
-
```
|
|
492
|
+
runs/**/analysis/cache/
|
|
493
|
+
runs/**/analysis/.ipynb_checkpoints/
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
`runs/_archive/` 自体は ignore しない。bundle archive 後も
|
|
497
|
+
`survey.toml`、`manifest.toml`、source input、curated analysis、
|
|
498
|
+
`.runops-archive.toml` は Git 管理可能とする。一方、上記の `runs/**` pattern は
|
|
499
|
+
archive 配下にも同様に適用し、`work/`、`status/`、cache / scratch、生成済み input は
|
|
500
|
+
Git 管理対象へ戻さない。
|
|
495
501
|
|
|
496
502
|
---
|
|
497
503
|
|
|
@@ -841,6 +847,14 @@ scientific evidence の受理条件にしない。
|
|
|
841
847
|
|
|
842
848
|
active view から退避済み。既定では run directory 全体を `runs/_archive/` へ移し、
|
|
843
849
|
入力・出力・restart・解析 artifact は保持する
|
|
850
|
+
|
|
851
|
+
親ディレクトリを `--bundle` で退避する操作は run lifecycle と直交する。
|
|
852
|
+
bundle 配下の `completed` / `cancelled` / `failed` / `created` 等の状態は変更せず、
|
|
853
|
+
`.runops-archive.toml` を親ディレクトリの archive marker とする。
|
|
854
|
+
archive destination が既に存在する場合は既定で拒否する。`--adopt-archived` を明示した
|
|
855
|
+
場合に限り、同じ親から同じ相対パスへ個別 archive 済みで、状態が `archived` または
|
|
856
|
+
`purged` の run のみを bundle へ採用できる。destination 内に対象 run 外の path がある、
|
|
857
|
+
元 path と相対位置が一致しない、または source 側と衝突する場合は全体を変更せず拒否する。
|
|
844
858
|
|
|
845
859
|
### `purged`
|
|
846
860
|
|
|
@@ -1133,8 +1147,8 @@ single-target モードでは "nothing to sync" notice を出してエラー扱
|
|
|
1133
1147
|
|
|
1134
1148
|
## 18.5 一覧
|
|
1135
1149
|
|
|
1136
|
-
* `runo runs list [PATHS...]` — 既定では archived / purged
|
|
1137
|
-
* `runo runs list [PATHS...] --include-archived` — archived / purged
|
|
1150
|
+
* `runo runs list [PATHS...]` — 既定では archived / purged と archived bundle 配下を除く active view
|
|
1151
|
+
* `runo runs list [PATHS...] --include-archived` — archived / purged と archived bundle 配下を含める
|
|
1138
1152
|
* `runo runs list --status failed`
|
|
1139
1153
|
* `runo runs list --status archived` — 明示した archived run だけを表示する
|
|
1140
1154
|
* `runo runs list --tag production`
|
|
@@ -1163,7 +1177,10 @@ single-target モードでは "nothing to sync" notice を出してエラー扱
|
|
|
1163
1177
|
* `runo runs archive <run_dir or run_id>` — completed → archived。既定では `runs/_archive/<元の runs/ 相対パス>` へ移動する
|
|
1164
1178
|
* `runo runs archive <run_dir or run_id> --keep-in-place` — completed → archived の状態変更のみ行う
|
|
1165
1179
|
* `runo runs archive <run_dir or run_id> --move-to <archive_root>` — custom archive root へ移動する
|
|
1180
|
+
* `runo runs archive <parent_dir> --bundle` — `survey.toml` と配下 run を親ごと `runs/_archive/<元の runs/ 相対パス>` へ移動する。run state は保持し、submitted / running を含む場合は全体を変更せず拒否する
|
|
1181
|
+
* `runo runs archive <parent_dir> --bundle --adopt-archived` — 同じ親から個別 archive 済みの archived / purged run を検証して bundle へ採用する。確認前に対象 run ID と状態を表示し、競合や所有不明 path があれば変更せず拒否する
|
|
1166
1182
|
* `runo runs restore <run_dir or run_id>` — archived → completed。`archived_from` へフォルダごと戻し、全 artifact を保持する。in-place archive は状態だけ戻す
|
|
1183
|
+
* `runo runs restore <archived_parent_dir> --bundle` — `.runops-archive.toml` の `archived_from` へ親ごと戻し、各 run state を保持する
|
|
1167
1184
|
* `runo runs purge-work [<run_dir or run_id>]` — archived → purged。cached readiness が
|
|
1168
1185
|
incomplete / unknown の場合は `--discard-incomplete --reason <WHY>` を同じ command に指定して
|
|
1169
1186
|
review provenance を残す
|
|
@@ -413,6 +413,13 @@ class RunState(str, Enum):
|
|
|
413
413
|
directory と全 artifact を復元する。`purged` は削除済み artifact を復元できないため
|
|
414
414
|
restore 対象外とする。
|
|
415
415
|
|
|
416
|
+
`runo runs archive/restore --bundle` はこの state machine を変更しない container 操作とする。
|
|
417
|
+
親ディレクトリへ `.runops-archive.toml` を置いて物理的な active/archive view を表し、
|
|
418
|
+
配下 run の `cancelled` 等の実行結果を保持する。submitted / running を含む bundle は
|
|
419
|
+
移動前の precondition check で拒否する。
|
|
420
|
+
`--adopt-archived` は provenance と相対 path が一致する個別 archive 済み run だけを
|
|
421
|
+
明示的に bundle へ統合する。
|
|
422
|
+
|
|
416
423
|
`update_state()` は以下を実行します:
|
|
417
424
|
1. manifest.toml から現在の状態を読み取り
|
|
418
425
|
2. 遷移の正当性を検証
|
|
@@ -167,6 +167,31 @@ runo runs restore R2026... # archive 前の場所へ全 artifact を
|
|
|
167
167
|
|
|
168
168
|
出力を今後も使う場合は `runo runs purge-work` を実行しないでください。
|
|
169
169
|
|
|
170
|
+
survey 一式を `survey.toml` や cancelled / failed run も含めて退避する場合は、
|
|
171
|
+
親ディレクトリを bundle として移動します。配下の run state は変わりません。
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
runo runs archive runs/scan --bundle
|
|
175
|
+
runo runs list --include-archived
|
|
176
|
+
runo runs restore runs/_archive/scan --bundle
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
submitted / running を含む bundle は移動されません。`runs/_archive/` は Git 管理可能で、
|
|
180
|
+
`survey.toml`、manifest、入力パラメータ、解析スクリプトは記録できます。
|
|
181
|
+
`work/`、`status/`、cache / scratch は active run と同様に `.gitignore` 対象です。
|
|
182
|
+
|
|
183
|
+
配下の run を先に個別 archive しており、`runs/_archive/scan` が既にある場合、通常の
|
|
184
|
+
bundle archive は競合として拒否します。元の親と相対パスが一致する archived / purged
|
|
185
|
+
run だけを bundle に取り込むには、明示的に次を使います。
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
runo runs archive runs/scan --bundle --adopt-archived
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
確認前に採用対象の run ID と状態が表示されます。archive destination に対象 run 以外の
|
|
192
|
+
ファイルがある場合や、元 path が別の親を指す場合は何も移動しません。bundle restore
|
|
193
|
+
では採用した run も元の相対パスへ戻りますが、個々の `archived` / `purged` 状態は保持します。
|
|
194
|
+
|
|
170
195
|
## SKILL を明示するとき
|
|
171
196
|
|
|
172
197
|
通常は「何をしてほしいか」を書けば十分です。意図がずれるときだけ、ひと言添えてください。
|
|
@@ -193,12 +193,17 @@ service ではありません。
|
|
|
193
193
|
| `runo analyze new-story NAME [--id ID] [--title TITLE] [--source PATH]` | strict source/schema の story acceptance workspace を作成 |
|
|
194
194
|
| `runo analyze audit-story [STORY_DIR]` | source artifact を照合し `audit.json` / `audit.md` を生成 |
|
|
195
195
|
| `runo runs cancel [RUN]` | submitted/running な run を `scancel` + `sync` で停止 |
|
|
196
|
-
| `runo runs archive [RUNS...] [--keep-in-place] [--move-to DIR]` | completed run を archived
|
|
197
|
-
| `runo runs restore RUN` | archived run
|
|
196
|
+
| `runo runs archive [RUNS...] [--keep-in-place] [--move-to DIR] [--bundle] [--adopt-archived]` | 通常は completed run を archived にする。`--bundle` は親と全内容を移動し、各 run state を保持。`--adopt-archived` は一致する個別 archive 済み run を検証して採用 |
|
|
197
|
+
| `runo runs restore RUN [--bundle]` | 通常は archived run を completed に戻す。`--bundle` は親と全内容を元のパスへ戻す |
|
|
198
198
|
| `runo runs purge-work [RUN] [--discard-incomplete --reason WHY]` | archived run の work 削除。既知 non-ready output の破棄は理由必須 |
|
|
199
199
|
| `runo runs delete [RUN]` | created / cancelled / failed run を削除 |
|
|
200
200
|
|
|
201
201
|
completed / archived run には `delete` を使わず、`archive` → `purge-work` の経路を使います。
|
|
202
|
+
bundle archive は run state と直交し、submitted / running を含む親は移動しません。
|
|
203
|
+
既存 archive destination は原則拒否し、`--adopt-archived` 指定時だけ同じ親・相対 path の
|
|
204
|
+
archived / purged run を採用します。所有不明 path や source 側の衝突があれば変更しません。
|
|
205
|
+
`runs/_archive/` 自体は Git 管理対象から外さず、active run と同じ `.gitignore` 規則で
|
|
206
|
+
`work/`、`status/`、cache / scratch のみを除外します。
|
|
202
207
|
|
|
203
208
|
### Notes / Knowledge
|
|
204
209
|
|
|
@@ -721,6 +721,27 @@ status_dir = "status"
|
|
|
721
721
|
| `archived_at` | datetime string | ISO 8601 timestamp for the latest archive relocation. |
|
|
722
722
|
| `restored_from` | string | Archived directory used for the latest restore. |
|
|
723
723
|
| `restored_at` | datetime string | ISO 8601 timestamp for the latest restore. |
|
|
724
|
+
| `bundle_archived_from` | string | Run path before its parent directory was bundle-archived. Does not change `run.status`. |
|
|
725
|
+
| `bundle_archived_at` | datetime string | ISO 8601 timestamp for the latest parent bundle archive. |
|
|
726
|
+
| `bundle_restored_from` | string | Run path inside the archived parent used for the latest bundle restore. |
|
|
727
|
+
| `bundle_restored_at` | datetime string | ISO 8601 timestamp for the latest parent bundle restore. |
|
|
728
|
+
|
|
729
|
+
### `.runops-archive.toml`
|
|
730
|
+
|
|
731
|
+
`runo runs archive PARENT --bundle` が archived parent の直下へ生成する restore marker。
|
|
732
|
+
Git 管理可能な小さな provenance file であり、配下 run の lifecycle state は表さない。
|
|
733
|
+
|
|
734
|
+
| Field | Type | Description |
|
|
735
|
+
|-------|------|-------------|
|
|
736
|
+
| `bundle.format_version` | integer | Bundle archive metadata format. Currently `1`. |
|
|
737
|
+
| `bundle.archived_from` | absolute path string | Parent directory restored by `runo runs restore --bundle`. |
|
|
738
|
+
| `bundle.archived_at` | datetime string | ISO 8601 archive timestamp. |
|
|
739
|
+
| `bundle.run_count` | integer | Number of run manifests moved with the parent. |
|
|
740
|
+
| `bundle.adopted_run_ids` | array of strings | Individually archived/purged run IDs adopted with `--adopt-archived`; empty for a normal bundle archive. |
|
|
741
|
+
|
|
742
|
+
`runs/_archive/` 自体は `.gitignore` 対象にしない。ただし `runs/**/work/`、
|
|
743
|
+
`runs/**/status/`、analysis cache / scratch、生成済み input の除外規則は archive 配下にも
|
|
744
|
+
適用される。
|
|
724
745
|
|
|
725
746
|
### State Machine
|
|
726
747
|
|
|
@@ -36,6 +36,18 @@ from runops.application.actions.analysis import (
|
|
|
36
36
|
from runops.application.actions.analysis import (
|
|
37
37
|
summarize_run as summarize_run,
|
|
38
38
|
)
|
|
39
|
+
from runops.application.actions.bundle_archive import (
|
|
40
|
+
archive_bundle as archive_bundle,
|
|
41
|
+
)
|
|
42
|
+
from runops.application.actions.bundle_archive import (
|
|
43
|
+
default_bundle_archive_destination as default_bundle_archive_destination,
|
|
44
|
+
)
|
|
45
|
+
from runops.application.actions.bundle_archive import (
|
|
46
|
+
plan_bundle_archive as plan_bundle_archive,
|
|
47
|
+
)
|
|
48
|
+
from runops.application.actions.bundle_archive import (
|
|
49
|
+
restore_bundle as restore_bundle,
|
|
50
|
+
)
|
|
39
51
|
from runops.application.actions.knowledge import (
|
|
40
52
|
add_fact as add_fact,
|
|
41
53
|
)
|
|
@@ -93,20 +105,24 @@ __all__ = [
|
|
|
93
105
|
"ActionSpec",
|
|
94
106
|
"ActionStatus",
|
|
95
107
|
"add_fact",
|
|
108
|
+
"archive_bundle",
|
|
96
109
|
"archive_run",
|
|
97
110
|
"cancel_run",
|
|
98
111
|
"collect_survey",
|
|
99
112
|
"create_run",
|
|
100
113
|
"create_survey",
|
|
101
114
|
"default_archive_destination",
|
|
115
|
+
"default_bundle_archive_destination",
|
|
102
116
|
"delete_run",
|
|
103
117
|
"execute_action",
|
|
104
118
|
"export_publication",
|
|
105
119
|
"get_action_spec",
|
|
106
120
|
"list_actions",
|
|
121
|
+
"plan_bundle_archive",
|
|
107
122
|
"plan_retry",
|
|
108
123
|
"promote_fact",
|
|
109
124
|
"purge_work",
|
|
125
|
+
"restore_bundle",
|
|
110
126
|
"restore_run",
|
|
111
127
|
"retry_run",
|
|
112
128
|
"save_insight",
|