Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
98f8ca2
fix(deepagents): accept absolute paths inside the shell workspace
AjayThorve Oct 27, 2026
8c69085
fix(mini-swe-agent): install the NVIDIA provider runtime dependency
AjayThorve Oct 27, 2026
c00da82
fix(nooa): install the NVIDIA provider runtime dependency
AjayThorve Oct 27, 2026
a8194f3
fix(pi): constrain the compatible SDK package set
AjayThorve Oct 27, 2026
ab457c6
fix(strands): declare output token reasoning inclusion
AjayThorve Oct 27, 2026
116712a
fix(harbor): separate provider selection from served model IDs
AjayThorve Oct 27, 2026
d3da47e
fix(adapters): constrain incompatible LiteLLM tool dispatch
AjayThorve Oct 27, 2026
de182fb
test(harbor): include the provider override in the options schema
AjayThorve Oct 27, 2026
868983a
fix(mini-swe-agent): select the NVIDIA LiteLLM dispatch provider
AjayThorve Oct 27, 2026
8bdf2ee
fix(qwen): retain container-aware Node memory limits
AjayThorve Oct 27, 2026
330e437
test: quote Deep Agents workspace paths on Windows
AjayThorve Oct 27, 2026
4374239
fix(deepagents): preserve file-tool path round trips
AjayThorve Oct 28, 2026
796c81c
fix(deepagents): retain tool-compatible paths on Windows
AjayThorve Oct 28, 2026
6305ffb
docs(kilo): clarify background process lifetime in Harbor
AjayThorve Oct 28, 2026
83c5628
fix: preserve Deep Agents inclusive invocation usage
AjayThorve Oct 28, 2026
d240782
fix: allow explicitly unpriced Mini-SWE model execution
AjayThorve Oct 28, 2026
e29e907
fix: forward adapter model settings through Harbor
AjayThorve Oct 28, 2026
f983b96
fix: route OpenHands NVIDIA models through LiteLLM NIM provider
AjayThorve Oct 28, 2026
6b04d4e
fix: report invocation-local Pi token usage
AjayThorve Oct 28, 2026
92e9232
fix: preserve Qwen inclusive invocation usage
AjayThorve Oct 28, 2026
37adab6
fix: request and qualify OpenClaw gateway usage observations
AjayThorve Oct 28, 2026
ee5d504
fix: preserve NOOA observed inclusive token totals
AjayThorve Oct 28, 2026
ff0bc13
test: align harness E2E accounting expectations
AjayThorve Oct 28, 2026
1be9c57
fix: preserve unknown OpenHands usage and pricing evidence
AjayThorve Oct 28, 2026
44330e2
fix: declare OpenHands inclusive prompt token accounting
AjayThorve Oct 28, 2026
ab26988
test: scope pinned NOOA SDK regression to supported platforms
AjayThorve Oct 28, 2026
92ed5c1
test: add single-task Harbor qualification skill
AjayThorve Oct 27, 2026
f382434
test: harden Harbor qualification reports
AjayThorve Oct 27, 2026
989dcf0
test: retain redaction of cloud credential identifiers
AjayThorve Oct 27, 2026
38676b1
test: preserve structured Harbor trial artifacts during redaction
AjayThorve Oct 27, 2026
4bd26db
test: preserve Unicode within Harbor JSONL records
AjayThorve Oct 27, 2026
f02db7d
test: scope Harbor qualification to standalone integration checks
AjayThorve Oct 27, 2026
ee8c382
test: support explicit model providers in Harbor qualification
AjayThorve Oct 27, 2026
e56f15c
test: project model settings and turn bounds in Harbor gate
AjayThorve Oct 28, 2026
dff63f2
test: correct Harbor preparation and prerequisite reports
AjayThorve Oct 28, 2026
68c3fa3
test: keep OpenHands dependencies stable during baseline task setup
AjayThorve Oct 28, 2026
98094de
test: separate Harbor integration from task quality
AjayThorve Oct 28, 2026
acc909a
test: limit Harbor identity checks to Fabric and harnesses
AjayThorve Oct 28, 2026
0002ab1
test: prepare Droid BYOK and remote HTTP gate profiles
AjayThorve Oct 29, 2026
0130823
test: allow compatible task Python and pinned Hermes source
AjayThorve Oct 29, 2026
abd6080
test: require native Kiro credentials in Harbor qualification
AjayThorve Oct 29, 2026
203fb17
test: qualify registered workflows through Harbor
AjayThorve Oct 29, 2026
17149a5
docs: guide interactive Harbor qualification setup
AjayThorve Oct 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .agents/skills/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ This table lists the maintainer skills in this set and what each covers.
| [`contribute-docs`](contribute-docs/SKILL.md) | Change documentation or examples in step with public behavior. |
| [`review-doc-style`](review-doc-style/SKILL.md) | Review documentation and public text for NVIDIA technical-writing style. |
| [`validate-change`](validate-change/SKILL.md) | Choose and run the right validation matrix for a change. |
| [`qualify-harbor`](qualify-harbor/SKILL.md) | Guide shared-BYOM or individual-provider setup, then run one shared Terminal-Bench task across the adapter catalog with isolated installs and retained evidence. |
| [`python-tests`](python-tests/SKILL.md) | Write Python tests for NeMo Fabric. |
| [`maintain-ci`](maintain-ci/SKILL.md) | Maintain GitHub Actions workflows with pinned actions and local validation. |
| [`maintain-packaging`](maintain-packaging/SKILL.md) | Maintain package metadata, native artifacts, lockfiles, and release surfaces. |
Expand Down
7 changes: 7 additions & 0 deletions .agents/skills/maintain-packaging/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,13 @@ in parity. The task uses `fabric-agent-ctl` from the Python SDK.

