roar-cli 0.2.10__tar.gz → 0.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.
- {roar_cli-0.2.10 → roar_cli-0.3.0}/PKG-INFO +208 -14
- {roar_cli-0.2.10 → roar_cli-0.3.0}/README.md +205 -13
- {roar_cli-0.2.10 → roar_cli-0.3.0}/pyproject.toml +21 -2
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/__main__.py +1 -1
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/git.py +12 -3
- roar_cli-0.3.0/roar/application/label_rendering.py +37 -0
- roar_cli-0.3.0/roar/application/labels.py +861 -0
- roar_cli-0.3.0/roar/application/lookup/__init__.py +21 -0
- roar_cli-0.3.0/roar/application/lookup/models.py +52 -0
- roar_cli-0.3.0/roar/application/lookup/policy.py +35 -0
- roar_cli-0.3.0/roar/application/lookup/refs.py +38 -0
- roar_cli-0.3.0/roar/application/lookup/remote_artifacts.py +40 -0
- roar_cli-0.3.0/roar/application/lookup/runner.py +32 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/collection.py +73 -14
- roar_cli-0.3.0/roar/application/publish/git_remote.py +124 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/job_preparation.py +9 -1
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/lineage.py +142 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/put_composites.py +11 -4
- roar_cli-0.3.0/roar/application/publish/put_execution.py +1048 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/put_preparation.py +12 -1
- roar_cli-0.3.0/roar/application/publish/register_execution.py +545 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/register_preparation.py +37 -5
- roar_cli-0.3.0/roar/application/publish/register_preview_jobs.py +112 -0
- roar_cli-0.3.0/roar/application/publish/register_tag_push.py +157 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/registration.py +26 -9
- roar_cli-0.3.0/roar/application/publish/registration_package.py +511 -0
- roar_cli-0.3.0/roar/application/publish/remote_job_uids.py +50 -0
- roar_cli-0.3.0/roar/application/publish/remote_registry.py +85 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/requests.py +4 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/results.py +17 -0
- roar_cli-0.3.0/roar/application/publish/runtime.py +77 -0
- roar_cli-0.3.0/roar/application/publish/service.py +671 -0
- roar_cli-0.3.0/roar/application/publish/session.py +429 -0
- roar_cli-0.3.0/roar/application/query/__init__.py +60 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/query/dag.py +27 -7
- roar_cli-0.3.0/roar/application/query/diff.py +69 -0
- roar_cli-0.3.0/roar/application/query/diff_engine.py +535 -0
- roar_cli-0.3.0/roar/application/query/diff_graph.py +427 -0
- roar_cli-0.3.0/roar/application/query/diff_refs.py +159 -0
- roar_cli-0.3.0/roar/application/query/git_readiness.py +216 -0
- roar_cli-0.3.0/roar/application/query/inputs.py +317 -0
- roar_cli-0.3.0/roar/application/query/label.py +368 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/query/log.py +6 -7
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/query/requests.py +55 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/query/results.py +115 -2
- roar_cli-0.3.0/roar/application/query/show.py +508 -0
- roar_cli-0.3.0/roar/application/query/status.py +194 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/reproduce/environment.py +1 -1
- roar_cli-0.3.0/roar/application/reproduce/lookup.py +287 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/reproduce/requests.py +2 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/reproduce/results.py +3 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/reproduce/service.py +63 -15
- roar_cli-0.3.0/roar/application/run/dirty_tree_error.py +163 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/run/execution.py +70 -40
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/run/requests.py +2 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/run/service.py +121 -33
- roar_cli-0.3.0/roar/application/run/verbosity.py +112 -0
- roar_cli-0.3.0/roar/application/system_labels.py +612 -0
- roar_cli-0.3.0/roar/application/workflow/__init__.py +13 -0
- roar_cli-0.3.0/roar/application/workflow/requests.py +18 -0
- roar_cli-0.3.0/roar/application/workflow/results.py +27 -0
- roar_cli-0.3.0/roar/application/workflow/service.py +359 -0
- roar_cli-0.3.0/roar/auth_store.py +148 -0
- roar_cli-0.3.0/roar/backends/osmo/__init__.py +29 -0
- roar_cli-0.3.0/roar/backends/osmo/config.py +171 -0
- roar_cli-0.3.0/roar/backends/osmo/export.py +188 -0
- roar_cli-0.3.0/roar/backends/osmo/host_execution.py +1652 -0
- roar_cli-0.3.0/roar/backends/osmo/lineage.py +315 -0
- roar_cli-0.3.0/roar/backends/osmo/plugin.py +37 -0
- roar_cli-0.3.0/roar/backends/osmo/runtime_bundle.py +131 -0
- roar_cli-0.3.0/roar/backends/osmo/submit.py +65 -0
- roar_cli-0.3.0/roar/backends/osmo/workflow.py +516 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/env_contract.py +2 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/fragment_reconstituter.py +2 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/runtime_hooks.py +4 -1
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/submit_context.py +2 -0
- roar_cli-0.3.0/roar/cli/__init__.py +225 -0
- roar_cli-0.3.0/roar/cli/_format.py +70 -0
- roar_cli-0.3.0/roar/cli/command_registry.py +271 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/__init__.py +1 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/auth.py +44 -18
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/build.py +2 -2
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/config.py +13 -2
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/dag.py +30 -1
- roar_cli-0.3.0/roar/cli/commands/diff.py +77 -0
- roar_cli-0.3.0/roar/cli/commands/export_registration_package.py +80 -0
- roar_cli-0.3.0/roar/cli/commands/init.py +407 -0
- roar_cli-0.3.0/roar/cli/commands/init_agents.py +292 -0
- roar_cli-0.3.0/roar/cli/commands/inputs.py +116 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/label.py +69 -7
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/lineage.py +2 -1
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/log.py +8 -2
- roar_cli-0.3.0/roar/cli/commands/login.py +219 -0
- roar_cli-0.3.0/roar/cli/commands/logout.py +24 -0
- roar_cli-0.3.0/roar/cli/commands/osmo.py +360 -0
- roar_cli-0.3.0/roar/cli/commands/projects.py +195 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/put.py +103 -13
- roar_cli-0.3.0/roar/cli/commands/register.py +270 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/reproduce.py +22 -9
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/reset.py +14 -5
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/run.py +39 -4
- roar_cli-0.3.0/roar/cli/commands/scope.py +375 -0
- roar_cli-0.3.0/roar/cli/commands/show.py +135 -0
- roar_cli-0.3.0/roar/cli/commands/status.py +37 -0
- roar_cli-0.3.0/roar/cli/commands/telemetry.py +86 -0
- roar_cli-0.3.0/roar/cli/commands/tracer.py +661 -0
- roar_cli-0.3.0/roar/cli/commands/tui.py +22 -0
- roar_cli-0.3.0/roar/cli/commands/whoami.py +95 -0
- roar_cli-0.3.0/roar/cli/commands/workflow.py +94 -0
- roar_cli-0.3.0/roar/cli/publish_intent.py +65 -0
- roar_cli-0.3.0/roar/cli/templates/agents/SKILL.md.tmpl +103 -0
- roar_cli-0.3.0/roar/cli/templates/agents/agents_section.md.tmpl +11 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/__init__.py +2 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/bootstrap.py +14 -26
- roar_cli-0.3.0/roar/core/canonical_session.py +98 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/exceptions.py +25 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/provenance.py +2 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/registration.py +24 -1
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/repositories.py +5 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/reproduction.py +3 -1
- roar_cli-0.3.0/roar/core/label_constants.py +15 -0
- roar_cli-0.3.0/roar/core/label_origins.py +72 -0
- roar_cli-0.3.0/roar/core/models/__init__.py +81 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/provenance.py +32 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/run.py +41 -0
- roar_cli-0.3.0/roar/core/session_hash.py +30 -0
- roar_cli-0.3.0/roar/core/step_name.py +46 -0
- roar_cli-0.3.0/roar/db/__init__.py +47 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/context.py +116 -118
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/models.py +1 -0
- roar_cli-0.3.0/roar/db/query_context.py +776 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/repositories/label.py +3 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/repositories/session.py +10 -37
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/schema.py +9 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/services/job_recording.py +44 -1
- roar_cli-0.3.0/roar/db/step_priority.py +91 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/fragments/lineage.py +36 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/framework/registry.py +1 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/provenance/assembler.py +2 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/provenance/data_loader.py +19 -9
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/provenance/file_filter.py +67 -29
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/provenance/service.py +12 -1
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/recording/dataset_metadata.py +7 -11
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/recording/job_recording.py +19 -1
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/__init__.py +9 -7
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/coordinator.py +213 -80
- roar_cli-0.3.0/roar/execution/runtime/errors.py +5 -0
- roar_cli-0.3.0/roar/execution/runtime/host_execution.py +26 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/inject/sitecustomize.py +18 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/inject/tracker.py +22 -0
- roar_cli-0.3.0/roar/execution/runtime/proxy_resource.py +81 -0
- roar_cli-0.3.0/roar/execution/runtime/resources.py +133 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/tracer.py +183 -32
- roar_cli-0.3.0/roar/execution/runtime/tracer_backends.py +905 -0
- roar_cli-0.3.0/roar/execution/runtime/tracer_banner.py +45 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/filters/files.py +1 -1
- roar_cli-0.3.0/roar/glaas_auth.py +456 -0
- roar_cli-0.3.0/roar/glaas_client.py +162 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/__init__.py +3 -0
- roar_cli-0.3.0/roar/integrations/bootstrap.py +27 -0
- roar_cli-0.3.0/roar/integrations/config/__init__.py +64 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/config/access.py +405 -28
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/config/loader.py +17 -1
- roar_cli-0.3.0/roar/integrations/config/raw.py +230 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/config/schema.py +61 -1
- roar_cli-0.3.0/roar/integrations/discovery.py +107 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/git/provider.py +24 -12
- roar_cli-0.3.0/roar/integrations/glaas/__init__.py +41 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/glaas/client.py +314 -15
- roar_cli-0.3.0/roar/integrations/glaas/registration/__init__.py +30 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/glaas/registration/coordinator.py +136 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/glaas/registration/job.py +293 -0
- roar_cli-0.3.0/roar/integrations/glaas/registration/session.py +269 -0
- roar_cli-0.3.0/roar/integrations/glaas/transport.py +310 -0
- roar_cli-0.3.0/roar/presenters/__init__.py +31 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/presenters/dag_data_builder.py +9 -3
- roar_cli-0.3.0/roar/presenters/diff_renderer.py +273 -0
- roar_cli-0.3.0/roar/presenters/run_report.py +430 -0
- roar_cli-0.3.0/roar/presenters/show_renderer.py +482 -0
- roar_cli-0.3.0/roar/presenters/spinner.py +104 -0
- roar_cli-0.3.0/roar/presenters/terminal.py +81 -0
- roar_cli-0.3.0/roar/publish_auth.py +220 -0
- roar_cli-0.3.0/roar/require.py +115 -0
- roar_cli-0.3.0/roar/scope_config.py +155 -0
- roar_cli-0.3.0/roar/telemetry/__init__.py +171 -0
- roar_cli-0.3.0/roar/telemetry/_io.py +65 -0
- roar_cli-0.3.0/roar/telemetry/capabilities.py +103 -0
- roar_cli-0.3.0/roar/telemetry/config.py +328 -0
- roar_cli-0.3.0/roar/telemetry/hooks.py +109 -0
- roar_cli-0.3.0/roar/telemetry/install.py +42 -0
- roar_cli-0.3.0/roar/telemetry/paths.py +72 -0
- roar_cli-0.3.0/roar/telemetry/payload.py +144 -0
- roar_cli-0.3.0/roar/telemetry/queue.py +122 -0
- roar_cli-0.3.0/roar/telemetry/stats.py +284 -0
- roar_cli-0.3.0/roar/telemetry/uploader.py +104 -0
- roar_cli-0.3.0/roar/tui/__init__.py +19 -0
- roar_cli-0.3.0/roar/tui/app.py +100 -0
- roar_cli-0.3.0/roar/tui/data.py +252 -0
- roar_cli-0.3.0/roar/tui/screens/__init__.py +0 -0
- roar_cli-0.3.0/roar/tui/screens/config_editor.py +402 -0
- roar_cli-0.3.0/roar/tui/screens/label_editor.py +346 -0
- roar_cli-0.3.0/roar/tui/screens/launcher.py +260 -0
- roar_cli-0.3.0/roar/tui/screens/log.py +122 -0
- roar_cli-0.3.0/roar/tui/screens/main.py +581 -0
- roar_cli-0.3.0/roar/tui/screens/search.py +83 -0
- roar_cli-0.3.0/roar/tui/screens/session_picker.py +126 -0
- roar_cli-0.3.0/roar/tui/tmux.py +127 -0
- roar_cli-0.3.0/roar/tui/widgets/__init__.py +1 -0
- roar_cli-0.3.0/roar/tui/widgets/detail.py +574 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/rust/Cargo.lock +4 -0
- roar_cli-0.3.0/rust/crates/tracer-fd/Cargo.toml +14 -0
- roar_cli-0.3.0/rust/crates/tracer-fd/src/lib.rs +741 -0
- roar_cli-0.3.0/rust/crates/tracer-runtime/Cargo.toml +8 -0
- roar_cli-0.3.0/rust/crates/tracer-runtime/src/lib.rs +121 -0
- roar_cli-0.3.0/rust/crates/tracer-schema/Cargo.toml +11 -0
- roar_cli-0.3.0/rust/crates/tracer-schema/src/lib.rs +146 -0
- roar_cli-0.3.0/rust/services/proxy/Cargo.lock +2521 -0
- roar_cli-0.3.0/rust/services/proxy/Cargo.toml +29 -0
- roar_cli-0.3.0/rust/services/proxy/src/forward.rs +331 -0
- roar_cli-0.3.0/rust/services/proxy/src/main.rs +301 -0
- roar_cli-0.3.0/rust/services/proxy/src/s3.rs +472 -0
- roar_cli-0.3.0/rust/tracers/ebpf/common/Cargo.toml +12 -0
- roar_cli-0.3.0/rust/tracers/ebpf/common/src/lib.rs +121 -0
- roar_cli-0.3.0/rust/tracers/ebpf/probe/Cargo.toml +13 -0
- roar_cli-0.3.0/rust/tracers/ebpf/probe/rust-toolchain.toml +3 -0
- roar_cli-0.3.0/rust/tracers/ebpf/probe/src/main.rs +919 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/Cargo.toml +39 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/build.rs +16 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/src/attach.rs +132 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/src/bin/roard.rs +58 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/src/client.rs +104 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/src/daemon.rs +706 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/src/events.rs +686 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/src/ipc.rs +187 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/src/lib.rs +6 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/src/main.rs +505 -0
- roar_cli-0.3.0/rust/tracers/ebpf/userspace/src/state.rs +539 -0
- roar_cli-0.3.0/rust/tracers/preload/Cargo.toml +32 -0
- roar_cli-0.3.0/rust/tracers/preload/build.rs +7 -0
- roar_cli-0.3.0/rust/tracers/preload/src/bin/io_fixture.rs +166 -0
- roar_cli-0.3.0/rust/tracers/preload/src/interpose.c +186 -0
- roar_cli-0.3.0/rust/tracers/preload/src/ipc.rs +20 -0
- roar_cli-0.3.0/rust/tracers/preload/src/lib.rs +1639 -0
- roar_cli-0.3.0/rust/tracers/preload/src/main.rs +814 -0
- roar_cli-0.3.0/rust/tracers/preload/tests/comprehensive.rs +507 -0
- roar_cli-0.3.0/rust/tracers/preload/tests/standalone.rs +200 -0
- roar_cli-0.3.0/rust/tracers/ptrace/Cargo.toml +26 -0
- roar_cli-0.3.0/rust/tracers/ptrace/rustfmt.toml +4 -0
- roar_cli-0.3.0/rust/tracers/ptrace/src/arch.rs +203 -0
- roar_cli-0.3.0/rust/tracers/ptrace/src/main.rs +1014 -0
- roar_cli-0.3.0/rust/tracers/ptrace/src/seccomp.rs +108 -0
- roar_cli-0.3.0/scripts/sync_packaged_rust_artifacts.py +355 -0
- roar_cli-0.2.10/roar/application/labels.py +0 -398
- roar_cli-0.2.10/roar/application/publish/put_execution.py +0 -627
- roar_cli-0.2.10/roar/application/publish/register_execution.py +0 -281
- roar_cli-0.2.10/roar/application/publish/runtime.py +0 -33
- roar_cli-0.2.10/roar/application/publish/service.py +0 -176
- roar_cli-0.2.10/roar/application/publish/session.py +0 -84
- roar_cli-0.2.10/roar/application/query/__init__.py +0 -67
- roar_cli-0.2.10/roar/application/query/label.py +0 -114
- roar_cli-0.2.10/roar/application/query/show.py +0 -325
- roar_cli-0.2.10/roar/application/query/status.py +0 -90
- roar_cli-0.2.10/roar/application/reproduce/lookup.py +0 -144
- roar_cli-0.2.10/roar/bin/libroar_tracer_preload.so +0 -0
- roar_cli-0.2.10/roar/bin/roar-proxy +0 -0
- roar_cli-0.2.10/roar/bin/roar-tracer +0 -0
- roar_cli-0.2.10/roar/bin/roar-tracer-ebpf +0 -0
- roar_cli-0.2.10/roar/bin/roar-tracer-preload +0 -0
- roar_cli-0.2.10/roar/bin/roard +0 -0
- roar_cli-0.2.10/roar/cli/__init__.py +0 -158
- roar_cli-0.2.10/roar/cli/commands/init.py +0 -288
- roar_cli-0.2.10/roar/cli/commands/register.py +0 -143
- roar_cli-0.2.10/roar/cli/commands/show.py +0 -38
- roar_cli-0.2.10/roar/cli/commands/status.py +0 -17
- roar_cli-0.2.10/roar/cli/commands/tracer.py +0 -304
- roar_cli-0.2.10/roar/core/models/__init__.py +0 -140
- roar_cli-0.2.10/roar/db/__init__.py +0 -65
- roar_cli-0.2.10/roar/execution/runtime/host_execution.py +0 -39
- roar_cli-0.2.10/roar/execution/runtime/tracer_backends.py +0 -371
- roar_cli-0.2.10/roar/integrations/config/__init__.py +0 -70
- roar_cli-0.2.10/roar/integrations/discovery.py +0 -54
- roar_cli-0.2.10/roar/integrations/glaas/__init__.py +0 -38
- roar_cli-0.2.10/roar/integrations/glaas/registration/__init__.py +0 -13
- roar_cli-0.2.10/roar/integrations/glaas/registration/session.py +0 -151
- roar_cli-0.2.10/roar/integrations/glaas/transport.py +0 -153
- roar_cli-0.2.10/roar/presenters/__init__.py +0 -14
- roar_cli-0.2.10/roar/presenters/run_report.py +0 -172
- roar_cli-0.2.10/roar/presenters/show_renderer.py +0 -378
- roar_cli-0.2.10/roar/presenters/spinner.py +0 -60
- {roar_cli-0.2.10 → roar_cli-0.3.0}/LICENSE +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/analyzers/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/analyzers/base.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/analyzers/experiment_trackers.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/get/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/get/requests.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/get/results.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/get/service.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/get/transfer.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/blake3_upgrade.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/composite_builder.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/composites.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/datasets.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/job_links.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/lineage_composites.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/metadata.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/secrets.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/source_resolution.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/publish/targets.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/query/lineage.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/reproduce/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/run/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/application/run/dag_references.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/local/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/local/plugin.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/_agent_names.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/collector.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/config.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/constants.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/fragment.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/node_agent.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/plugin.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/proxy_fragments.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/roar_worker.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/s3_key_paths.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/backends/ray/submit.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/env.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/get.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/pop.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/commands/proxy.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/context.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/cli/decorators.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/digests.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/dto/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/dto/registration.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/config.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/lineage.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/logger.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/presenter.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/run.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/services.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/telemetry.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/interfaces/vcs.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/logging.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/artifact.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/base.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/dag.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/dataset_identifier.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/glaas.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/job.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/lineage.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/session.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/telemetry.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/models/vcs.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/operation_metadata.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/tracer_modes.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/core/validation.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/engine.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/hashing/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/hashing/backend.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/hashing/blake3.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/repositories/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/repositories/artifact.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/repositories/collection.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/repositories/composite.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/repositories/hash_cache.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/repositories/job.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/services/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/services/hashing.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/services/lineage.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/db/services/session.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/cluster/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/cluster/bridge.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/cluster/proxy.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/cluster/proxy_config.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/fragments/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/fragments/models.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/fragments/reconstitution.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/fragments/sessions.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/fragments/transport.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/framework/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/framework/contract.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/framework/planning.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/framework/runtime_imports.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/provenance/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/provenance/build_pip_collector.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/provenance/build_tool_collector.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/provenance/package_collector.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/provenance/process_summarizer.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/provenance/runtime_collector.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/recording/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/recording/dataset_identifier.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/recording/dataset_profile.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/reproduction/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/reproduction/environment_setup.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/reproduction/installers.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/reproduction/pipeline_executor.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/reproduction/pipeline_metadata.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/backup.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/driver_entrypoint.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/inject/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/inject/support.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/signal_handler.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/execution/runtime/worker_bootstrap.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/filters/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/filters/omit.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/download/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/download/base.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/download/gcs.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/download/get.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/download/http.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/download/noop.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/download/s3.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/git/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/git/base.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/git/context.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/glaas/auth.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/glaas/fragment_streamer.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/glaas/registration/_artifact_ref.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/glaas/registration/artifact.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/registry.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/resolution.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/storage/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/storage/base.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/storage/gcs.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/storage/memory.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/storage/noop.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/storage/publish.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/storage/s3.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/telemetry/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/telemetry/base.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/integrations/telemetry/wandb.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/presenters/console.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/presenters/dag_renderer.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/presenters/formatting.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/presenters/null.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/utils/__init__.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/utils/cloud.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/roar/utils/git_url.py +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/rust/Cargo.toml +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/rust/crates/artifact-hash-core/Cargo.toml +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/rust/crates/artifact-hash-core/src/lib.rs +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/rust/crates/artifact-hash-py/Cargo.toml +0 -0
- {roar_cli-0.2.10 → roar_cli-0.3.0}/rust/crates/artifact-hash-py/src/lib.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: roar-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Classifier: Development Status :: 3 - Alpha
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -18,10 +18,12 @@ Requires-Dist: click>=8.1.0
|
|
|
18
18
|
Requires-Dist: cryptography>=42.0.0
|
|
19
19
|
Requires-Dist: dependency-injector>=4.40.0
|
|
20
20
|
Requires-Dist: msgpack>=1.0.0
|
|
21
|
+
Requires-Dist: pyyaml>=6.0
|
|
21
22
|
Requires-Dist: sqlalchemy>=2.0.0
|
|
22
23
|
Requires-Dist: pysqlite3-binary>=0.5.0 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
23
24
|
Requires-Dist: pydantic>=2.0.0
|
|
24
25
|
Requires-Dist: pydantic-settings>=2.0.0
|
|
26
|
+
Requires-Dist: textual>=0.80
|
|
25
27
|
Requires-Dist: tomli>=2.0.0 ; python_full_version < '3.11'
|
|
26
28
|
Requires-Dist: pytest>=7.0.0 ; extra == 'dev'
|
|
27
29
|
Requires-Dist: pytest-timeout>=2.0.0 ; extra == 'dev'
|
|
@@ -65,6 +67,11 @@ uv pip install roar-cli
|
|
|
65
67
|
|
|
66
68
|
Requires Python 3.10+.
|
|
67
69
|
|
|
70
|
+
> For the full prereqs, platform support matrix, tracer-backend setup,
|
|
71
|
+
> macOS SIP notes, and sdist build steps, see the canonical
|
|
72
|
+
> [Installing roar](https://glaas.ai/docs/roar-guide#installing-roar) docs page.
|
|
73
|
+
> What's below is a TL;DR.
|
|
74
|
+
|
|
68
75
|
### Platform Support
|
|
69
76
|
|
|
70
77
|
| Platform | Status |
|
|
@@ -74,7 +81,12 @@ Requires Python 3.10+.
|
|
|
74
81
|
| macOS | 🚧 Experimental ([limitations](#macos-tracing-limitations)) |
|
|
75
82
|
| Windows | Coming soon |
|
|
76
83
|
|
|
77
|
-
PyPI wheels are published for Linux and macOS (`x86_64
|
|
84
|
+
PyPI wheels are published for Linux (`x86_64`, `aarch64`) and macOS (`x86_64`, `arm64`).
|
|
85
|
+
|
|
86
|
+
If a matching wheel isn't available, `pip install` falls through to the
|
|
87
|
+
source distribution. The sdist ships the Rust tracer source but no
|
|
88
|
+
pre-built binaries, so it requires a C toolchain (`gcc` / `clang`), Rust
|
|
89
|
+
(`rustup`), and a few minutes to compile the tracers on first install.
|
|
78
90
|
|
|
79
91
|
### Development Installation
|
|
80
92
|
|
|
@@ -83,12 +95,20 @@ PyPI wheels are published for Linux and macOS (`x86_64` and `arm64`).
|
|
|
83
95
|
git clone https://github.com/treqs/roar.git
|
|
84
96
|
cd roar
|
|
85
97
|
|
|
86
|
-
#
|
|
87
|
-
|
|
88
|
-
# or without uv
|
|
89
|
-
pip install -e ".[dev]"
|
|
98
|
+
# One-shot dev install: Python package + Rust tracer binaries
|
|
99
|
+
bash scripts/install-dev.sh
|
|
90
100
|
```
|
|
91
101
|
|
|
102
|
+
`scripts/install-dev.sh` runs `pip install -e ".[dev]"` (preferring `uv`
|
|
103
|
+
when available) and then builds the Rust tracer binaries
|
|
104
|
+
(`roar-tracer`, `roar-tracer-preload`, `roar-tracer-ebpf`, `roard`,
|
|
105
|
+
`roar-proxy`) and stages them into `roar/bin/`. A bare
|
|
106
|
+
`pip install -e .` does *not* build the tracer binaries because they
|
|
107
|
+
live in separate cargo crates outside the maturin manifest, so
|
|
108
|
+
`roar run` would fail with "No tracer binary found" until the script
|
|
109
|
+
runs. See [Building from source](#building-from-source) below for
|
|
110
|
+
details and the manual flow.
|
|
111
|
+
|
|
92
112
|
## Quick Start
|
|
93
113
|
|
|
94
114
|
```bash
|
|
@@ -102,6 +122,53 @@ roar run python train.py --data features.parquet --output model.pt
|
|
|
102
122
|
roar run python evaluate.py --model model.pt --output metrics.json
|
|
103
123
|
```
|
|
104
124
|
|
|
125
|
+
## Product Telemetry
|
|
126
|
+
|
|
127
|
+
`roar` keeps anonymous product telemetry counters by default so maintainers can
|
|
128
|
+
prioritize reliability and platform support work. Telemetry is local-first:
|
|
129
|
+
small counters are stored under the XDG cache directory and uploaded
|
|
130
|
+
opportunistically in a background process. Telemetry never uploads file
|
|
131
|
+
contents, command arguments, file paths, environment variables, repository
|
|
132
|
+
names, hostnames, usernames, lineage payloads, or GLaaS auth tokens.
|
|
133
|
+
|
|
134
|
+
Uploaded payloads are limited to:
|
|
135
|
+
|
|
136
|
+
- A random `install_id`, event id, sequence number, and coarse timestamps.
|
|
137
|
+
- The installed `roar` version.
|
|
138
|
+
- Coarse platform values: OS family, CPU architecture, Python major/minor,
|
|
139
|
+
shell name, installer class, and whether the process appears containerized.
|
|
140
|
+
- Allowlisted command counters such as `run`, `init`, `register`, and
|
|
141
|
+
successful or failed `roar run` outcomes.
|
|
142
|
+
- Allowlisted tracer selection counters and coarse feature capability flags.
|
|
143
|
+
|
|
144
|
+
Inspect the current status and exact next payload preview:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
roar telemetry --status
|
|
148
|
+
roar telemetry --print
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
When `telemetry.endpoint` is unset, roar derives the upload endpoint from the
|
|
152
|
+
configured GLaaS API URL. For example, `glaas.url = "https://api.dev.glaas.ai"`
|
|
153
|
+
uses `https://api.dev.glaas.ai/api/v1/telemetry/roar`.
|
|
154
|
+
|
|
155
|
+
Disable telemetry globally or for a single project:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
roar telemetry --disable
|
|
159
|
+
roar config set telemetry.enabled false
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Environment opt-outs always win over saved config:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
DO_NOT_TRACK=1 roar run python train.py
|
|
166
|
+
ROAR_NO_TELEMETRY=1 roar run python train.py
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Telemetry is also suppressed automatically in CI, pytest, and Roar-managed
|
|
170
|
+
backend worker environments such as Ray and OSMO jobs.
|
|
171
|
+
|
|
105
172
|
## Tracer Backends
|
|
106
173
|
|
|
107
174
|
`roar run` relies on a Rust "tracer" binary to observe file I/O. If you see an error like "No tracer binary found", build one of the backends below.
|
|
@@ -135,10 +202,16 @@ By default, `roar` uses `auto` mode: prefer eBPF, then preload, then ptrace.
|
|
|
135
202
|
|
|
136
203
|
```bash
|
|
137
204
|
# Show what roar can currently find and whether it looks usable
|
|
138
|
-
roar tracer
|
|
205
|
+
roar tracer
|
|
139
206
|
|
|
140
207
|
# Set a default backend (auto|ebpf|preload|ptrace)
|
|
141
|
-
roar tracer
|
|
208
|
+
roar tracer use preload
|
|
209
|
+
|
|
210
|
+
# Deep preflight for one backend, with the exact failure cause
|
|
211
|
+
roar tracer check ebpf
|
|
212
|
+
|
|
213
|
+
# One-shot host setup for the eBPF backend (applies CAP_BPF)
|
|
214
|
+
roar tracer enable ebpf
|
|
142
215
|
```
|
|
143
216
|
|
|
144
217
|
### macOS Tracing Limitations
|
|
@@ -213,9 +286,13 @@ roar reproduce abc123de --run --package-sync
|
|
|
213
286
|
|
|
214
287
|
# Show all required packages (no truncation)
|
|
215
288
|
roar reproduce abc123de --list-requirements
|
|
289
|
+
|
|
290
|
+
# Reproduce a full lineage/session by its 64-character DAG hash
|
|
291
|
+
roar reproduce <lineage-hash> --lineage
|
|
292
|
+
roar reproduce <lineage-hash> --lineage --run
|
|
216
293
|
```
|
|
217
294
|
|
|
218
|
-
Full reproduction clones the git repository, creates a virtual environment, installs recorded packages, and runs the pipeline steps.
|
|
295
|
+
Unflagged `roar reproduce <hash>` continues to default to artifact reproduction. Full reproduction clones the git repository, creates a virtual environment, installs recorded packages, and runs the pipeline steps.
|
|
219
296
|
|
|
220
297
|
### `roar build <command>`
|
|
221
298
|
|
|
@@ -234,7 +311,7 @@ Use for setup that should run before the main pipeline (compiling, installing).
|
|
|
234
311
|
|
|
235
312
|
### `roar auth`
|
|
236
313
|
|
|
237
|
-
Manage GLaaS
|
|
314
|
+
Manage SSH-key-based GLaaS registration settings.
|
|
238
315
|
|
|
239
316
|
```bash
|
|
240
317
|
roar auth register # Show SSH public key for registration
|
|
@@ -242,7 +319,7 @@ roar auth test # Test connection to GLaaS server
|
|
|
242
319
|
roar auth status # Show current auth status
|
|
243
320
|
```
|
|
244
321
|
|
|
245
|
-
To register with GLaaS:
|
|
322
|
+
To register SSH auth with GLaaS:
|
|
246
323
|
|
|
247
324
|
1. Run `roar auth register` to display your public key
|
|
248
325
|
2. Sign up at <https://glaas.ai> where you can paste your public key
|
|
@@ -270,6 +347,7 @@ Run `roar config list` to see all available options with descriptions. Common op
|
|
|
270
347
|
| `filters.ignore_tmp_files` | true | Ignore /tmp files |
|
|
271
348
|
| `glaas.url` | <https://api.glaas.ai> | GLaaS server URL |
|
|
272
349
|
| `glaas.web_url` | <https://glaas.ai> | GLaaS web UI URL |
|
|
350
|
+
| `registration.public_by_default` | false | Default `register`/`put` visibility |
|
|
273
351
|
| `registration.omit.enabled` | true | Enable secret filtering |
|
|
274
352
|
| `hash.primary` | blake3 | Primary hash algorithm |
|
|
275
353
|
| `logging.level` | warning | Log level (debug, info, warning, error) |
|
|
@@ -304,6 +382,45 @@ Display recent job execution history.
|
|
|
304
382
|
roar log # Show recent job history
|
|
305
383
|
```
|
|
306
384
|
|
|
385
|
+
### `roar label`
|
|
386
|
+
|
|
387
|
+
Manage local labels for DAGs (sessions), jobs, and artifacts.
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
# Set labels (patches the current label document)
|
|
391
|
+
roar label set dag current owner=alice team=ml
|
|
392
|
+
roar label set job @2 phase=train lr=0.001
|
|
393
|
+
roar label set artifact ./outputs/model.pt model.name=resnet50 stage=baseline
|
|
394
|
+
|
|
395
|
+
# Remove labels
|
|
396
|
+
roar label unset artifact ./outputs/model.pt stage
|
|
397
|
+
|
|
398
|
+
# Copy labels from one entity to another
|
|
399
|
+
roar label cp job @2 artifact ./outputs/model.pt
|
|
400
|
+
|
|
401
|
+
# Show current labels
|
|
402
|
+
roar label show dag current
|
|
403
|
+
roar label show job @2
|
|
404
|
+
roar label show artifact ./outputs/model.pt
|
|
405
|
+
|
|
406
|
+
# Show label history (all versions)
|
|
407
|
+
roar label history dag current
|
|
408
|
+
roar label history artifact <artifact-hash>
|
|
409
|
+
|
|
410
|
+
# Sync local user-managed labels to GLaaS
|
|
411
|
+
roar label sync
|
|
412
|
+
roar label sync job @2
|
|
413
|
+
roar label sync artifact ./outputs/model.pt --dry-run
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
**Entity targets:**
|
|
417
|
+
|
|
418
|
+
- `dag`: `current` or a session hash prefix
|
|
419
|
+
- `job`: step ref (`@N` or `@BN`) or job UID
|
|
420
|
+
- `artifact`: file path or artifact hash
|
|
421
|
+
|
|
422
|
+
Labels are stored locally by default. You can explicitly reconcile current local user-managed labels to GLaaS with `roar label sync ...`, and labels are also included in lineage registration/publish flows when supported by the configured server.
|
|
423
|
+
|
|
307
424
|
### `roar register`
|
|
308
425
|
|
|
309
426
|
Register session, job, step, or artifact lineage with GLaaS.
|
|
@@ -330,6 +447,14 @@ roar register s3://bucket/run/out # Register a tracked remote S3 artifact
|
|
|
330
447
|
|
|
331
448
|
For bare 8-character hex targets, `roar register` prefers a matching local job UID before falling back to session-hash-prefix resolution.
|
|
332
449
|
|
|
450
|
+
To make public publication the default for `roar register` and `roar put`:
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
roar config set registration.public_by_default true
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
Override per command with `--public` or `--private`. Use `--anonymous` on `roar register` or `roar put` to force public anonymous publication even when local GLaaS auth is configured. When public visibility comes from config rather than an explicit flag, `roar` prints a warning before publishing.
|
|
457
|
+
|
|
333
458
|
### `roar put`
|
|
334
459
|
|
|
335
460
|
Upload artifacts to cloud storage and register lineage with GLaaS.
|
|
@@ -345,6 +470,8 @@ roar put @2 s3://bucket/outputs/ -m "Step 2 outputs"
|
|
|
345
470
|
- `-m, --message` — Description of the upload (required)
|
|
346
471
|
- `--dry-run` — Preview without uploading
|
|
347
472
|
- `--no-tag` — Skip git tagging
|
|
473
|
+
- `--public` / `--private` — Override configured publish visibility
|
|
474
|
+
- `--anonymous` — Force public anonymous registration even when local GLaaS auth is configured
|
|
348
475
|
|
|
349
476
|
**Source formats:**
|
|
350
477
|
|
|
@@ -397,12 +524,27 @@ roar show ./output/model.pkl # Show artifact by path
|
|
|
397
524
|
|
|
398
525
|
### `roar status`
|
|
399
526
|
|
|
400
|
-
Show a summary of the active session.
|
|
527
|
+
Show a summary of the active session, including the current DAG hash.
|
|
401
528
|
|
|
402
529
|
```bash
|
|
403
530
|
roar status
|
|
404
531
|
```
|
|
405
532
|
|
|
533
|
+
### `roar workflow`
|
|
534
|
+
|
|
535
|
+
Generate TReqs workflow YAML from a local session.
|
|
536
|
+
|
|
537
|
+
```bash
|
|
538
|
+
roar workflow generate
|
|
539
|
+
roar workflow generate .treqs/workflows/train.yaml
|
|
540
|
+
roar workflow generate --session 8d7a1f2c --name train
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
Generated workflows follow the TReqs workflow format: `name`, optional
|
|
544
|
+
`working_directory`, and one YAML key per task in session step order.
|
|
545
|
+
By default, `roar workflow generate` uses the active session and writes the
|
|
546
|
+
workflow under `.treqs/workflows/` at the repo root.
|
|
547
|
+
|
|
406
548
|
### `roar pop`
|
|
407
549
|
|
|
408
550
|
Remove the most recent job from the active session. Useful for undoing a mistaken `roar run` or correcting the pipeline before registration.
|
|
@@ -513,10 +655,62 @@ roar auth test
|
|
|
513
655
|
### Setup
|
|
514
656
|
|
|
515
657
|
```bash
|
|
516
|
-
|
|
517
|
-
uv pip install -e ".[dev]"
|
|
658
|
+
bash scripts/install-dev.sh
|
|
518
659
|
```
|
|
519
660
|
|
|
661
|
+
The script handles Python install + Rust tracer builds + staging
|
|
662
|
+
binaries into `roar/bin/`. See [Building from source](#building-from-source)
|
|
663
|
+
for what it does and how to run the steps manually.
|
|
664
|
+
|
|
665
|
+
### Building from source
|
|
666
|
+
|
|
667
|
+
`pip install -e .` runs `maturin develop` to build the `artifact-hash-py`
|
|
668
|
+
pyo3 extension, but the tracer binaries (`roar-tracer*`, `roard`,
|
|
669
|
+
`roar-proxy`) are separate cargo packages outside the maturin manifest.
|
|
670
|
+
The PyPI wheels bundle them under `roar/bin/`; an editable install
|
|
671
|
+
does not, and `roar run` fails until they're built and staged.
|
|
672
|
+
|
|
673
|
+
The fastest path is `scripts/install-dev.sh`, which does this:
|
|
674
|
+
|
|
675
|
+
```bash
|
|
676
|
+
# 1. Python package (editable, with dev extras)
|
|
677
|
+
uv pip install -e ".[dev]" # or pip install -e ".[dev]"
|
|
678
|
+
|
|
679
|
+
# 2. Build the per-platform tracer crates
|
|
680
|
+
cd rust
|
|
681
|
+
# Linux:
|
|
682
|
+
cargo build --release \
|
|
683
|
+
-p roar-tracer -p roar-tracer-preload -p roar-tracer-ebpf -p roar-proxy
|
|
684
|
+
# macOS:
|
|
685
|
+
cargo build --release -p roar-tracer-preload -p roar-proxy
|
|
686
|
+
|
|
687
|
+
# 3. Stage the built binaries where the editable install looks for them
|
|
688
|
+
cd ..
|
|
689
|
+
mkdir -p roar/bin
|
|
690
|
+
# Linux: install five binaries + the preload .so
|
|
691
|
+
install -m 0755 rust/target/release/{roar-tracer,roar-tracer-preload,roar-tracer-ebpf,roard,roar-proxy} roar/bin/
|
|
692
|
+
install -m 0755 rust/target/release/libroar_tracer_preload.so roar/bin/
|
|
693
|
+
# macOS: install the launcher + the preload .dylib + roar-proxy
|
|
694
|
+
# install -m 0755 rust/target/release/{roar-tracer-preload,roar-proxy} roar/bin/
|
|
695
|
+
# install -m 0755 rust/target/release/libroar_tracer_preload.dylib roar/bin/
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
The eBPF tracer (Linux only) needs `bpf-linker` and a Rust nightly
|
|
699
|
+
toolchain with `rust-src` for the BPF probe build:
|
|
700
|
+
|
|
701
|
+
```bash
|
|
702
|
+
cargo install bpf-linker
|
|
703
|
+
rustup install nightly
|
|
704
|
+
rustup component add rust-src --toolchain nightly
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
`scripts/install-dev.sh` skips eBPF gracefully when `bpf-linker` is
|
|
708
|
+
absent — the other tracers still work.
|
|
709
|
+
|
|
710
|
+
Verify the install with `roar tracer`; every backend listed should be
|
|
711
|
+
`ready` (or have a clear platform-specific reason it isn't, like
|
|
712
|
+
`perf_event_paranoid=4 (needs <= 1)` for eBPF on a hardened kernel).
|
|
713
|
+
|
|
520
714
|
### Running Quality Checks
|
|
521
715
|
|
|
522
716
|
```bash
|
|
@@ -18,6 +18,11 @@ uv pip install roar-cli
|
|
|
18
18
|
|
|
19
19
|
Requires Python 3.10+.
|
|
20
20
|
|
|
21
|
+
> For the full prereqs, platform support matrix, tracer-backend setup,
|
|
22
|
+
> macOS SIP notes, and sdist build steps, see the canonical
|
|
23
|
+
> [Installing roar](https://glaas.ai/docs/roar-guide#installing-roar) docs page.
|
|
24
|
+
> What's below is a TL;DR.
|
|
25
|
+
|
|
21
26
|
### Platform Support
|
|
22
27
|
|
|
23
28
|
| Platform | Status |
|
|
@@ -27,7 +32,12 @@ Requires Python 3.10+.
|
|
|
27
32
|
| macOS | 🚧 Experimental ([limitations](#macos-tracing-limitations)) |
|
|
28
33
|
| Windows | Coming soon |
|
|
29
34
|
|
|
30
|
-
PyPI wheels are published for Linux and macOS (`x86_64
|
|
35
|
+
PyPI wheels are published for Linux (`x86_64`, `aarch64`) and macOS (`x86_64`, `arm64`).
|
|
36
|
+
|
|
37
|
+
If a matching wheel isn't available, `pip install` falls through to the
|
|
38
|
+
source distribution. The sdist ships the Rust tracer source but no
|
|
39
|
+
pre-built binaries, so it requires a C toolchain (`gcc` / `clang`), Rust
|
|
40
|
+
(`rustup`), and a few minutes to compile the tracers on first install.
|
|
31
41
|
|
|
32
42
|
### Development Installation
|
|
33
43
|
|
|
@@ -36,12 +46,20 @@ PyPI wheels are published for Linux and macOS (`x86_64` and `arm64`).
|
|
|
36
46
|
git clone https://github.com/treqs/roar.git
|
|
37
47
|
cd roar
|
|
38
48
|
|
|
39
|
-
#
|
|
40
|
-
|
|
41
|
-
# or without uv
|
|
42
|
-
pip install -e ".[dev]"
|
|
49
|
+
# One-shot dev install: Python package + Rust tracer binaries
|
|
50
|
+
bash scripts/install-dev.sh
|
|
43
51
|
```
|
|
44
52
|
|
|
53
|
+
`scripts/install-dev.sh` runs `pip install -e ".[dev]"` (preferring `uv`
|
|
54
|
+
when available) and then builds the Rust tracer binaries
|
|
55
|
+
(`roar-tracer`, `roar-tracer-preload`, `roar-tracer-ebpf`, `roard`,
|
|
56
|
+
`roar-proxy`) and stages them into `roar/bin/`. A bare
|
|
57
|
+
`pip install -e .` does *not* build the tracer binaries because they
|
|
58
|
+
live in separate cargo crates outside the maturin manifest, so
|
|
59
|
+
`roar run` would fail with "No tracer binary found" until the script
|
|
60
|
+
runs. See [Building from source](#building-from-source) below for
|
|
61
|
+
details and the manual flow.
|
|
62
|
+
|
|
45
63
|
## Quick Start
|
|
46
64
|
|
|
47
65
|
```bash
|
|
@@ -55,6 +73,53 @@ roar run python train.py --data features.parquet --output model.pt
|
|
|
55
73
|
roar run python evaluate.py --model model.pt --output metrics.json
|
|
56
74
|
```
|
|
57
75
|
|
|
76
|
+
## Product Telemetry
|
|
77
|
+
|
|
78
|
+
`roar` keeps anonymous product telemetry counters by default so maintainers can
|
|
79
|
+
prioritize reliability and platform support work. Telemetry is local-first:
|
|
80
|
+
small counters are stored under the XDG cache directory and uploaded
|
|
81
|
+
opportunistically in a background process. Telemetry never uploads file
|
|
82
|
+
contents, command arguments, file paths, environment variables, repository
|
|
83
|
+
names, hostnames, usernames, lineage payloads, or GLaaS auth tokens.
|
|
84
|
+
|
|
85
|
+
Uploaded payloads are limited to:
|
|
86
|
+
|
|
87
|
+
- A random `install_id`, event id, sequence number, and coarse timestamps.
|
|
88
|
+
- The installed `roar` version.
|
|
89
|
+
- Coarse platform values: OS family, CPU architecture, Python major/minor,
|
|
90
|
+
shell name, installer class, and whether the process appears containerized.
|
|
91
|
+
- Allowlisted command counters such as `run`, `init`, `register`, and
|
|
92
|
+
successful or failed `roar run` outcomes.
|
|
93
|
+
- Allowlisted tracer selection counters and coarse feature capability flags.
|
|
94
|
+
|
|
95
|
+
Inspect the current status and exact next payload preview:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
roar telemetry --status
|
|
99
|
+
roar telemetry --print
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
When `telemetry.endpoint` is unset, roar derives the upload endpoint from the
|
|
103
|
+
configured GLaaS API URL. For example, `glaas.url = "https://api.dev.glaas.ai"`
|
|
104
|
+
uses `https://api.dev.glaas.ai/api/v1/telemetry/roar`.
|
|
105
|
+
|
|
106
|
+
Disable telemetry globally or for a single project:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
roar telemetry --disable
|
|
110
|
+
roar config set telemetry.enabled false
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Environment opt-outs always win over saved config:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
DO_NOT_TRACK=1 roar run python train.py
|
|
117
|
+
ROAR_NO_TELEMETRY=1 roar run python train.py
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Telemetry is also suppressed automatically in CI, pytest, and Roar-managed
|
|
121
|
+
backend worker environments such as Ray and OSMO jobs.
|
|
122
|
+
|
|
58
123
|
## Tracer Backends
|
|
59
124
|
|
|
60
125
|
`roar run` relies on a Rust "tracer" binary to observe file I/O. If you see an error like "No tracer binary found", build one of the backends below.
|
|
@@ -88,10 +153,16 @@ By default, `roar` uses `auto` mode: prefer eBPF, then preload, then ptrace.
|
|
|
88
153
|
|
|
89
154
|
```bash
|
|
90
155
|
# Show what roar can currently find and whether it looks usable
|
|
91
|
-
roar tracer
|
|
156
|
+
roar tracer
|
|
92
157
|
|
|
93
158
|
# Set a default backend (auto|ebpf|preload|ptrace)
|
|
94
|
-
roar tracer
|
|
159
|
+
roar tracer use preload
|
|
160
|
+
|
|
161
|
+
# Deep preflight for one backend, with the exact failure cause
|
|
162
|
+
roar tracer check ebpf
|
|
163
|
+
|
|
164
|
+
# One-shot host setup for the eBPF backend (applies CAP_BPF)
|
|
165
|
+
roar tracer enable ebpf
|
|
95
166
|
```
|
|
96
167
|
|
|
97
168
|
### macOS Tracing Limitations
|
|
@@ -166,9 +237,13 @@ roar reproduce abc123de --run --package-sync
|
|
|
166
237
|
|
|
167
238
|
# Show all required packages (no truncation)
|
|
168
239
|
roar reproduce abc123de --list-requirements
|
|
240
|
+
|
|
241
|
+
# Reproduce a full lineage/session by its 64-character DAG hash
|
|
242
|
+
roar reproduce <lineage-hash> --lineage
|
|
243
|
+
roar reproduce <lineage-hash> --lineage --run
|
|
169
244
|
```
|
|
170
245
|
|
|
171
|
-
Full reproduction clones the git repository, creates a virtual environment, installs recorded packages, and runs the pipeline steps.
|
|
246
|
+
Unflagged `roar reproduce <hash>` continues to default to artifact reproduction. Full reproduction clones the git repository, creates a virtual environment, installs recorded packages, and runs the pipeline steps.
|
|
172
247
|
|
|
173
248
|
### `roar build <command>`
|
|
174
249
|
|
|
@@ -187,7 +262,7 @@ Use for setup that should run before the main pipeline (compiling, installing).
|
|
|
187
262
|
|
|
188
263
|
### `roar auth`
|
|
189
264
|
|
|
190
|
-
Manage GLaaS
|
|
265
|
+
Manage SSH-key-based GLaaS registration settings.
|
|
191
266
|
|
|
192
267
|
```bash
|
|
193
268
|
roar auth register # Show SSH public key for registration
|
|
@@ -195,7 +270,7 @@ roar auth test # Test connection to GLaaS server
|
|
|
195
270
|
roar auth status # Show current auth status
|
|
196
271
|
```
|
|
197
272
|
|
|
198
|
-
To register with GLaaS:
|
|
273
|
+
To register SSH auth with GLaaS:
|
|
199
274
|
|
|
200
275
|
1. Run `roar auth register` to display your public key
|
|
201
276
|
2. Sign up at <https://glaas.ai> where you can paste your public key
|
|
@@ -223,6 +298,7 @@ Run `roar config list` to see all available options with descriptions. Common op
|
|
|
223
298
|
| `filters.ignore_tmp_files` | true | Ignore /tmp files |
|
|
224
299
|
| `glaas.url` | <https://api.glaas.ai> | GLaaS server URL |
|
|
225
300
|
| `glaas.web_url` | <https://glaas.ai> | GLaaS web UI URL |
|
|
301
|
+
| `registration.public_by_default` | false | Default `register`/`put` visibility |
|
|
226
302
|
| `registration.omit.enabled` | true | Enable secret filtering |
|
|
227
303
|
| `hash.primary` | blake3 | Primary hash algorithm |
|
|
228
304
|
| `logging.level` | warning | Log level (debug, info, warning, error) |
|
|
@@ -257,6 +333,45 @@ Display recent job execution history.
|
|
|
257
333
|
roar log # Show recent job history
|
|
258
334
|
```
|
|
259
335
|
|
|
336
|
+
### `roar label`
|
|
337
|
+
|
|
338
|
+
Manage local labels for DAGs (sessions), jobs, and artifacts.
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
# Set labels (patches the current label document)
|
|
342
|
+
roar label set dag current owner=alice team=ml
|
|
343
|
+
roar label set job @2 phase=train lr=0.001
|
|
344
|
+
roar label set artifact ./outputs/model.pt model.name=resnet50 stage=baseline
|
|
345
|
+
|
|
346
|
+
# Remove labels
|
|
347
|
+
roar label unset artifact ./outputs/model.pt stage
|
|
348
|
+
|
|
349
|
+
# Copy labels from one entity to another
|
|
350
|
+
roar label cp job @2 artifact ./outputs/model.pt
|
|
351
|
+
|
|
352
|
+
# Show current labels
|
|
353
|
+
roar label show dag current
|
|
354
|
+
roar label show job @2
|
|
355
|
+
roar label show artifact ./outputs/model.pt
|
|
356
|
+
|
|
357
|
+
# Show label history (all versions)
|
|
358
|
+
roar label history dag current
|
|
359
|
+
roar label history artifact <artifact-hash>
|
|
360
|
+
|
|
361
|
+
# Sync local user-managed labels to GLaaS
|
|
362
|
+
roar label sync
|
|
363
|
+
roar label sync job @2
|
|
364
|
+
roar label sync artifact ./outputs/model.pt --dry-run
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
**Entity targets:**
|
|
368
|
+
|
|
369
|
+
- `dag`: `current` or a session hash prefix
|
|
370
|
+
- `job`: step ref (`@N` or `@BN`) or job UID
|
|
371
|
+
- `artifact`: file path or artifact hash
|
|
372
|
+
|
|
373
|
+
Labels are stored locally by default. You can explicitly reconcile current local user-managed labels to GLaaS with `roar label sync ...`, and labels are also included in lineage registration/publish flows when supported by the configured server.
|
|
374
|
+
|
|
260
375
|
### `roar register`
|
|
261
376
|
|
|
262
377
|
Register session, job, step, or artifact lineage with GLaaS.
|
|
@@ -283,6 +398,14 @@ roar register s3://bucket/run/out # Register a tracked remote S3 artifact
|
|
|
283
398
|
|
|
284
399
|
For bare 8-character hex targets, `roar register` prefers a matching local job UID before falling back to session-hash-prefix resolution.
|
|
285
400
|
|
|
401
|
+
To make public publication the default for `roar register` and `roar put`:
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
roar config set registration.public_by_default true
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
Override per command with `--public` or `--private`. Use `--anonymous` on `roar register` or `roar put` to force public anonymous publication even when local GLaaS auth is configured. When public visibility comes from config rather than an explicit flag, `roar` prints a warning before publishing.
|
|
408
|
+
|
|
286
409
|
### `roar put`
|
|
287
410
|
|
|
288
411
|
Upload artifacts to cloud storage and register lineage with GLaaS.
|
|
@@ -298,6 +421,8 @@ roar put @2 s3://bucket/outputs/ -m "Step 2 outputs"
|
|
|
298
421
|
- `-m, --message` — Description of the upload (required)
|
|
299
422
|
- `--dry-run` — Preview without uploading
|
|
300
423
|
- `--no-tag` — Skip git tagging
|
|
424
|
+
- `--public` / `--private` — Override configured publish visibility
|
|
425
|
+
- `--anonymous` — Force public anonymous registration even when local GLaaS auth is configured
|
|
301
426
|
|
|
302
427
|
**Source formats:**
|
|
303
428
|
|
|
@@ -350,12 +475,27 @@ roar show ./output/model.pkl # Show artifact by path
|
|
|
350
475
|
|
|
351
476
|
### `roar status`
|
|
352
477
|
|
|
353
|
-
Show a summary of the active session.
|
|
478
|
+
Show a summary of the active session, including the current DAG hash.
|
|
354
479
|
|
|
355
480
|
```bash
|
|
356
481
|
roar status
|
|
357
482
|
```
|
|
358
483
|
|
|
484
|
+
### `roar workflow`
|
|
485
|
+
|
|
486
|
+
Generate TReqs workflow YAML from a local session.
|
|
487
|
+
|
|
488
|
+
```bash
|
|
489
|
+
roar workflow generate
|
|
490
|
+
roar workflow generate .treqs/workflows/train.yaml
|
|
491
|
+
roar workflow generate --session 8d7a1f2c --name train
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
Generated workflows follow the TReqs workflow format: `name`, optional
|
|
495
|
+
`working_directory`, and one YAML key per task in session step order.
|
|
496
|
+
By default, `roar workflow generate` uses the active session and writes the
|
|
497
|
+
workflow under `.treqs/workflows/` at the repo root.
|
|
498
|
+
|
|
359
499
|
### `roar pop`
|
|
360
500
|
|
|
361
501
|
Remove the most recent job from the active session. Useful for undoing a mistaken `roar run` or correcting the pipeline before registration.
|
|
@@ -466,10 +606,62 @@ roar auth test
|
|
|
466
606
|
### Setup
|
|
467
607
|
|
|
468
608
|
```bash
|
|
469
|
-
|
|
470
|
-
uv pip install -e ".[dev]"
|
|
609
|
+
bash scripts/install-dev.sh
|
|
471
610
|
```
|
|
472
611
|
|
|
612
|
+
The script handles Python install + Rust tracer builds + staging
|
|
613
|
+
binaries into `roar/bin/`. See [Building from source](#building-from-source)
|
|
614
|
+
for what it does and how to run the steps manually.
|
|
615
|
+
|
|
616
|
+
### Building from source
|
|
617
|
+
|
|
618
|
+
`pip install -e .` runs `maturin develop` to build the `artifact-hash-py`
|
|
619
|
+
pyo3 extension, but the tracer binaries (`roar-tracer*`, `roard`,
|
|
620
|
+
`roar-proxy`) are separate cargo packages outside the maturin manifest.
|
|
621
|
+
The PyPI wheels bundle them under `roar/bin/`; an editable install
|
|
622
|
+
does not, and `roar run` fails until they're built and staged.
|
|
623
|
+
|
|
624
|
+
The fastest path is `scripts/install-dev.sh`, which does this:
|
|
625
|
+
|
|
626
|
+
```bash
|
|
627
|
+
# 1. Python package (editable, with dev extras)
|
|
628
|
+
uv pip install -e ".[dev]" # or pip install -e ".[dev]"
|
|
629
|
+
|
|
630
|
+
# 2. Build the per-platform tracer crates
|
|
631
|
+
cd rust
|
|
632
|
+
# Linux:
|
|
633
|
+
cargo build --release \
|
|
634
|
+
-p roar-tracer -p roar-tracer-preload -p roar-tracer-ebpf -p roar-proxy
|
|
635
|
+
# macOS:
|
|
636
|
+
cargo build --release -p roar-tracer-preload -p roar-proxy
|
|
637
|
+
|
|
638
|
+
# 3. Stage the built binaries where the editable install looks for them
|
|
639
|
+
cd ..
|
|
640
|
+
mkdir -p roar/bin
|
|
641
|
+
# Linux: install five binaries + the preload .so
|
|
642
|
+
install -m 0755 rust/target/release/{roar-tracer,roar-tracer-preload,roar-tracer-ebpf,roard,roar-proxy} roar/bin/
|
|
643
|
+
install -m 0755 rust/target/release/libroar_tracer_preload.so roar/bin/
|
|
644
|
+
# macOS: install the launcher + the preload .dylib + roar-proxy
|
|
645
|
+
# install -m 0755 rust/target/release/{roar-tracer-preload,roar-proxy} roar/bin/
|
|
646
|
+
# install -m 0755 rust/target/release/libroar_tracer_preload.dylib roar/bin/
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
The eBPF tracer (Linux only) needs `bpf-linker` and a Rust nightly
|
|
650
|
+
toolchain with `rust-src` for the BPF probe build:
|
|
651
|
+
|
|
652
|
+
```bash
|
|
653
|
+
cargo install bpf-linker
|
|
654
|
+
rustup install nightly
|
|
655
|
+
rustup component add rust-src --toolchain nightly
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
`scripts/install-dev.sh` skips eBPF gracefully when `bpf-linker` is
|
|
659
|
+
absent — the other tracers still work.
|
|
660
|
+
|
|
661
|
+
Verify the install with `roar tracer`; every backend listed should be
|
|
662
|
+
`ready` (or have a clear platform-specific reason it isn't, like
|
|
663
|
+
`perf_event_paranoid=4 (needs <= 1)` for eBPF on a hardened kernel).
|
|
664
|
+
|
|
473
665
|
### Running Quality Checks
|
|
474
666
|
|
|
475
667
|
```bash
|