Skip to content

Add VRP dimension developer skill#1233

Open
rg20 wants to merge 1 commit into
NVIDIA:mainfrom
rg20:vrp-developer-skill
Open

Add VRP dimension developer skill#1233
rg20 wants to merge 1 commit into
NVIDIA:mainfrom
rg20:vrp-developer-skill

Conversation

@rg20
Copy link
Copy Markdown
Contributor

@rg20 rg20 commented May 18, 2026

Description

Issue

Checklist

  • I am familiar with the Contributing Guidelines.
  • Testing
    • New or existing tests cover these changes
    • Added tests
    • Created an issue to follow-up
    • NA
  • Documentation
    • The documentation is up to date with these changes
    • Added new documentation
    • NA

@rg20 rg20 requested a review from a team as a code owner May 18, 2026 13:49
@rg20 rg20 requested a review from rgsl888prabhu May 18, 2026 13:49
@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot Bot commented May 18, 2026

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@rg20 rg20 added Agentic This label is used to track agentic and skill related issues non-breaking Introduces a non-breaking change labels May 18, 2026
@rg20 rg20 added this to the 26.06 milestone May 18, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 18, 2026

Review Change Stack

📝 Walkthrough

Walkthrough

This PR adds developer-focused documentation for implementing VRP (Vehicle Routing Problem) dimension logic in cuOpt. A new comprehensive guide (vrp_skills.md) defines dimension propagation contracts, interface requirements, and testing plans. The guide is integrated into existing skill documentation and agent references.

Changes

VRP Dimension Implementation Guide

Layer / File(s) Summary
VRP dimension developer guide and integration
skills/cuopt-developer/vrp_skills.md, skills/cuopt-developer/SKILL.md, AGENTS.md
Created vrp_skills.md defining forward/backward propagation model, combine invariant, required dimension interface, implementation recipe, wiring checklist across routing helpers and device code, and comprehensive C++/Python testing plan. Integrated with new subsection in SKILL.md and navigation reference in AGENTS.md.

🎯 1 (Trivial) | ⏱️ ~3 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request description is completely empty except for the template structure, providing no meaningful information about the VRP dimension developer skill additions. Add a clear description explaining what VRP dimension developer skill documentation is being added and why, so reviewers understand the purpose of the changes.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: adding VRP dimension developer documentation to help guide developers implementing VRP dimension logic.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
skills/cuopt-developer/vrp_skills.md (2)

20-22: ⚡ Quick win

Consider adding language specifiers to code blocks.

The pseudo-code blocks at lines 20-22, 52-57, 64-67, 71-74, and 78-81 lack language specifiers. Adding identifiers (e.g., pseudo, python, or cpp) improves syntax highlighting and rendering in documentation viewers.

📝 Example fix for the combine formula block
-```
+```pseudo
 combine(k, k+1) = fwd_excess[k] + bwd_excess[k+1] - excess(fwd_state[k])
</details>


