chore: remove run (local execution) CLI verbs across all services - #1228
chore: remove run (local execution) CLI verbs across all services#1228ironcommit wants to merge 1 commit into
run (local execution) CLI verbs across all services#1228Conversation
run (local execution) CLI verbs across all services
📝 WalkthroughWalkthroughThe change removes local execution from plugin CLIs, schedulers, SDK resources, and Safe Synthesizer workflows. It standardizes platform submission through ChangesRemote execution transition
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 20
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (4)
docs/evaluator/metrics/model-configuration.mdx (1)
188-224: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winAdd
RunConfigOnlineModelandprompt_templateto the inlineModelexample.A model target requires both values. Without them, the durable job fails validation.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/evaluator/metrics/model-configuration.mdx` around lines 188 - 224, Update the inline Model example to include the required RunConfigOnlineModel configuration and prompt_template value, ensuring the submit call passes the online run config and the Model includes its prompt template. Keep the existing endpoint resolution and job flow unchanged.plugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/SKILL.md (1)
74-84: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winRemove local paths from the source example.
Line 80 says that
data.sourceaccepts a local path. Line 42 states that submission accepts only HTTP(S) URLs or fileset references. Remove “local path” from the comment.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/SKILL.md` around lines 74 - 84, Update the data.source comment in the anonymizer preview submit example to remove the local-path option, leaving only HTTP(S) URLs and fileset references as supported sources.docs/evaluator/tutorials/run-llm-judge-evaluation.mdx (1)
306-321: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winDelete
quick_test_jobduring cleanup.This flow creates
quick_test_job, but Lines 652-656 delete onlyjob_v1andjob_v2. The remaining job can prevent workspace deletion at Lines 669-670.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/evaluator/tutorials/run-llm-judge-evaluation.mdx` around lines 306 - 321, Update the cleanup section to also delete quick_test_job, alongside job_v1 and job_v2, before workspace deletion. Ensure the quick_test_job returned by evaluator.submit is cleaned up after its result is retrieved.plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/run.md (1)
11-16: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick winVerify platform readiness before dependent operations.
Follow
SETUP.md, check an existing instance, and fail on/health/readybefore model-fileset setup or job submission.curl -sdoes not enforce readiness. The diagnose workflow checks availability after setup.
plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/run.md#L11-L16: add an enforced readiness check beforesetup_model_filesets.py.plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/diagnose.md#L44-L50: move the Files API readiness check before model-fileset setup.As per coding guidelines: “Before operations requiring a running NeMo Platform, follow SETUP.md and verify service readiness.”
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/run.md` around lines 11 - 16, Ensure both workflow sites verify NeMo Platform readiness before dependent operations: in plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/run.md lines 11-16, follow SETUP.md, check an existing instance, and replace the non-enforcing curl health check with an enforced /health/ready check before setup_model_filesets.py; in plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/diagnose.md lines 44-50, move the Files API readiness check before model-fileset setup while preserving failure on an unavailable or unready service.Source: Coding guidelines
🧹 Nitpick comments (2)
plugins/nemo-evaluator/tests/test_inline_bundle_execution.py (1)
55-63: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winExtract this fixture; it is duplicated across three test modules.
_job_contexthere is byte-identical in behavior to_make_job_contextinplugins/nemo-evaluator/tests/test_evaluate_job.py(Lines 103-112), andtest_agent_evaluate.pydefines a third copy. Move it to a sharedconftest.pyfixture.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugins/nemo-evaluator/tests/test_inline_bundle_execution.py` around lines 55 - 63, Extract the duplicated _job_context setup into a shared pytest fixture in conftest.py, consolidating it with _make_job_context from test_evaluate_job.py and the equivalent helper in test_agent_evaluate.py. Update all three test modules to use the shared fixture and remove their local helper definitions while preserving the existing JobContext, StoragePaths, directory creation, and LocalJobResults behavior.plugins/nemo-safe-synthesizer/tests/unit/test_cli.py (1)
8-13: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winInvoke
run-localdirectly in this test.A hidden registered command passes this help-only check. Invoke
["run-local"]and assert a nonzero exit code withNo such command.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugins/nemo-safe-synthesizer/tests/unit/test_cli.py` around lines 8 - 13, Update test_cli_exposes_runtime_but_not_removed_local_command to invoke the CLI with ["run-local"] instead of only requesting help, then assert a nonzero exit code and that the output contains "No such command".
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/anonymizer/cli.mdx`:
- Around line 14-17: Complete the remote-only documentation migration: in
docs/anonymizer/cli.mdx lines 14-17 keep one row each for preview submit and run
submit, removing local behavior; update lines 39-42 and 60-71 to describe and
source only the remote preview path; update lines 98-114 to keep run submit
remote-only; remove duplicate command requirements in lines 139-152. In
docs/anonymizer/tutorials/preview.mdx lines 179-184, update the preview field
reference to remove local-path support and align with the remote-only execution
path.
In `@docs/data-designer/cli.mdx`:
- Around line 41-42: Remove the obsolete local execution entries for preview
submit and create submit from the CLI documentation, including the corresponding
local sections around the referenced rows. Retain only the rows describing
submission through NeMo Services, so each command has a single service-based
execution model.
In `@docs/data-designer/tutorials/seeding.mdx`:
- Around line 259-265: Update docs/data-designer/tutorials/seeding.mdx at lines
259-265 by deleting the duplicate submit command block, removing “locally” from
the labels at lines 256 and 262, and removing the local-execution claim at line
247. In docs/data-designer/tutorials/basics.mdx at line 205, rename “Local CLI
Execution” to “CLI Submission,” remove the “run locally through the CLI” option
at line 194, and remove “local” from line 285.
In `@docs/evaluator/metrics/llm-as-a-judge.mdx`:
- Line 21: Update the execution-mode table around the “Platform job” row so it
no longer duplicates the durable-job mode on the adjacent row. Either
consolidate the entries into one platform-job mode or restore the intended
standalone SDK mode, while keeping each mode’s description and example accurate.
In `@docs/evaluator/metrics/remote.mdx`:
- Around line 24-25: Remove the duplicate execution-mode row from the execution
modes table, keeping a single entry for durable platform jobs with the existing
evaluator.submit(metric=metric, dataset=dataset) example.
In `@docs/evaluator/tutorials/run-llm-judge-evaluation.mdx`:
- Line 63: Update the tutorial’s remaining local-execution guidance around the
resource description, local execution section, and testing recommendation to
describe submitted evaluator jobs only. Remove references to running metrics
locally and direct users toward the durable submit flow via
evaluator.submit(...), while preserving the surrounding evaluation instructions.
In `@docs/safe-synthesizer/about/host-local-development.mdx`:
- Around line 53-57: Rename the “Related Topics” section to “Next Steps” in the
host-local-development documentation. Replace the source-tree Plugin README
reference with its published canonical Fern documentation URL, or remove that
bullet if no canonical page exists; keep the existing published links unchanged.
- Around line 8-12: Update the host-local development page before the
introductory content and Runtime Commands heading to list prerequisites covering
platform access, plugin installation, and required runtime setup. Keep the
existing explanation and command documentation unchanged after the new
prerequisites section.
In `@docs/safe-synthesizer/getting-started.mdx`:
- Around line 23-48: Update the “Submit Jobs” section to use the documentation’s
paired Python/CLI tab format. Keep the existing Python SDK example, and add a
CLI tab showing the supported runtime setup and inspection flow while clearly
stating that remote-only CLI submission is unavailable; if a CLI submit command
exists, document that command instead.
In `@docs/studio/data-designer-build.mdx`:
- Line 156: Update the “Preview logs” description to state that sampled output
is streamed while the submitted preview executes, rather than implying streaming
ends when submission is accepted.
In `@packages/nemo_platform_plugin/src/nemo_platform_plugin/docs/ARCHITECTURE.md`:
- Around line 100-105: Remove stale local-execution and generated `run`
documentation across the submission-only flow: in
packages/nemo_platform_plugin/src/nemo_platform_plugin/docs/ARCHITECTURE.md:100-105
update the CLI surface to document only `submit` and `explain`; in
docs/evaluator/metrics/rag.mdx:61-68 and its referenced areas near lines 82,
124, and 914 remove local `run` references; in
docs/evaluator/metrics/remote.mdx:254-257 and referenced areas near lines 241
and 260 remove local `run` and local secret-resolution wording; in
docs/evaluator/metrics/results.mdx:34-42 rename “Get Results from a Local Run”;
and in packages/nemo_platform_plugin/src/nemo_platform_plugin/function.py:9-11
remove local-CLI references from the `run()` and `run_signature()` docstrings.
In `@packages/nemo_platform_plugin/tests/test_commands.py`:
- Around line 255-260: Update the test setup around the runner invocation to
import os and clear relevant NMP_* environment variables before executing the
command, ensuring _resolve_submit_auth_headers cannot read ambient
authentication configuration and the exact kwargs["headers"] assertion remains
deterministic.
In `@plugins/nemo-anonymizer/openapi/openapi.yaml`:
- Line 1288: Regenerate the remote-only OpenAPI contract and SDK so the source
schema accepts only URLs or filesets, and model_configs is required in
AnonymizerRequest and PreviewRequest. Update the corresponding OpenAPI data
models to match the submitted-execution contract before running the repository’s
specification and SDK generation workflow.
In
`@plugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/references/model-configs.md`:
- Line 52: Remove or revise the “Local default-everything preview” entry in the
model configuration documentation so it no longer claims that preview submit or
run submit work without model_configs. Keep the documented requirement that both
commands require model_configs, and update any remaining wording in that entry
to describe only supported local behavior.
In
`@plugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/SKILL.md`:
- Around line 21-22: Update the CLI usage guidance for anonymizer.preview and
anonymizer.run to require following SETUP.md, setting
NMP_BASE_URL=http://localhost:8080, checking for an existing instance, and
verifying /health/ready before submitting either command.
- Line 37: Update the iteration guidance in SKILL.md so it instructs users to
run “nemo anonymizer preview submit” first, followed by the full-job command
“nemo anonymizer run submit”; remove the duplicated preview command.
In
`@plugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/workflows/autopilot.md`:
- Around line 22-23: Update the Build and Preview workflow steps to require
local platform readiness before submission: set
NMP_BASE_URL=http://localhost:8080, follow SETUP.md, and verify that
/health/ready succeeds before running nemo anonymizer preview submit. Do not
allow preview submission based only on /openapi.json.
In
`@plugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/workflows/interactive.md`:
- Around line 10-11: Update the workflow setup before the plugin-service probe
and every subsequent nemo command: set NMP_BASE_URL to http://localhost:8080 and
verify that /health/ready returns successfully. Stop and instruct the user to
resolve service readiness if the check fails, then retain the existing
openapi.json mounting check and input-source flow.
In `@plugins/nemo-auditor/README.md`:
- Around line 47-54: Align the CLI documentation in the README with the
registered command described in the auditor skill. Verify whether `nemo auditor
audit submit` is supported; if registered, document its usage in the README and
update the statement that no plugin-specific CLI command exists, otherwise
remove the command references from `SKILL.md`.
In
`@plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/tasks/safe_synthesizer/__main__.py`:
- Around line 396-400: Update main to normalize a None argv to sys.argv[1:]
before the rejection check, then preserve the existing SystemExit behavior for
any supplied arguments and call run_from_env only when the normalized list is
empty.
---
Outside diff comments:
In `@docs/evaluator/metrics/model-configuration.mdx`:
- Around line 188-224: Update the inline Model example to include the required
RunConfigOnlineModel configuration and prompt_template value, ensuring the
submit call passes the online run config and the Model includes its prompt
template. Keep the existing endpoint resolution and job flow unchanged.
In `@docs/evaluator/tutorials/run-llm-judge-evaluation.mdx`:
- Around line 306-321: Update the cleanup section to also delete quick_test_job,
alongside job_v1 and job_v2, before workspace deletion. Ensure the
quick_test_job returned by evaluator.submit is cleaned up after its result is
retrieved.
In
`@plugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/SKILL.md`:
- Around line 74-84: Update the data.source comment in the anonymizer preview
submit example to remove the local-path option, leaving only HTTP(S) URLs and
fileset references as supported sources.
In
`@plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/run.md`:
- Around line 11-16: Ensure both workflow sites verify NeMo Platform readiness
before dependent operations: in
plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/run.md
lines 11-16, follow SETUP.md, check an existing instance, and replace the
non-enforcing curl health check with an enforced /health/ready check before
setup_model_filesets.py; in
plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/diagnose.md
lines 44-50, move the Files API readiness check before model-fileset setup while
preserving failure on an unavailable or unready service.
---
Nitpick comments:
In `@plugins/nemo-evaluator/tests/test_inline_bundle_execution.py`:
- Around line 55-63: Extract the duplicated _job_context setup into a shared
pytest fixture in conftest.py, consolidating it with _make_job_context from
test_evaluate_job.py and the equivalent helper in test_agent_evaluate.py. Update
all three test modules to use the shared fixture and remove their local helper
definitions while preserving the existing JobContext, StoragePaths, directory
creation, and LocalJobResults behavior.
In `@plugins/nemo-safe-synthesizer/tests/unit/test_cli.py`:
- Around line 8-13: Update
test_cli_exposes_runtime_but_not_removed_local_command to invoke the CLI with
["run-local"] instead of only requesting help, then assert a nonzero exit code
and that the output contains "No such command".
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 05868de5-b0a8-42e8-a4e4-66b17fdb3cdd
⛔ Files ignored due to path filters (1)
sdk/python/nemo-platform/src/nemo_platform/cli/app.pyis excluded by!sdk/**
📒 Files selected for processing (136)
docs/agents/optimization.mdxdocs/anonymizer/cli.mdxdocs/anonymizer/index.mdxdocs/anonymizer/sdk-resources.mdxdocs/anonymizer/tutorials/index.mdxdocs/anonymizer/tutorials/preview.mdxdocs/anonymizer/tutorials/run.mdxdocs/auditor/configs/index.mdxdocs/auditor/index.mdxdocs/auditor/sdk-resources.mdxdocs/auditor/targets/index.mdxdocs/auditor/targets/inference-gateway.mdxdocs/auditor/tutorials/index.mdxdocs/auditor/tutorials/run-audit-locally.mdxdocs/data-designer/cli.mdxdocs/data-designer/execution-modes.mdxdocs/data-designer/index.mdxdocs/data-designer/migration.mdxdocs/data-designer/sdk-resources.mdxdocs/data-designer/tutorials/basics.mdxdocs/data-designer/tutorials/index.mdxdocs/data-designer/tutorials/seeding.mdxdocs/evaluator/agent-eval/index.mdxdocs/evaluator/index.mdxdocs/evaluator/metrics/agent-configuration.mdxdocs/evaluator/metrics/agentic.mdxdocs/evaluator/metrics/index.mdxdocs/evaluator/metrics/llm-as-a-judge.mdxdocs/evaluator/metrics/manage-metrics.mdxdocs/evaluator/metrics/model-configuration.mdxdocs/evaluator/metrics/rag.mdxdocs/evaluator/metrics/remote.mdxdocs/evaluator/metrics/results.mdxdocs/evaluator/metrics/similarity.mdxdocs/evaluator/sdk-resources.mdxdocs/evaluator/test_doc_examples.pydocs/evaluator/tutorials/run-llm-judge-evaluation.mdxdocs/safe-synthesizer/about/host-local-development.mdxdocs/safe-synthesizer/about/index.mdxdocs/safe-synthesizer/about/jobs.mdxdocs/safe-synthesizer/about/reference.mdxdocs/safe-synthesizer/getting-started.mdxdocs/safe-synthesizer/tutorials/safe-synthesizer-101.mdxdocs/studio/data-designer-build.mdxpackages/nemo_platform_ext/src/nemo_platform_ext/cli/app.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/cli.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/cli_renderer.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/cli_state.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/commands.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/discovery.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/docs/ARCHITECTURE.mdpackages/nemo_platform_plugin/src/nemo_platform_plugin/docs/JOB.mdpackages/nemo_platform_plugin/src/nemo_platform_plugin/docs/QUICKSTART.mdpackages/nemo_platform_plugin/src/nemo_platform_plugin/function.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/job.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/job_context.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/job_results.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/run_dependencies.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/scheduler.pypackages/nemo_platform_plugin/src/nemo_platform_plugin/tasks/dispatcher.pypackages/nemo_platform_plugin/tests/test_cli_hooks.pypackages/nemo_platform_plugin/tests/test_cli_renderer.pypackages/nemo_platform_plugin/tests/test_commands.pypackages/nemo_platform_plugin/tests/test_dispatcher.pypackages/nemo_platform_plugin/tests/test_job_context.pypackages/nemo_platform_plugin/tests/test_run_dependencies.pypackages/nemo_platform_plugin/tests/test_scheduler.pypackages/nmp_customization_common/src/nmp/customization_common/cli/overrides.pypackages/nmp_customization_common/src/nmp/customization_common/contributor/base.pyplugins/example-plugin/src/nemo_example_plugin/jobs/say_hello.pyplugins/example-plugin/tests/test_say_hello_job.pyplugins/nemo-agents/src/nemo_agents_plugin/jobs/evaluate_agent.pyplugins/nemo-agents/src/nemo_agents_plugin/jobs/fileset_io.pyplugins/nemo-agents/src/nemo_agents_plugin/skills/agents-optimize/SKILL.mdplugins/nemo-agents/tests/unit/test_utils.pyplugins/nemo-anonymizer/README.mdplugins/nemo-anonymizer/openapi/openapi.yamlplugins/nemo-anonymizer/src/nemo_anonymizer_plugin/cli.pyplugins/nemo-anonymizer/src/nemo_anonymizer_plugin/functions/preview.pyplugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/SKILL.mdplugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/references/inputs.mdplugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/references/model-configs.mdplugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/references/preview-review.mdplugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/references/replace-strategies.mdplugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/references/rewrite-mode.mdplugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/workflows/autopilot.mdplugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/workflows/interactive.mdplugins/nemo-anonymizer/tests/unit/test_cli.pyplugins/nemo-anonymizer/tests/unit/test_run_job.pyplugins/nemo-auditor/README.mdplugins/nemo-auditor/src/nemo_auditor/jobs/audit.pyplugins/nemo-auditor/src/nemo_auditor/sdk.pyplugins/nemo-auditor/src/nemo_auditor/skills/auditor/SKILL.mdplugins/nemo-auditor/tests/test_sdk_resources.pyplugins/nemo-automodel/src/nemo_automodel_plugin/cli/inputs.pyplugins/nemo-automodel/tests/test_cli.pyplugins/nemo-customizer/src/nemo_customizer/skills/nemo-customizer/references/troubleshooting.mdplugins/nemo-data-designer/README.mdplugins/nemo-data-designer/src/nemo_data_designer_plugin/cli/inputs.pyplugins/nemo-data-designer/src/nemo_data_designer_plugin/cli/main.pyplugins/nemo-data-designer/src/nemo_data_designer_plugin/cli/renderers.pyplugins/nemo-data-designer/tests/integration/test_preview_local_cli.pyplugins/nemo-evaluator/src/nemo_evaluator/jobs/agent_evaluate.pyplugins/nemo-evaluator/src/nemo_evaluator/jobs/evaluate.pyplugins/nemo-evaluator/src/nemo_evaluator/metric_refs.pyplugins/nemo-evaluator/src/nemo_evaluator/sdk/_executor.pyplugins/nemo-evaluator/src/nemo_evaluator/sdk/fs_utils.pyplugins/nemo-evaluator/src/nemo_evaluator/sdk/resources.pyplugins/nemo-evaluator/src/nemo_evaluator/task_refs.pyplugins/nemo-evaluator/tests/integration/test_agent_evaluate_job.pyplugins/nemo-evaluator/tests/integration/test_harbor_plugin_run.pyplugins/nemo-evaluator/tests/test_agent_evaluate.pyplugins/nemo-evaluator/tests/test_evaluate_job.pyplugins/nemo-evaluator/tests/test_inline_bundle_execution.pyplugins/nemo-evaluator/tests/test_sdk.pyplugins/nemo-evaluator/tests/test_skill_examples.pyplugins/nemo-optimization/examples/hermes-optimize/README.mdplugins/nemo-optimization/src/nemo_optimization/agents.pyplugins/nemo-optimization/tests/test_optimize_job.pyplugins/nemo-rl/src/nemo_rl_plugin/cli/inputs.pyplugins/nemo-safe-synthesizer/README.mdplugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/cli.pyplugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/SKILL.mdplugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/config-runs.mdplugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/config.mdplugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/diagnose.mdplugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/results.mdplugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/run.mdplugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/tasks/safe_synthesizer/__main__.pyplugins/nemo-safe-synthesizer/tests/e2e/test_local_synthesis.pyplugins/nemo-safe-synthesizer/tests/unit/test_cli.pyplugins/nemo-safe-synthesizer/tests/unit/test_local_run.pyplugins/nemo-safe-synthesizer/tests/unit/test_runtime.pyplugins/nemo-unsloth/src/nemo_unsloth_plugin/cli/inputs.pyplugins/nemo-unsloth/tests/test_cli.pyplugins/nemo-unsloth/tests/test_contributor.py
💤 Files with no reviewable changes (6)
- plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/config.md
- plugins/nemo-evaluator/src/nemo_evaluator/sdk/fs_utils.py
- plugins/nemo-evaluator/src/nemo_evaluator/sdk/resources.py
- plugins/nemo-safe-synthesizer/tests/unit/test_local_run.py
- plugins/nemo-safe-synthesizer/tests/e2e/test_local_synthesis.py
- plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/skills/safe-synthesizer/workflows/results.md
| | `nemo anonymizer preview submit` | Generated from `NemoFunction` | Local streaming preview. | | ||
| | `nemo anonymizer preview submit` | Generated from `NemoFunction` | Remote streaming preview against the plugin service. | | ||
| | `nemo anonymizer run run` | Generated from `NemoJob` | Local job execution in the CLI process. | | ||
| | `nemo anonymizer run submit` | Generated from `NemoJob` | Local job execution in the CLI process. | | ||
| | `nemo anonymizer run submit` | Generated from `NemoJob` | Submit an `anonymizer.run` job to the NeMo Platform Jobs worker. | |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Complete the remote-only documentation migration.
preview submit and run submit each describe both local and remote behavior. The preview tutorial also conflicts with its field reference, which still permits local paths.
docs/anonymizer/cli.mdx#L14-L17: Keep one row for each command. Remove stale local behavior.docs/anonymizer/cli.mdx#L39-L42: Describe onepreview submitexecution path.docs/anonymizer/cli.mdx#L60-L71: Keep the source matrix consistent with that path.docs/anonymizer/cli.mdx#L98-L114: Keeprun submitremote-only.docs/anonymizer/cli.mdx#L139-L152: Remove duplicate command requirements.docs/anonymizer/tutorials/preview.mdx#L179-L184: Update the field reference at line 82 to remove local-path support.
📍 Affects 2 files
docs/anonymizer/cli.mdx#L14-L17(this comment)docs/anonymizer/cli.mdx#L39-L42docs/anonymizer/cli.mdx#L60-L71docs/anonymizer/cli.mdx#L98-L114docs/anonymizer/cli.mdx#L139-L152docs/anonymizer/tutorials/preview.mdx#L179-L184
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/anonymizer/cli.mdx` around lines 14 - 17, Complete the remote-only
documentation migration: in docs/anonymizer/cli.mdx lines 14-17 keep one row
each for preview submit and run submit, removing local behavior; update lines
39-42 and 60-71 to describe and source only the remote preview path; update
lines 98-114 to keep run submit remote-only; remove duplicate command
requirements in lines 139-152. In docs/anonymizer/tutorials/preview.mdx lines
179-184, update the preview field reference to remove local-path support and
align with the remote-only execution path.
| | `preview submit` | Local CLI process | Optional | | ||
| | `create submit` | Local CLI process | Optional | |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Remove the obsolete local execution instructions.
preview submit and create submit appear twice with contradictory execution models. The local sections state that submit runs without NeMo Services. The later rows state that the same commands submit work to NeMo Services.
Delete or rewrite the local preview and create sections. Retain only the service submission behavior.
As per PR objectives, local run APIs and commands are removed.
Also applies to: 51-61
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/data-designer/cli.mdx` around lines 41 - 42, Remove the obsolete local
execution entries for preview submit and create submit from the CLI
documentation, including the corresponding local sections around the referenced
rows. Retain only the rows describing submission through NeMo Services, so each
command has a single service-based execution model.
| nemo data-designer preview submit medical_notes.py --num-records 5 | ||
| ``` | ||
|
|
||
| Generate a larger dataset locally: | ||
|
|
||
| ```bash | ||
| nemo data-designer create run medical_notes.py --num-records 30 | ||
| nemo data-designer create submit medical_notes.py --num-records 30 |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Residual "local" prose left behind by the run → submit rename. Both tutorials now issue submit commands under headings and lead-ins that still promise local execution, so each page contradicts itself.
docs/data-designer/tutorials/seeding.mdx#L259-L265: delete this block; it duplicates the "Submit to NeMo Services" commands at Lines 271-272. Also drop the "locally" labels at Lines 256 and 262 and the local-execution claim at Line 247.docs/data-designer/tutorials/basics.mdx#L205-L205: rename the Line 196 heading "Local CLI Execution" to "CLI Submission", remove the "run locally through the CLI" option at Line 194, and drop "local" from Line 285.
📍 Affects 2 files
docs/data-designer/tutorials/seeding.mdx#L259-L265(this comment)docs/data-designer/tutorials/basics.mdx#L205-L205
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/data-designer/tutorials/seeding.mdx` around lines 259 - 265, Update
docs/data-designer/tutorials/seeding.mdx at lines 259-265 by deleting the
duplicate submit command block, removing “locally” from the labels at lines 256
and 262, and removing the local-execution claim at line 247. In
docs/data-designer/tutorials/basics.mdx at line 205, rename “Local CLI
Execution” to “CLI Submission,” remove the “run locally through the CLI” option
at line 194, and remove “local” from line 285.
| | Mode | Use Case | SDK Call | | ||
| |------|----------|----------| | ||
| | **Local execution** | Rapid prototyping, metric development, and synchronous workflows | `evaluator.run(metric=metric, dataset=dataset)` | | ||
| | **Platform job** | Durable platform execution with polling and result retrieval | `evaluator.submit(metric=metric, dataset=dataset)` | |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Make the execution-mode table distinct.
Line 21 duplicates the durable-job mode on line 22. Collapse the table to one platform-job mode, or restore the standalone SDK mode.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/evaluator/metrics/llm-as-a-judge.mdx` at line 21, Update the
execution-mode table around the “Platform job” row so it no longer duplicates
the durable-job mode on the adjacent row. Either consolidate the entries into
one platform-job mode or restore the intended standalone SDK mode, while keeping
each mode’s description and example accurate.
| | **Platform job** | Durable platform execution with polling and result retrieval | `evaluator.submit(metric=metric, dataset=dataset)` | | ||
| | **Durable remote job** | Production workloads that should run as platform jobs | `evaluator.submit(metric=metric, dataset=dataset)` | |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Remove the duplicate execution mode.
Both rows describe durable platform jobs and use the same evaluator.submit(...) call. Keep one row or define different behavior.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/evaluator/metrics/remote.mdx` around lines 24 - 25, Remove the duplicate
execution-mode row from the execution modes table, keeping a single entry for
durable platform jobs with the existing evaluator.submit(metric=metric,
dataset=dataset) example.
|
|
||
| - Prefer CLI surfaces. Generate YAML specs and run `nemo anonymizer ...` commands unless the user explicitly asks for Python. | ||
| - Always iterate via `nemo anonymizer preview run` or `nemo anonymizer preview submit` before running the full job. Previews are cheap and stream a small sample (default 10 records) with full detection traces. | ||
| - Always iterate via `nemo anonymizer preview submit` or `nemo anonymizer preview submit` before running the full job. Previews are cheap and stream a small sample (default 10 records) with full detection traces. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Name the full-job command.
The rule repeats nemo anonymizer preview submit. Replace the second command with nemo anonymizer run submit.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@plugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/SKILL.md`
at line 37, Update the iteration guidance in SKILL.md so it instructs users to
run “nemo anonymizer preview submit” first, followed by the full-job command
“nemo anonymizer run submit”; remove the duplicated preview command.
| 4. **Build** — Write a YAML preview spec following the Output Template in SKILL.md. Default filename: `<text_column>_preview_spec.yaml` (e.g. `biography_preview_spec.yaml`). | ||
| 5. **Preview** — Run the surface chosen in step 2: | ||
| - Local: `nemo anonymizer preview run --spec-file <path> --workspace <ws>` | ||
| - Plugin service: `nemo anonymizer preview submit --spec-file <path> --workspace <ws>` | ||
| 5. **Preview** — Run `nemo anonymizer preview submit --spec-file <path> --workspace <ws>`. |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win
Verify platform readiness before submission.
Steps 4 and 5 submit work after only checking /openapi.json. Follow SETUP.md, set NMP_BASE_URL=http://localhost:8080, and require /health/ready to succeed before preview submit.
As per coding guidelines, local NeMo CLI operations must set NMP_BASE_URL and verify /health/ready.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@plugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/workflows/autopilot.md`
around lines 22 - 23, Update the Build and Preview workflow steps to require
local platform readiness before submission: set
NMP_BASE_URL=http://localhost:8080, follow SETUP.md, and verify that
/health/ready succeeds before running nemo anonymizer preview submit. Do not
allow preview submission based only on /openapi.json.
Source: Coding guidelines
| 2. **Confirm the plugin service is mounted.** Run `curl -s http://localhost:8080/openapi.json | jq -r '.paths | keys[]' | grep '^/apis/anonymizer/'`. If nothing prints, the plugin service isn't loaded — `nemo setup` does not auto-mount it. Tell the user to run `nemo services run` (no `--services` flag) and rerun the check. | ||
| 3. **Confirm input source** — Decide which supported input source you're working with: an `http(s)://` URL or a NeMo Platform fileset reference. If the user named a local file, ask whether to upload it to a fileset first (see `references/inputs.md`). |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Set the platform endpoint and readiness check before CLI calls.
This workflow probes http://localhost:8080/openapi.json, but it does not set NMP_BASE_URL or check /health/ready. Later nemo commands can target a different platform or run before the local service is ready. Follow SETUP.md, set the base URL before all nemo commands, and require a successful readiness response.
Suggested setup guard
+export NMP_BASE_URL=http://localhost:8080
+curl --fail --silent "$NMP_BASE_URL/health/ready" >/dev/null
-curl -s http://localhost:8080/openapi.json | jq -r '.paths | keys[]' | grep '^/apis/anonymizer/'
+curl --fail --silent "$NMP_BASE_URL/openapi.json" | jq -r '.paths | keys[]' | grep '^/apis/anonymizer/'As per coding guidelines, local NeMo CLI commands must set NMP_BASE_URL=http://localhost:8080 and verify /health/ready before proceeding.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 2. **Confirm the plugin service is mounted.** Run `curl -s http://localhost:8080/openapi.json | jq -r '.paths | keys[]' | grep '^/apis/anonymizer/'`. If nothing prints, the plugin service isn't loaded — `nemo setup` does not auto-mount it. Tell the user to run `nemo services run` (no `--services` flag) and rerun the check. | |
| 3. **Confirm input source** — Decide which supported input source you're working with: an `http(s)://` URL or a NeMo Platform fileset reference. If the user named a local file, ask whether to upload it to a fileset first (see `references/inputs.md`). | |
| 2. **Confirm the plugin service is mounted.** Run: |
🧰 Tools
🪛 LanguageTool
[grammar] ~11-~11: Ensure spelling is correct
Context: ...cal file, ask whether to upload it to a fileset first (see references/inputs.md). 4. ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@plugins/nemo-anonymizer/src/nemo_anonymizer_plugin/skills/anonymizer/workflows/interactive.md`
around lines 10 - 11, Update the workflow setup before the plugin-service probe
and every subsequent nemo command: set NMP_BASE_URL to http://localhost:8080 and
verify that /health/ready returns successfully. Stop and instruct the user to
resolve service readiness if the check fails, then retain the existing
openapi.json mounting check and input-source flow.
Source: Coding guidelines
| There is no plugin-specific CLI command for running an audit yet. Submit | ||
| audits through the SDK or the platform jobs service using the `auditor.audit` | ||
| job entry point. | ||
|
|
||
| ## SDK quickstart | ||
|
|
||
| Every CLI verb has a matching Python SDK method on `client.auditor`, plus | ||
| `client.auditor.run(...)` for in-process execution that bypasses the jobs | ||
| service. | ||
| `client.auditor.submit(...)` for audit job submission. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Keep the CLI and skill instructions consistent.
This paragraph says that no plugin-specific CLI command exists. plugins/nemo-auditor/src/nemo_auditor/skills/auditor/SKILL.md documents nemo auditor audit submit on Line 81-83 and Line 103. Document the supported submit command here, or remove it from the skill if it is not registered.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@plugins/nemo-auditor/README.md` around lines 47 - 54, Align the CLI
documentation in the README with the registered command described in the auditor
skill. Verify whether `nemo auditor audit submit` is supported; if registered,
document its usage in the README and update the statement that no
plugin-specific CLI command exists, otherwise remove the command references from
`SKILL.md`.
| def main(argv: list[str] | None = None) -> None: | ||
| """Run the task entry point from either platform env vars or CLI args.""" | ||
| argv = sys.argv[1:] if argv is None else argv | ||
| if not argv: | ||
| run_from_env() | ||
| return | ||
|
|
||
| parser = argparse.ArgumentParser(prog="python -m nemo_safe_synthesizer_plugin.tasks.safe_synthesizer") | ||
| subparsers = parser.add_subparsers(dest="command", required=True) | ||
| local_parser = subparsers.add_parser("run-local", help="Run a Safe Synthesizer job from a local spec file.") | ||
| local_parser.add_argument("--spec-file", required=True, type=Path) | ||
| local_parser.add_argument("--workspace", default="default") | ||
| local_parser.add_argument("--output-dir", required=True, type=Path) | ||
| local_parser.add_argument("--data-source", type=Path) | ||
|
|
||
| args = parser.parse_args(argv) | ||
| if args.command == "run-local": | ||
| run_local( | ||
| spec_file=args.spec_file, | ||
| workspace=args.workspace, | ||
| output_dir=args.output_dir, | ||
| data_source=args.data_source, | ||
| ) | ||
| return | ||
|
|
||
| parser.error(f"unknown command: {args.command}") | ||
| """Run the task entry point from platform environment variables.""" | ||
| if argv: | ||
| raise SystemExit("This task module no longer accepts local execution commands.") | ||
| run_from_env() |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Read process arguments before starting the task.
When callers invoke main() with its default value, supplied command-line arguments are ignored and run_from_env() starts. Normalize argv from sys.argv[1:] when it is None before the rejection check.
Proposed fix
+import sys
+
def main(argv: list[str] | None = None) -> None:
"""Run the task entry point from platform environment variables."""
+ argv = sys.argv[1:] if argv is None else argv
if argv:
raise SystemExit("This task module no longer accepts local execution commands.")📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| def main(argv: list[str] | None = None) -> None: | |
| """Run the task entry point from either platform env vars or CLI args.""" | |
| argv = sys.argv[1:] if argv is None else argv | |
| if not argv: | |
| run_from_env() | |
| return | |
| parser = argparse.ArgumentParser(prog="python -m nemo_safe_synthesizer_plugin.tasks.safe_synthesizer") | |
| subparsers = parser.add_subparsers(dest="command", required=True) | |
| local_parser = subparsers.add_parser("run-local", help="Run a Safe Synthesizer job from a local spec file.") | |
| local_parser.add_argument("--spec-file", required=True, type=Path) | |
| local_parser.add_argument("--workspace", default="default") | |
| local_parser.add_argument("--output-dir", required=True, type=Path) | |
| local_parser.add_argument("--data-source", type=Path) | |
| args = parser.parse_args(argv) | |
| if args.command == "run-local": | |
| run_local( | |
| spec_file=args.spec_file, | |
| workspace=args.workspace, | |
| output_dir=args.output_dir, | |
| data_source=args.data_source, | |
| ) | |
| return | |
| parser.error(f"unknown command: {args.command}") | |
| """Run the task entry point from platform environment variables.""" | |
| if argv: | |
| raise SystemExit("This task module no longer accepts local execution commands.") | |
| run_from_env() | |
| import sys | |
| def main(argv: list[str] | None = None) -> None: | |
| """Run the task entry point from platform environment variables.""" | |
| argv = sys.argv[1:] if argv is None else argv | |
| if argv: | |
| raise SystemExit("This task module no longer accepts local execution commands.") | |
| run_from_env() |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/tasks/safe_synthesizer/__main__.py`
around lines 396 - 400, Update main to normalize a None argv to sys.argv[1:]
before the rejection check, then preserve the existing SystemExit behavior for
any supplied arguments and call run_from_env only when the normalized list is
empty.
|
Signed-off-by: Ryan S <267728323+ironcommit@users.noreply.github.com>
fadfffc to
68e6e54
Compare
mckornfield
left a comment
There was a problem hiding this comment.
questions/comments, I just stuck to NSS
| ``` | ||
|
|
||
| ## Run the local task directly | ||
| NeMo Safe Synthesizer no longer exposes a host-local workload command. Create synthesis jobs through the platform Jobs API or SDK so scheduling, storage, logs, and artifacts all flow through the supported job path. |
There was a problem hiding this comment.
for the "no longer", do we just want to burn the ships and not act like we ever supported it? this goes for all the plugins, but we'll still have the old behavior documented in the old docs versions
| NeMo Safe Synthesizer has the following additional requirements: | ||
|
|
||
| - An NVIDIA GPU **on the host machine** with 80GB+ VRAM (check with `nvidia-smi`). This is separate from any GPU inside a NIM container; Safe Synthesizer training runs directly on the host. | ||
| - A GPU-capable Jobs backend with enough VRAM for the selected model and dataset. |
There was a problem hiding this comment.
we should probably recommend the 80GB+ VRAM still, even if we're making this more generic to docker/k8s
| """Safe Synthesizer commands.""" | ||
|
|
||
| @runtime_app.command("setup") | ||
| def setup_runtime_command( |
There was a problem hiding this comment.
is this still required? I guess we're getting rid of "run", but we can still do submit with the local process? or is it docker only?
| ## `nemo anonymizer preview` | ||
|
|
||
| Both `preview run` and `preview submit` take a spec file matching `PreviewRequest`. | ||
| Both `preview submit` and `preview submit` take a spec file matching `PreviewRequest`. |
There was a problem hiding this comment.
simple search/replace garbles this line
run (local execution) CLI verbs across all servicesrun (local execution) CLI verbs across all services
Summary
Remove the
run(in-process / local execution) CLI verb from all plugin jobs and functions, leavingsubmit(remote platform execution) as the only execution path. This simplifies the CLI surface, removes dual-path maintenance burden, and aligns the developer experience with the platform's remote-first execution model.Changes
Plugin framework (
nemo_platform_plugin)commands.py: Strip therunverb generator for bothNemoJobandNemoFunction; onlysubmit(andexplainfor jobs) are generated.scheduler.py: RemoveNemoJobScheduler.run_local()and all in-process execution machinery.cli.py/cli_state.py/cli_renderer.py: Update type literals, docstrings, and renderer context to reflect submit-only surfaces. Retainis_localandverbfields for third-party renderer compatibility.function.py/job.py/job_context.py/run_dependencies.py: Remove local-run wiring and related helpers.Per-plugin updates
Evaluator.run()SDK method andfs_utils.py; deleteresources.py(local execution resources). Update all evaluator tests.runCLI paths, updatecli.py/inputs.py, and adjust tests.say_hellojob to submit-only; update tests.Documentation (43
.mdxfiles + READMEs + skill files)nemo <plugin> <job> runinstructions withsubmitequivalents.Deleted files
plugins/nemo-evaluator/src/nemo_evaluator/sdk/fs_utils.pyplugins/nemo-safe-synthesizer/tests/e2e/test_local_synthesis.pyplugins/nemo-safe-synthesizer/tests/unit/test_local_run.pyType of Change
Quality Gates
Verification
Signed-off-by:traileruv run pre-commit run -apasses, or any blocked checks are identified below