Run `just adapter-catalog`, `just check-adapter-catalog`, and `uv build --wheel --sdist --out-dir dist sdk/python/nemo-fabric-adapter-catalog` when maintaining the bundle. `just set-version` refreshes it after stamping Python and TypeScript versions. Python tests and wheel builds reject stale bundles; wheels and source distributions must build independently of the adapter source tree. Keep these maintainer details out of the PyPI-facing package README.

### Pi SDK Compatibility

Keep Pi’s optional peer constraints, development pins, consumer install command,
and harness-install diagnostic aligned across all four SDK packages, including
`pi-codemode`. Verify imports in a fresh consumer install from packed artifacts;
the workspace lockfile can hide incompatible transitive SDK resolutions.

### Select Dependencies

Treat every direct dependency as a long-lived API, supply-chain, and licensing
Expand Down
36 changes: 36 additions & 0 deletions .agents/skills/qualify-harbor/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
name: qualify-harbor
description: Guide interactive model and credential setup, then qualify NeMo Fabric across its adapter catalog or a selected subset through Harbor and real harnesses. Use for reproducible integration checks and all-harness failure triage.
license: Apache-2.0
---

# Qualify NVIDIA NeMo Fabric With Harbor

Use the runnable gate in this directory to test Harbor → NeMo Fabric → harness → inference → result → verifier. Harbor owns containers, task lifecycle, and scoring. The gate runs exactly one shared Terminal-Bench task across the catalog, builds isolated package installs on that task environment, and retains a complete adapter denominator. It does not install or manage inference servers.

## Start With A Short Setup Conversation

Use the user's existing choices and authorization. When starting a new run without a configured plan, ask how they want to supply models:

- **One shared BYOM endpoint** for every selected adapter that supports its API and model.
- **Individual provider credentials**, grouping adapters that can share the same provider/key reference.

Offer a mix when the user wants coverage beyond the shared endpoint’s compatible subset; otherwise record those exceptions as skipped. If the user already chose a mode or supplied a plan, continue from it; do not restart the questionnaire. Ask only for missing information, in small steps, using the available question tool or a concise chat question.

Read [interactive setup](references/setup.md) for the conversation, credential handling, compatibility decisions, and coverage preview. The agent owns plan construction and adapter-specific configuration; users should not have to edit JSON rows or discover provider flags themselves.

Before builds or model calls, show which adapters are ready, need setup, or will be skipped, with model/provider and credential **variable names only**. Resolve outstanding scope or cost decisions on that concrete preview, reusing any authorization already given. A shared BYOM choice never implies universal compatibility. Kiro requires its native provider and `KIRO_API_KEY`; BYOM is unsupported and missing credentials mean skipped execution, retained in the catalog denominator.

## Execute The Saved Plan

Read [the runbook](references/runbook.md) for reproducible commands, preparation profiles, and failure triage. The conversational setup produces the same noninteractive plan used by these commands.

1. Identify the exact package version or source commit and compatible Harbor package version. Use a disposable checkout of that version with a fresh catalog (`just check-adapter-catalog`). Do not use a developer's ambient editable environment as reproducible installation evidence.
2. Establish inference prerequisites before running. A local checkpoint must already be served through a compatible HTTP API. Verify the served model ID, container reachability, protocol, authentication, and available resources. Use the same served model for compatible harnesses; record provider restrictions rather than assuming universal compatibility. Do not stop existing services, take allocated GPUs, mount credential directories, or publish new network listeners.
3. Select one task directory, not a benchmark dataset. The runbook pins TB2 `kv-store-grpc` as a comprehensive baseline. Generate and inspect the plan; its task hash covers the instruction, environment, and unchanged upstream verifier. It includes every catalog adapter, exact package/descriptor metadata, settings, estimated provider cost, and capability coverage. Resolve prerequisites by configuring individual rows and dedicated task images. Registered workflows require explicit `workflow_target_id` and optional `workflow_settings` with the SDK bridge; validate catalog binding, both descriptor fingerprints, settings transport, and installed target provenance. Keep blocked, unsupported, and excluded rows in the plan with reasons.
4. Prepare isolated host and task installs, then run the selected matrix. Use `--only` for a developer subset; its report cannot establish a full-catalog pass. The default is one trial at a time, one attempt, bounded runtime/build deadlines, and no automatic retries. Preserve each failure before reproducing it in a new output directory.
5. Use compatible host/task Python versions, selecting `task_python` per row when needed. Keep Fabric packages noneditable; allow upstream-supported pinned Hermes source installs with verified clean Git provenance. Do not require the task base image’s Python version for every harness.
6. Inspect `report.json`, `summary.md`, installation logs, and trial artifacts. The pass criterion is Harbor → Fabric → harness → inference → result integration: lifecycle, selection/fingerprint, package identity, result/accounting transport, requested telemetry, and cleanup. A completed verifier's task reward is informational; reward zero can pass integration. Harness usage availability is also informational: retain unknown counters and scope limitations without inventing totals. Accounting that changes in transport remains a failure. Reproduce findings and classify them before attributing a regression. Fix gate defects narrowly; report unrelated product defects separately.
7. Share the sanitized report and exact evidence locations with the reviewer. A full pass requires every catalog entry to pass integration. Missing credentials, incompatible providers, install failures, missing or invalid verifier evidence, timeout, cancellation, and skipped coverage remain nonpasses. Model task quality and documented harness capabilities do not fail an otherwise successful round trip.

One shared TB2 task is a scored integration check, not a full benchmark or proof of all-feature equivalence. MCP, skills, ATIF/export, and subagent paths require their own evidence where supported. The report labels untested paths. Use the existing Harbor integration suites for deterministic lifecycle, error, credential, MCP, skills, and telemetry coverage; record any live capability tests separately. Never infer a capability pass from one successful task.
29 changes: 29 additions & 0 deletions .agents/skills/qualify-harbor/assets/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

ARG TASK_IMAGE=python:3.12-slim-bookworm
FROM ${TASK_IMAGE}
COPY --from=node:24.16.0-bookworm-slim /usr/local /usr/local
RUN apt-get update && apt-get install -y --no-install-recommends build-essential curl git pkg-config libssl-dev unzip ripgrep \
&& rm -rf /var/lib/apt/lists/*
ENV CARGO_BUILD_JOBS=4
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/rustup.sh \
&& sh /tmp/rustup.sh -y --profile minimal --default-toolchain 1.94.0 && rm /tmp/rustup.sh
ENV PATH=/root/.cargo/bin:/opt/harness/node_modules/.bin:$PATH
COPY source /src
ARG FABRIC_VERSION
ARG INSTALL_MODE
RUN mkdir /wheels && if [ "$INSTALL_MODE" = source ]; then \
pip wheel --no-deps --wheel-dir /wheels /src/adapter-contract/python \
/src/sdk/python/nemo-fabric-runtime /src/sdk/python/nemo-fabric \
/src/sdk/python/nemo-fabric-adapter-catalog \
/src/adapters/python/*/; \
else pip download --only-binary=:all: --no-deps --dest /wheels \
"nemo-fabric==$FABRIC_VERSION" "nemo-fabric-runtime==$FABRIC_VERSION" \
"nemo-fabric-adapter-catalog==$FABRIC_VERSION" \
"nemo-fabric-adapter-contract==$FABRIC_VERSION" "nemo-fabric-adapters-common==$FABRIC_VERSION"; fi
RUN pip install /wheels/nemo_fabric-*.whl /wheels/nemo_fabric_runtime-*.whl \
/wheels/nemo_fabric_adapter_catalog-*.whl /wheels/nemo_fabric_adapter_contract-*.whl \
/wheels/nemo_fabric_adapters_common-*.whl
COPY identity.py /qualification/identity.py
WORKDIR /app
Loading
Loading