Also applies to: 52-57, 64-67, 71-74, 78-81

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @skills/cuopt-developer/vrp_skills.md around lines 20 - 22, Add explicit
language specifiers to each pseudo-code fenced block (e.g., ```pseudo or

update the blocks that contain the formula "combine(k, k+1) = fwd_excess[k] +
bwd_excess[k+1] - excess(fwd_state[k])" and the other pseudo-code blocks
referenced at lines 52-57, 64-67, 71-74, and 78-81 by prefixing their opening
fences with a language token (pseudo, python, or cpp) while leaving the block
contents unchanged.

24-36: ⚡ Quick win

Add blank lines around the interface table.

Markdown best practices require blank lines before and after tables for consistent rendering across parsers.

📝 Proposed fix
 ### Required interface for every dimension
+
 | Method | Description |
 |--------|-------------|
 | `calculate_forward(next)` | Propagate fwd state from `this` to `next`; update `next.fwd_excess` |
+
 ---
🤖 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 `@skills/cuopt-developer/vrp_skills.md` around lines 24 - 36, Add a blank line
immediately before the table that starts with "### Required interface for every
dimension" and another blank line immediately after the table so Markdown
renders it consistently; locate the table by the method names listed
(calculate_forward, calculate_backward, combine, get_cost, compute_cost,
forward_excess, backward_excess, forward_feasible, backward_feasible) and insert
a single empty line above the "### Required interface for every dimension"
heading (or between the previous paragraph and the heading) and one empty line
after the table before the following content/heading.
🤖 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 `@skills/cuopt-developer/vrp_skills.md`:
- Around line 20-22: Add explicit language specifiers to each pseudo-code fenced
block (e.g., ```pseudo or ```python) so documentation renderers apply proper
highlighting; specifically update the blocks that contain the formula
"combine(k, k+1) = fwd_excess[k] + bwd_excess[k+1] - excess(fwd_state[k])" and
the other pseudo-code blocks referenced at lines 52-57, 64-67, 71-74, and 78-81
by prefixing their opening fences with a language token (pseudo, python, or cpp)
while leaving the block contents unchanged.
- Around line 24-36: Add a blank line immediately before the table that starts
with "### Required interface for every dimension" and another blank line
immediately after the table so Markdown renders it consistently; locate the
table by the method names listed (calculate_forward, calculate_backward,
combine, get_cost, compute_cost, forward_excess, backward_excess,
forward_feasible, backward_feasible) and insert a single empty line above the
"### Required interface for every dimension" heading (or between the previous
paragraph and the heading) and one empty line after the table before the
following content/heading.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 60de93ad-54b0-420b-8c46-d19b726de6b6

📥 Commits

Reviewing files that changed from the base of the PR and between 3e60a3a and 16277d2.

📒 Files selected for processing (3)
  • AGENTS.md
  • skills/cuopt-developer/SKILL.md
  • skills/cuopt-developer/vrp_skills.md

@rg20 rg20 added the doc Improvements or additions to documentation label May 18, 2026
Copy link
Copy Markdown
Collaborator

@rgsl888prabhu rgsl888prabhu left a comment

Choose a reason for hiding this comment

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

Awesome @rg20, first developer skill for core work.

I would suggest review from @hlinsen and @akifcorduk as well for any correctness or improvments.

@@ -0,0 +1,191 @@
# cuOpt VRP Dimension Developer Skills
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Lets move this file under reference/

Comment thread AGENTS.md
### Rules
- `skills/cuopt-user-rules/` — Base rules for end users calling cuOpt (routing, LP, MILP, QP, install, server). Not for cuOpt internals — see `skills/cuopt-developer/`. Read first for user-facing tasks; choose skills from the index below by task and interface.
- `skills/cuopt-developer/` — Modify, build, test, debug, and contribute to cuOpt internals (C++/CUDA, Python, server, CI). Use for solver internals, PRs, DCO, and code conventions.
- `skills/cuopt-developer/` — Modify, build, test, debug, and contribute to cuOpt internals (C++/CUDA, Python, server, CI). Use for solver internals, PRs, DCO, and code conventions. For **VRP dimension** work (combine invariants, fwd/bwd propagation, new constraints/objectives in the routing engine), read **`skills/cuopt-developer/vrp_skills.md`** in addition to `SKILL.md`.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Lets update this accordingly


---

## Skill 1: `cuopt-dimension-architecture`
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Lets remove Skill X notation, and just use detail, refer to skills/cuopt-developer/resources/build_and_test.md

Suggested change
## Skill 1: `cuopt-dimension-architecture`
## cuopt-dimension-architecture

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Same for all other instances


**When to use**: After writing node/route logic, to ensure the dimension is fully integrated into the framework.

### Files to create
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Did it needed specific instruction to follow this structure ?


**When to use**: After implementing a new dimension, to write tests that validate correctness end-to-end.

### C++ unit tests (`cpp/tests/routing/`)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Would C++ test structure and expectation be same as python, may be can we collapse it in to 1 ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Agentic This label is used to track agentic and skill related issues doc Improvements or additions to documentation non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants