Skip to content

feat(machine-validation): M1: Add machine validation execution tracking foundation#2651

Open
sunilkumar-nvidia wants to merge 7 commits into
NVIDIA:mainfrom
sunilkumar-nvidia:mv_2.0_M1
Open

feat(machine-validation): M1: Add machine validation execution tracking foundation#2651
sunilkumar-nvidia wants to merge 7 commits into
NVIDIA:mainfrom
sunilkumar-nvidia:mv_2.0_M1

Conversation

@sunilkumar-nvidia

Copy link
Copy Markdown
Contributor

This PR implements the M1 deliverables from the Machine Validation 2.0 design: #2070.

M1 is focused on adding the execution-tracking foundation without changing how Scout runs validation tests today. Scout still runs tests sequentially, but the API now records which tests were selected for a run and tracks each test as a run item with an associated attempt.

Description

What This Adds

  • Stores the selected validation tests for each machine validation run.
  • Creates one run item per selected test.
  • Creates an initial pending attempt for each run item.
  • Updates the run item and attempt when Scout reports the test result.
  • Prevents duplicate terminal result processing if Scout replays the same result.
  • Adds APIs to inspect validation execution progress:
    • ListMachineValidationRunItems
    • GetMachineValidationAttempt

Why This Is Needed

Previously, machine validation only stored legacy result rows after Scout reported results. There was no durable per-test execution plan or attempt-level state to inspect while a validation run was active.

This PR adds that foundation so later Machine Validation 2.0 milestones can build on stable run-item and attempt records.

Compatibility

Existing machine validation behavior is preserved:

  • Legacy machine_validation_results are still written.
  • Existing run status behavior is unchanged.
  • Scout execution remains sequential for M1.

DB Changes

Adds migration:

20260613120000_machine_validation_execution_foundation.sql

The migration creates two new tables:

  • machine_validation_run_items

    • Stores one row per selected validation test in a run.
    • Tracks test metadata, state, ordering, attempt count, timeout, timestamps, skip reason, and failure reason.
    • Linked to machine_validation(id) with ON DELETE CASCADE.
    • Unique key: (run_id, test_id).
  • machine_validation_attempts

    • Stores attempt-level execution details for a run item.
    • Tracks attempt number, state, command, args, image, exit code, failure classification, timestamps, and stdout/stderr summaries.
    • Linked to machine_validation_run_items(id) with ON DELETE CASCADE.
    • Unique key: (run_item_id, attempt_number).

This is an additive schema change. No existing tables are modified or backfilled.

Deployment / Upgrade Notes

Deployments must run the DB migration before relying on the new M1 APIs.

For normal Helm/Kubernetes deployments, this should be handled by the existing nico-api migration job, which runs carbide-api migrate before the API rollout. No manual DB steps are expected as long as the migration job runs successfully.

For manual/local deployments, run the existing migration command before starting the updated API service, for example:

cargo run --package carbide-api --no-default-features -- migrate

or the equivalent deployed binary command:

carbide-api migrate --datastore="<postgres connection string>" 

The migration is safe for rolling upgrades because it only adds new tables. Older code ignores these tables, and newer code continues writing the legacy machine_validation_results rows.

Notes

  • M1 keeps Scout’s current sequential execution model.
  • M1 records one initial attempt per selected test.
  • Result events currently identify tests by test_id; version-distinct attempt reporting would require a future Scout/proto contract change.

Validation

  • cargo test -p carbide-api-core machine_validation --features test-support
  • cargo test -p carbide-machine-validation

Related issues

Related to #454

Type of Change

  • Add - New feature or capability
  • Change - Changes in existing functionality
  • Fix - Bug fixes
  • Remove - Removed features or deprecated functionality
  • Internal - Internal changes (refactoring, tests, docs, etc.)

Breaking Changes

  • This PR contains breaking changes

Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed
  • No testing required (docs, internal refactor, etc.)

Additional Notes

@sunilkumar-nvidia sunilkumar-nvidia self-assigned this Jun 16, 2026
@sunilkumar-nvidia sunilkumar-nvidia requested a review from a team as a code owner June 16, 2026 17:46
@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 21b384dc-8957-4f6f-9c0c-f12505330883

📥 Commits

Reviewing files that changed from the base of the PR and between c991e13 and 3f84702.

📒 Files selected for processing (1)
  • crates/rpc/src/model/machine_validation.rs
🚧 Files skipped from review as they are similar to previous changes (1)
  • crates/rpc/src/model/machine_validation.rs

Summary by CodeRabbit

  • New Features
    • Added new machine validation RPCs to list run item IDs, fetch run items by ID, and retrieve details for a specific validation attempt.
    • Validation runs now support selecting specific tests to include in the run plan.
  • Security
    • Expanded RBAC permissions so only authorized principals can access the new machine-validation run introspection operations.
  • Bug Fixes
    • Improved durable, idempotent persistence of validation results and strengthened validation-run update consistency checks.
  • Tests
    • Added/updated machine validation integration tests covering selected-test behavior, mismatched totals rejection, and idempotent result replay.

Walkthrough

This PR introduces end-to-end execution tracking for machine validation runs. It adds two new typed UUID types, a DB migration creating machine_validation_run_items and machine_validation_attempts tables, a full DB module for run plan materialization and result recording, new gRPC endpoints and proto messages, updated RBAC rules, revised handlers including a write-ahead result persistence path, and a selected_tests propagation from the machine-validation manager.

Changes

Machine Validation Execution Tracking

Layer / File(s) Summary
UUID types, DB schema, and domain models
crates/uuid/src/machine_validation/mod.rs, crates/api-db/migrations/20260613120000_machine_validation_execution_foundation.sql, crates/api-model/src/machine_validation.rs
Defines MachineValidationRunItemId and MachineValidationAttemptId typed UUIDs with marker types and standard tests; creates machine_validation_run_items and machine_validation_attempts tables with CHECK constraints, cascade foreign keys, and indexes enforcing uniqueness on (run_id, test_id) and (run_item_id, attempt_number) respectively; adds MachineValidationRunItemState and MachineValidationAttemptState enums with FromRow implementations mapping DB state columns and optional fields.
DB execution module
crates/api-db/src/lib.rs, crates/api-db/src/machine_validation_execution.rs
Implements materialize_run_plan to create/upsert run items and pending attempts for selected tests; exports query functions for run items/IDs by run and by IDs, and attempt retrieval by ID or run-item; implements record_result write-ahead orchestration that upserts run items, derives attempt state and failure classification, updates pending attempts, inserts terminal attempts with idempotency via ON CONFLICT DO NOTHING, and updates run-item state/metadata only on first terminal.
Proto messages, RPC methods, and build configuration
crates/rpc/proto/forge.proto, crates/rpc/build.rs
Adds three Forge RPC methods: FindMachineValidationRunItemIds, FindMachineValidationRunItemsByIds, GetMachineValidationAttempt; defines all request/response and domain messages with ordering, state, attempt counters, execution metadata, and optional skip/failure reason fields; extends MachineValidationRunRequest with selected_tests field; configures serde::Serialize derives and MachineValidationId extern path for code generation.
RPC model conversions
crates/rpc/src/model/machine_validation.rs
Implements From conversions from MachineValidationRunItem and MachineValidationAttempt into rpc::forge types, mapping UUID/state to strings, numeric fields with unwrap_or(0), and optional timestamps via map(Into::into); adds comprehensive unit tests validating both populated and sparse input handling.
gRPC handlers and persistence flow updates
crates/api-core/src/handlers/machine_validation.rs
Adds handler functions for the three new RPCs: find_machine_validation_run_item_ids, find_machine_validation_run_items_by_ids (with max_find_by_ids enforcement), and get_machine_validation_attempt (parsing attempt UUID); updates persist_validation_result to call db::machine_validation_execution::record_result early and short-circuit on terminal replay (skipping legacy health-report updates); refactors update_machine_validation_run to require validation_id early, convert selected_tests to typed values, validate total matches selected_tests.len() when non-empty, and conditionally materialize the run plan.
RBAC registration and Forge API wiring
crates/api-core/src/auth/internal_rbac_rules.rs, crates/api-core/src/api.rs, crates/api-core/src/machine_validation/mod.rs
Registers RBAC permissions for the three new retrieval operations, granting access only to ForgeAdminCLI and SiteAgent principals; wires corresponding RPC methods in the Api Forge implementation, delegating to the handlers; adds clarifying comments on reconcile_stale_validation return semantics.
selected_tests propagation
crates/machine-validation/src/lib.rs
MachineValidationManager::run now accumulates selected_tests during the allowed-tests filter loop (using reference-based iteration) and assigns the filtered list to run_request.selected_tests before calling update_machine_validation_run.
Integration tests and fixtures
crates/api-core/src/tests/machine_validation.rs, crates/api-core/src/tests/common/api_fixtures/mod.rs
Adds a new integration test exercising selected-test run plan materialization, validating mismatch rejection, verifying single pending run item/attempt creation, driving reboot and validation completion, persisting terminal and replayed results, and confirming idempotency via legacy deduplication and terminal state metadata; updates test fixtures and stale-run reconciliation test to include selected_tests.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant Api as Api (Forge impl)
    participant Handler as handlers/machine_validation
    participant DBExec as machine_validation_execution
    participant DB as PostgreSQL

    rect rgba(30, 100, 200, 0.5)
        Note over Client,DB: update_machine_validation_run with selected_tests
        Client->>Api: UpdateMachineValidationRun(selected_tests)
        Api->>Handler: update_machine_validation_run
        Handler->>DBExec: materialize_run_plan(run_id, context, selected_tests)
        DBExec->>DB: upsert run_items + insert pending attempts
        DB-->>DBExec: ok
        DBExec-->>Handler: ()
        Handler-->>Client: MachineValidationRun
    end

    rect rgba(20, 160, 80, 0.5)
        Note over Client,DB: persist_validation_result write-ahead path
        Client->>Api: PersistMachineValidationResult(result)
        Api->>Handler: persist_validation_result
        Handler->>DBExec: record_result(result)
        DBExec->>DB: upsert run_item, update/insert attempt
        DB-->>DBExec: terminal?
        alt already terminal
            DBExec-->>Handler: false
            Handler-->>Client: early return (no legacy update)
        else new terminal
            DBExec-->>Handler: true
            Handler->>DB: update legacy health-report / result projection
            Handler-->>Client: ok
        end
    end

    rect rgba(180, 60, 20, 0.5)
        Note over Client,DB: ListMachineValidationRunItems / GetMachineValidationAttempt
        Client->>Api: FindMachineValidationRunItemsByIds(run_id)
        Api->>Handler: find_machine_validation_run_items_by_ids
        Handler->>DBExec: find_run_items_by_ids
        DBExec->>DB: SELECT with lateral join for latest attempt_id
        DB-->>Handler: Vec<MachineValidationRunItem>
        Handler-->>Client: MachineValidationRunItemList

        Client->>Api: GetMachineValidationAttempt(attempt_id)
        Api->>Handler: get_machine_validation_attempt
        Handler->>DBExec: find_attempt_by_id
        DBExec->>DB: SELECT from machine_validation_attempts
        DB-->>Handler: MachineValidationAttempt
        Handler-->>Client: MachineValidationAttempt
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 22.41% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the primary change: implementation of M1 machine validation execution tracking foundation.
Description check ✅ Passed The description is comprehensive and directly related to the changeset, providing clear context on objectives, database changes, compatibility considerations, and deployment guidance.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@sunilkumar-nvidia

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (3)
crates/api-model/src/machine_validation.rs (1)

119-149: ⚡ Quick win

Add table-driven tests for the new run-item/attempt state enums.

The new enums introduce string parsing/formatting contracts, but only MachineValidationState currently has scenario-based coverage in this file.

As per coding guidelines, “Prefer table-driven tests for any function that maps inputs to outputs, errors, or other observable results.”

🤖 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 `@crates/api-model/src/machine_validation.rs` around lines 119 - 149, The new
enums MachineValidationRunItemState and MachineValidationAttemptState introduce
string parsing contracts through the EnumString derive macro and string
formatting through the Display trait implementation, but lack test coverage. Add
table-driven tests for both enums to verify that all variants can be correctly
parsed from strings and formatted back to strings using the Display
implementation. Follow the same table-driven test pattern used for
MachineValidationState in the file to ensure comprehensive coverage of the
string conversion contracts for each enum variant.

Source: Coding guidelines

crates/rpc/src/model/machine_validation.rs (1)

168-223: ⚡ Quick win

Add table-driven tests for the new run-item and attempt conversion mappings.

Lines 168-223 add two new field-mapping conversions, but this file’s tests do not currently lock these mappings. Please add table-driven cases for populated and sparse inputs to prevent silent contract drift in RPC serialization.

As per coding guidelines: “Prefer table-driven tests for any function that maps inputs to outputs.”

🤖 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 `@crates/rpc/src/model/machine_validation.rs` around lines 168 - 223, The new
From trait implementations for MachineValidationRunItem and
MachineValidationAttempt (lines 168-223) lack test coverage for their field
mappings. Add table-driven tests that verify the conversions for both
implementations by testing cases with populated and sparse input values,
ensuring each field is correctly mapped to its corresponding RPC output field
and that default values are applied appropriately where needed.

Source: Coding guidelines

crates/machine-validation/src/lib.rs (1)

163-177: ⚡ Quick win

Avoid cloning the full tests vector for selection pass.

Lines 163-177 currently iterate via tests.clone(). Iterate by reference and clone only selected items to reduce per-run allocation/copy overhead.

Suggested fix
-        let mut selected_tests = Vec::new();
-        for test in tests.clone() {
+        let mut selected_tests = Vec::new();
+        for test in &tests {
             if !machine_validation_filter.allowed_tests.is_empty()
                 && !machine_validation_filter
                     .allowed_tests
                     .iter()
                     .any(|t| t.eq_ignore_ascii_case(&test.test_id))
             {
                 continue;
             }
             run_request.total += 1;
             expected_time_duration += test.timeout.unwrap_or(7200);
-            selected_tests.push(test);
+            selected_tests.push(test.clone());
         }
As per coding guidelines: avoid needless `.clone()` and prefer ownership/borrowing choices that minimize cloning.
🤖 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 `@crates/machine-validation/src/lib.rs` around lines 163 - 177, The tests
vector is being cloned entirely at the beginning of the iteration loop, which is
wasteful. Instead of iterating over tests.clone(), iterate by reference using
&tests and only clone individual test items when they are actually selected and
added to the selected_tests vector. Change the for loop to iterate by reference
and modify the selected_tests.push call to clone only the test items that pass
the filter criteria.

Source: Coding guidelines

🤖 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 `@crates/api-core/src/handlers/machine_validation.rs`:
- Around line 829-855: After collecting selected_tests into a vector from
req.selected_tests using ModelMachineValidationTest::try_from, add validation to
ensure that req.total matches the length of the selected_tests vector. If they
do not match, return a CarbideError with a descriptive message (for example,
indicating a mismatch between the total count and the actual number of tests).
This check must occur before calling db::machine_validation::update_run to
prevent inconsistent state between run totals and actual run-item rows.

In `@crates/api-model/src/machine_validation.rs`:
- Around line 226-227: In the state field assignment where
MachineValidationRunItemState is parsed from a database row, replace the
.unwrap_or_default() call with the ? operator to properly propagate parsing
errors instead of silently defaulting to Pending when unknown state values are
encountered. This change must be applied at two locations: lines 226-227 in the
main state assignment and lines 266-267 in the sibling location where the same
pattern appears. By removing the unwrap_or_default() and using ? instead, row
decoding will fail immediately when encountering invalid or drifted state values
rather than masking them.
- Line 220: The current_attempt_id field decoding uses .ok().flatten() which
silently converts SQL decode errors into None, hiding potential schema/query
regressions and data corruption issues. Replace the .ok().flatten() pattern on
the row.try_get("current_attempt_id") call with proper error handling that
doesn't swallow decode failures. This should use the appropriate error
propagation or optional handling method (such as .optional() if available in the
database driver, or .? operator) to allow legitimate None values while
explicitly handling actual decoding errors.

In `@crates/rpc/proto/forge.proto`:
- Around line 609-610: The ListMachineValidationRunItems RPC returns an
unbounded repeated payload which doesn't follow the paginated list pattern
required by the codebase and will not scale for large validation histories.
Replace this single RPC with two separate RPC calls:
FindMachineValidationRunItemIds which returns a paginated list of IDs with
standard pagination fields, and FindMachineValidationRunItemsByIds which takes a
list of IDs and returns the full MachineValidationRunItem entities. Keep the
entity details in the by-IDs call response while the IDs call focuses on
pagination-friendly ID retrieval.

---

Nitpick comments:
In `@crates/api-model/src/machine_validation.rs`:
- Around line 119-149: The new enums MachineValidationRunItemState and
MachineValidationAttemptState introduce string parsing contracts through the
EnumString derive macro and string formatting through the Display trait
implementation, but lack test coverage. Add table-driven tests for both enums to
verify that all variants can be correctly parsed from strings and formatted back
to strings using the Display implementation. Follow the same table-driven test
pattern used for MachineValidationState in the file to ensure comprehensive
coverage of the string conversion contracts for each enum variant.

In `@crates/machine-validation/src/lib.rs`:
- Around line 163-177: The tests vector is being cloned entirely at the
beginning of the iteration loop, which is wasteful. Instead of iterating over
tests.clone(), iterate by reference using &tests and only clone individual test
items when they are actually selected and added to the selected_tests vector.
Change the for loop to iterate by reference and modify the selected_tests.push
call to clone only the test items that pass the filter criteria.

In `@crates/rpc/src/model/machine_validation.rs`:
- Around line 168-223: The new From trait implementations for
MachineValidationRunItem and MachineValidationAttempt (lines 168-223) lack test
coverage for their field mappings. Add table-driven tests that verify the
conversions for both implementations by testing cases with populated and sparse
input values, ensuring each field is correctly mapped to its corresponding RPC
output field and that default values are applied appropriately where needed.
🪄 Autofix (Beta)

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: 2649fea8-3a22-4434-863c-2a6cdd8f0461

📥 Commits

Reviewing files that changed from the base of the PR and between fa88401 and f588bd7.

📒 Files selected for processing (16)
  • crates/api-core/src/api.rs
  • crates/api-core/src/auth/internal_rbac_rules.rs
  • crates/api-core/src/handlers/machine_validation.rs
  • crates/api-core/src/machine_validation/mod.rs
  • crates/api-core/src/tests/common/api_fixtures/mod.rs
  • crates/api-core/src/tests/machine_validation.rs
  • crates/api-db/migrations/20260613120000_machine_validation_execution_foundation.sql
  • crates/api-db/src/lib.rs
  • crates/api-db/src/machine_validation_execution.rs
  • crates/api-model/src/machine_validation.rs
  • crates/machine-controller/src/handler/machine_validation.rs
  • crates/machine-validation/src/lib.rs
  • crates/rpc/build.rs
  • crates/rpc/proto/forge.proto
  • crates/rpc/src/model/machine_validation.rs
  • crates/uuid/src/machine_validation/mod.rs

Comment thread crates/api-core/src/handlers/machine_validation.rs
Comment thread crates/api-model/src/machine_validation.rs Outdated
Comment thread crates/api-model/src/machine_validation.rs Outdated
Comment thread crates/rpc/proto/forge.proto Outdated
@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown

🔍 Container Scan Summary

Service Total Critical High Medium Low Other
boot-artifacts-aarch64 3 0 0 3 0 0
boot-artifacts-x86_64 3 0 0 3 0 0
forge-admin-cli-x86_64 245 5 22 103 6 109
machine-validation-runner 675 31 182 255 37 170
machine_validation 675 31 182 255 37 170
nvmetal-carbide 675 31 182 255 37 170
TOTAL 2276 98 568 874 117 619

Per-CVE detail lives in the per-service grype-* artifacts (JSON + SARIF). Severity counts only — no CVE IDs published here.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
crates/api-model/src/machine_validation.rs (1)

235-241: 💤 Low value

Consider simplifying current_attempt_id decoding if the column is always present.

The ColumnNotFound branch provides defensive handling for queries that might omit current_attempt_id, but the DB module query (context snippet 1) always includes this column via LEFT JOIN. If all queries consistently select this column, the match simplifies to:

current_attempt_id: row.try_get("current_attempt_id")?,

The existing defensive pattern is harmless but adds cognitive load. If queries vary and some omit the column, document that rationale with a 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 `@crates/api-model/src/machine_validation.rs` around lines 235 - 241, The
current_attempt_id field in the match statement has defensive handling for
ColumnNotFound errors, but the DB module query always includes this column via
LEFT JOIN. Verify that all queries using this deserialization code consistently
select the current_attempt_id column. If they do, simplify the match statement
by removing the ColumnNotFound branch and replacing the entire match block with
a simple row.try_get call using the ? operator. If queries vary and some omit
the column, keep the existing pattern but add a comment explaining the defensive
rationale.
🤖 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.

Nitpick comments:
In `@crates/api-model/src/machine_validation.rs`:
- Around line 235-241: The current_attempt_id field in the match statement has
defensive handling for ColumnNotFound errors, but the DB module query always
includes this column via LEFT JOIN. Verify that all queries using this
deserialization code consistently select the current_attempt_id column. If they
do, simplify the match statement by removing the ColumnNotFound branch and
replacing the entire match block with a simple row.try_get call using the ?
operator. If queries vary and some omit the column, keep the existing pattern
but add a comment explaining the defensive rationale.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: b51a2949-61ef-4b9b-81ae-ea8c0b7ae557

📥 Commits

Reviewing files that changed from the base of the PR and between f588bd7 and c991e13.

📒 Files selected for processing (12)
  • crates/api-core/src/api.rs
  • crates/api-core/src/auth/internal_rbac_rules.rs
  • crates/api-core/src/handlers/machine_validation.rs
  • crates/api-core/src/tests/machine_validation.rs
  • crates/api-db/src/lib.rs
  • crates/api-db/src/machine_validation_execution.rs
  • crates/api-model/src/machine_validation.rs
  • crates/machine-validation/src/lib.rs
  • crates/rpc/build.rs
  • crates/rpc/proto/forge.proto
  • crates/rpc/src/model/machine_validation.rs
  • crates/uuid/src/machine_validation/mod.rs
🚧 Files skipped from review as they are similar to previous changes (9)
  • crates/api-db/src/lib.rs
  • crates/rpc/src/model/machine_validation.rs
  • crates/machine-validation/src/lib.rs
  • crates/rpc/build.rs
  • crates/uuid/src/machine_validation/mod.rs
  • crates/rpc/proto/forge.proto
  • crates/api-core/src/handlers/machine_validation.rs
  • crates/api-core/src/tests/machine_validation.rs
  • crates/api-db/src/machine_validation_execution.rs

@sunilkumar-nvidia sunilkumar-nvidia enabled auto-merge (squash) June 17, 2026 15:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant