Skip to content

chore(intake): Remove unused intake surface area#85

Merged
BrianNewsom merged 7 commits into
mainfrom
brnewsom/fp-167-remove-unused-intake-surface-area-3
May 29, 2026
Merged

chore(intake): Remove unused intake surface area#85
BrianNewsom merged 7 commits into
mainfrom
brnewsom/fp-167-remove-unused-intake-surface-area-3

Conversation

@BrianNewsom
Copy link
Copy Markdown
Contributor

@BrianNewsom BrianNewsom commented May 28, 2026

Summary by CodeRabbit

  • Refactor

    • Intake refocused on telemetry: spans, traces, annotations, and evaluator-results; legacy apps/entries/tasks/exports surfaces and related CLI commands removed.
  • New Features

    • OTLP/trace ingest and ClickHouse-backed span/trace read APIs added; stricter OpenAI-style chat-completions ingest validation.
  • Documentation

    • README rewritten with v2 workspace endpoints, local dev startup steps, OTLP example, and OpenAPI refresh guidance.
  • Tests

    • Tests updated to reflect span-era API surface and revised readiness/bootstrap behavior.

Review Change Stack

@BrianNewsom BrianNewsom requested review from a team as code owners May 28, 2026 15:58
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 28, 2026

Documentation preview is ready

Preview: https://nvidia-nemo.github.io/nemo-platform/pr-preview/pr-85/pr-85/

Built from 0accd95 in workflow run.

This preview is deployed from this PR branch, updates when docs changes are pushed, and will be removed when the PR closes.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 28, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

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: 0143118c-1375-4254-afdf-8da0bb6f50c4

📥 Commits

Reviewing files that changed from the base of the PR and between 5a33433 and 0accd95.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • packages/nemo_platform/pyproject.toml

📝 Walkthrough

Walkthrough

Refactors Intake into a ClickHouse-backed telemetry ingest/read service (spans/traces/annotations/evaluator results). Removes legacy v1 Apps/Tasks/Entries/Exports code, migrations, export/datastore utilities, and many v1 tests/scripts. Updates config, README, chat-completions ingest models, CLI wiring, OpenAPI, and auth mappings.

Changes

Intake Service v1-to-Telemetry Transition

Layer / File(s) Summary
Docs & dependency updates
services/intake/README.md, services/intake/pyproject.toml, packages/nemo_platform/pyproject.toml, docs/cli/reference.md
README rewritten for ClickHouse/OpenTelemetry; pyproject description and dependencies updated (pydantic/pydantic-settings moved); dev dependency group reshaped; CLI docs sort-option ordering adjusted.
Config & service wiring
services/intake/src/nmp/intake/config.py, services/intake/src/nmp/intake/service.py
IntakeConfig.datastore_url removed; clickhouse_config added; service routers drop Apps/Tasks/Entries/Exports and keep ClickHouse-backed span/trace/evaluator/ingest routers; startup ClickHouse-init warning preserved.
Health endpoint simplification
services/intake/src/nmp/intake/api/v2/health/*
Readiness endpoint no longer injects EntityClient or checks entity-store connectivity; returns constant ready payload; related imports/headers trimmed.
Chat Completions ingest models
services/intake/src/nmp/intake/spans/ingest/chat_completions.py, packages/.../cli/commands/api/intake/ingest/chat_completions.py
Adds ChatMessageRole and strict CapturedChatCompletionsRequest/Response models; response validator enforces exactly one of choices or error; ingest request typing and CLI help text updated.
Legacy utilities & header cleanup
services/intake/src/nmp/intake/app/utils/*, services/intake/scripts/*, services/intake/alembic/*, module headers
Removed deprecated DataStoreClient/export helpers, legacy scripts and Alembic artifacts, and cleared several module/package headers.
Tests: OpenAPI & ClickHouse readiness
services/intake/tests/integration/test_intake.py, services/intake/tests/integration/spans/test_clickhouse_bootstrap.py, services/intake/tests/test_clickhouse_startup.py
OpenAPI tests now assert span-era routes exist and legacy routes are absent; ClickHouse startup/readiness tests rewritten to use IntakeService lifecycle and updated assertions/log checks.
CLI wiring & packaging
packages/nemo_platform_ext/src/.../cli/commands/api/intake/*, packages/nemo_platform_ext/src/.../cli/commands/api/models.py, packages/nemo_platform_ext/src/.../cli/commands/api/projects.py
Removed CLI subcommands for apps/entries/exports; intake CLI mounts annotations and evaluator-results only in shown region; reorder of Literal sort-option values.
Static authz mapping cleanup
services/core/auth/src/nmp/core/auth/assets/static-authz.yaml, services/core/auth/tests/test_embedded_pdp.py, docs/auth/authorization/permissions-reference.md
Pruned static authz entries and endpoint mappings for legacy intake APIs; updated Viewer/Editor role permissions and auth tests to focus on spans, annotations, and ingest scoping.

Possibly related PRs

Suggested reviewers

  • shanaiabuggy
  • mckornfield
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 34.78% 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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Title clearly summarizes the primary change: removing deprecated/unused intake API surface area (apps, entries, exports, tasks endpoints and related infrastructure).
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
  • Commit unit tests in branch brnewsom/fp-167-remove-unused-intake-surface-area-3

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.

Actionable comments posted: 1

🧹 Nitpick comments (5)
services/intake/README.md (4)

81-85: ⚡ Quick win

Add a Next Steps section with cross-links.

End the page with links to related docs (API reference, ingestion guides, troubleshooting, testing).

As per coding guidelines, "Include 'Next Steps' section at the end with cross-links to related documentation content."

🤖 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 `@services/intake/README.md` around lines 81 - 85, Add a "Next Steps" section
at the end of the README.md (after the "Generated API Artifacts" paragraph) that
provides cross-links to related documentation: an API reference (link to the
Intake OpenAPI or SDK docs), ingestion guides (how to submit data),
troubleshooting (common errors and fixes), and testing (how to run
local/integration tests); ensure each bullet has a clear label and an internal
or external hyperlink so readers can jump directly to those resources.

7-85: 🏗️ Heavy lift

Split this page into one Diataxis quadrant.

The page mixes reference (endpoint list), how-to (local run/ingest), and testing guidance. Keep one quadrant per page and cross-link to others.

As per coding guidelines, "Each documentation page should fit ONE Diataxis quadrant; do not mix tutorials with reference tables or how-tos with architecture explanations; use cross-links instead."

🤖 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 `@services/intake/README.md` around lines 7 - 85, The README mixes multiple
Diataxis quadrants; split the content by extracting each top-level section into
its own page (keep "API Surface" as the reference page listing endpoints, move
"Local Development" into a how-to/run page, move "Testing" into a testing guide,
and keep "Generated API Artifacts" as a developer/reference note), update this
README to be only one quadrant (select which quadrant you want it to be—e.g.,
Reference with just the endpoint list), and add cross-links from the retained
headings ("API Surface", "Local Development", "Testing", "Generated API
Artifacts") to the new pages; ensure internal links are added where examples
(e.g., send_otel_sample.py, run_clickhouse.sh) are referenced and update TOC or
index if present.

25-56: ⚡ Quick win

Add a prerequisites section before the first command.

List required tools/services (e.g., uv, Docker, ClickHouse script prerequisites, auth/entities services) before execution steps.

As per coding guidelines, "Always list prerequisites at the top of documentation pages before other content."

🤖 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 `@services/intake/README.md` around lines 25 - 56, Add a "Prerequisites"
section at the top of the Local Development steps (before the first shell
command) that lists required tools and services: the `uv` CLI, Docker, the
ClickHouse run script `services/intake/scripts/spans/run_clickhouse.sh` (and any
Docker permissions), and the auth/entities services required to start Intake;
mention that tests rely on shared platform helpers and the recommendation to use
the repo root `uv` environment rather than package-scoped `uv run --package ...`
commands (so callers know to use the `uv run nemo services run` invocation and
the example sender `uv run services/intake/examples/send_otel_sample.py`).

46-56: ⚡ Quick win

Provide SDK and CLI examples as parallel alternatives.

The ingest/read examples are CLI-only. Add a Python SDK variant and present both in a tab set.

As per coding guidelines, "Provide both Python SDK and CLI examples in tab-sets for consistency and to support multiple user workflows."

🤖 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 `@services/intake/README.md` around lines 46 - 56, Update the README.md snippet
to present both Python SDK and CLI examples as parallel alternatives in a tab
set: create two tabs (e.g., "Python SDK" and "CLI"), move the existing curl
command into the CLI tab, add a short Python SDK example that uses the provided
services/intake/examples/send_otel_sample.py (or a minimal snippet showing how
to send and read OTLP traces via the SDK), and ensure both tabs include the send
and read steps (use send_otel_sample.py reference for the sender and the
equivalent Python HTTP GET for the read step); keep the existing commands and
filenames (send_otel_sample.py, curl) as identifiers so reviewers can locate the
examples.
services/intake/tests/integration/test_intake.py (1)

31-48: ⚡ Quick win

Add OpenAPI assertions for all active ingest routes.

This test misses /ingest/chat-completions and /ingest/atif, so route-surface coverage is incomplete for the current API.

Suggested test additions
     assert "/apis/intake/v2/workspaces/{workspace}/ingest/otlp/v1/traces" in paths
+    assert "post" in paths["/apis/intake/v2/workspaces/{workspace}/ingest/otlp/v1/traces"]
+    assert "/apis/intake/v2/workspaces/{workspace}/ingest/chat-completions" in paths
+    assert "post" in paths["/apis/intake/v2/workspaces/{workspace}/ingest/chat-completions"]
+    assert "/apis/intake/v2/workspaces/{workspace}/ingest/atif" in paths
+    assert "post" in paths["/apis/intake/v2/workspaces/{workspace}/ingest/atif"]
🤖 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 `@services/intake/tests/integration/test_intake.py` around lines 31 - 48, The
test test_intake_openapi_keeps_span_era_routes is missing assertions for the
active ingest routes /ingest/chat-completions and /ingest/atif; update the test
to check that those path keys exist in the OpenAPI paths dict (use the existing
paths = response.json().get("paths", {})) and assert the expected HTTP methods
(e.g., "post" or whichever method the routes expose) are present in
paths["/apis/intake/v2/workspaces/{workspace}/ingest/chat-completions"] and
paths["/apis/intake/v2/workspaces/{workspace}/ingest/atif"] so the test covers
the full route surface.
🤖 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 `@services/intake/src/nmp/intake/api/v2/health/endpoints.py`:
- Around line 44-49: The health_ready endpoint currently returns
{"status":"ready"} unconditionally; update the health_ready function to call and
await IntakeService.is_ready() (the service's async readiness check) and return
a ready response only when it returns True, otherwise return an appropriate
non-ready payload (e.g., {"status":"not ready"}) and raise or return a
503/Service Unavailable response so readiness reflects actual
IntakeService.is_ready() state.

---

Nitpick comments:
In `@services/intake/README.md`:
- Around line 81-85: Add a "Next Steps" section at the end of the README.md
(after the "Generated API Artifacts" paragraph) that provides cross-links to
related documentation: an API reference (link to the Intake OpenAPI or SDK
docs), ingestion guides (how to submit data), troubleshooting (common errors and
fixes), and testing (how to run local/integration tests); ensure each bullet has
a clear label and an internal or external hyperlink so readers can jump directly
to those resources.
- Around line 7-85: The README mixes multiple Diataxis quadrants; split the
content by extracting each top-level section into its own page (keep "API
Surface" as the reference page listing endpoints, move "Local Development" into
a how-to/run page, move "Testing" into a testing guide, and keep "Generated API
Artifacts" as a developer/reference note), update this README to be only one
quadrant (select which quadrant you want it to be—e.g., Reference with just the
endpoint list), and add cross-links from the retained headings ("API Surface",
"Local Development", "Testing", "Generated API Artifacts") to the new pages;
ensure internal links are added where examples (e.g., send_otel_sample.py,
run_clickhouse.sh) are referenced and update TOC or index if present.
- Around line 25-56: Add a "Prerequisites" section at the top of the Local
Development steps (before the first shell command) that lists required tools and
services: the `uv` CLI, Docker, the ClickHouse run script
`services/intake/scripts/spans/run_clickhouse.sh` (and any Docker permissions),
and the auth/entities services required to start Intake; mention that tests rely
on shared platform helpers and the recommendation to use the repo root `uv`
environment rather than package-scoped `uv run --package ...` commands (so
callers know to use the `uv run nemo services run` invocation and the example
sender `uv run services/intake/examples/send_otel_sample.py`).
- Around line 46-56: Update the README.md snippet to present both Python SDK and
CLI examples as parallel alternatives in a tab set: create two tabs (e.g.,
"Python SDK" and "CLI"), move the existing curl command into the CLI tab, add a
short Python SDK example that uses the provided
services/intake/examples/send_otel_sample.py (or a minimal snippet showing how
to send and read OTLP traces via the SDK), and ensure both tabs include the send
and read steps (use send_otel_sample.py reference for the sender and the
equivalent Python HTTP GET for the read step); keep the existing commands and
filenames (send_otel_sample.py, curl) as identifiers so reviewers can locate the
examples.

In `@services/intake/tests/integration/test_intake.py`:
- Around line 31-48: The test test_intake_openapi_keeps_span_era_routes is
missing assertions for the active ingest routes /ingest/chat-completions and
/ingest/atif; update the test to check that those path keys exist in the OpenAPI
paths dict (use the existing paths = response.json().get("paths", {})) and
assert the expected HTTP methods (e.g., "post" or whichever method the routes
expose) are present in
paths["/apis/intake/v2/workspaces/{workspace}/ingest/chat-completions"] and
paths["/apis/intake/v2/workspaces/{workspace}/ingest/atif"] so the test covers
the full route surface.
🪄 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: c198bb3c-e281-489f-86e1-68f0cc9a2a3f

📥 Commits

Reviewing files that changed from the base of the PR and between 0157981 and 896f6a4.

⛔ Files ignored due to path filters (2)
  • sdk/stainless.yaml is excluded by !sdk/**
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (56)
  • openapi/ga/individual/platform.openapi.yaml
  • openapi/ga/openapi.yaml
  • openapi/openapi.yaml
  • services/intake/README.md
  • services/intake/alembic.ini
  • services/intake/alembic/README
  • services/intake/alembic/env.py
  • services/intake/alembic/script.py.mako
  • services/intake/alembic/versions/2025_10_14_1101-a7e3b1e7355b_initial_migration.py
  • services/intake/pyproject.toml
  • services/intake/scripts/README.md
  • services/intake/scripts/__init__.py
  • services/intake/scripts/generate_test_dataset.py
  • services/intake/scripts/init-multiple-dbs.sh
  • services/intake/scripts/load_test_data.py
  • services/intake/scripts/seed-entries.py
  • services/intake/src/nmp/intake/api/v2/apps/__init__.py
  • services/intake/src/nmp/intake/api/v2/apps/endpoints.py
  • services/intake/src/nmp/intake/api/v2/apps/schemas.py
  • services/intake/src/nmp/intake/api/v2/entries/__init__.py
  • services/intake/src/nmp/intake/api/v2/entries/endpoints.py
  • services/intake/src/nmp/intake/api/v2/entries/schemas.py
  • services/intake/src/nmp/intake/api/v2/exports/__init__.py
  • services/intake/src/nmp/intake/api/v2/exports/endpoints.py
  • services/intake/src/nmp/intake/api/v2/exports/schemas.py
  • services/intake/src/nmp/intake/api/v2/health/endpoints.py
  • services/intake/src/nmp/intake/api/v2/tasks/__init__.py
  • services/intake/src/nmp/intake/api/v2/tasks/endpoints.py
  • services/intake/src/nmp/intake/api/v2/tasks/schemas.py
  • services/intake/src/nmp/intake/app/__init__.py
  • services/intake/src/nmp/intake/app/exporter.py
  • services/intake/src/nmp/intake/app/utils/__init__.py
  • services/intake/src/nmp/intake/app/utils/datastore.py
  • services/intake/src/nmp/intake/app/utils/exports.py
  • services/intake/src/nmp/intake/config.py
  • services/intake/src/nmp/intake/entities/__init__.py
  • services/intake/src/nmp/intake/entities/entities.py
  • services/intake/src/nmp/intake/entities/enums.py
  • services/intake/src/nmp/intake/entities/values.py
  • services/intake/src/nmp/intake/service.py
  • services/intake/src/nmp/intake/spans/ingest/chat_completions.py
  • services/intake/tests/data/action_heavy.json
  • services/intake/tests/data/all_entries.json
  • services/intake/tests/data/conversations.json
  • services/intake/tests/data/feedback_heavy.json
  • services/intake/tests/data/single_turns.json
  • services/intake/tests/integration/spans/test_clickhouse_bootstrap.py
  • services/intake/tests/integration/test_intake.py
  • services/intake/tests/test_apps.py
  • services/intake/tests/test_clickhouse_startup.py
  • services/intake/tests/test_entries.py
  • services/intake/tests/test_export_utils.py
  • services/intake/tests/test_exports.py
  • services/intake/tests/test_sdk_basic.py
  • services/intake/tests/test_tasks.py
  • services/intake/tests/test_values.py
💤 Files with no reviewable changes (44)
  • services/intake/scripts/README.md
  • services/intake/alembic/README
  • services/intake/tests/data/action_heavy.json
  • services/intake/tests/data/single_turns.json
  • services/intake/src/nmp/intake/api/v2/entries/init.py
  • services/intake/scripts/init-multiple-dbs.sh
  • services/intake/tests/test_export_utils.py
  • services/intake/tests/data/conversations.json
  • services/intake/tests/test_sdk_basic.py
  • services/intake/alembic/env.py
  • services/intake/tests/test_apps.py
  • services/intake/alembic.ini
  • services/intake/src/nmp/intake/api/v2/exports/schemas.py
  • services/intake/src/nmp/intake/entities/enums.py
  • services/intake/src/nmp/intake/api/v2/tasks/schemas.py
  • services/intake/src/nmp/intake/entities/init.py
  • services/intake/src/nmp/intake/app/utils/init.py
  • services/intake/src/nmp/intake/api/v2/exports/init.py
  • services/intake/alembic/script.py.mako
  • services/intake/src/nmp/intake/app/utils/datastore.py
  • services/intake/tests/test_values.py
  • services/intake/src/nmp/intake/app/exporter.py
  • services/intake/src/nmp/intake/api/v2/entries/schemas.py
  • services/intake/src/nmp/intake/api/v2/apps/endpoints.py
  • services/intake/src/nmp/intake/app/init.py
  • services/intake/src/nmp/intake/api/v2/exports/endpoints.py
  • services/intake/src/nmp/intake/api/v2/tasks/init.py
  • services/intake/tests/data/feedback_heavy.json
  • services/intake/tests/test_exports.py
  • services/intake/scripts/load_test_data.py
  • services/intake/alembic/versions/2025_10_14_1101-a7e3b1e7355b_initial_migration.py
  • services/intake/src/nmp/intake/entities/entities.py
  • services/intake/src/nmp/intake/app/utils/exports.py
  • services/intake/tests/test_entries.py
  • services/intake/src/nmp/intake/api/v2/tasks/endpoints.py
  • services/intake/src/nmp/intake/api/v2/entries/endpoints.py
  • services/intake/scripts/seed-entries.py
  • services/intake/scripts/generate_test_dataset.py
  • services/intake/src/nmp/intake/api/v2/apps/init.py
  • services/intake/scripts/init.py
  • services/intake/src/nmp/intake/api/v2/apps/schemas.py
  • services/intake/src/nmp/intake/config.py
  • services/intake/tests/test_tasks.py
  • services/intake/src/nmp/intake/entities/values.py

Comment thread services/intake/src/nmp/intake/api/v2/health/endpoints.py Outdated
Comment thread services/intake/src/nmp/intake/api/v2/health/endpoints.py Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 28, 2026

Suite Lines Covered Line Rate Branch Rate
Unit Tests 18409/24388 75.5% 61.9%
Integration Tests 11768/23165 50.8% 26.0%

Signed-off-by: Brian Newsom <brnewsom@nvidia.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 28, 2026

Actionable comments posted: 0

Signed-off-by: Brian Newsom <brnewsom@nvidia.com>
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.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/__init__.py (1)

1-17: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Auto-generated file should not be in code review.

Per coding guidelines, files in src/nemo_platform_ext/cli/commands/api/ are auto-generated from templates and should not be manually edited or included in code reviews. If changes are needed, update the generation templates instead.

As per coding guidelines: "Do NOT manually edit files in src/nemo_platform_ext/cli/commands/api/ - these are auto-generated from templates" and "Do NOT include auto-generated files in src/nemo_platform_ext/cli/commands/api/ in code reviews".

🤖 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
`@packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/__init__.py`
around lines 1 - 17, This file is auto-generated and should not be manually
edited or included in code review; revert any manual edits to
packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/__init__.py,
remove it from the commit/PR, and instead apply required changes to the
generation template that produces this module (the template that yields the
imports of annotations,evaluator_results,ingest,spans,traces and the app =
create_typer_app(...) construction) so regenerated output will contain the
desired changes.
🤖 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.

Outside diff comments:
In
`@packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/__init__.py`:
- Around line 1-17: This file is auto-generated and should not be manually
edited or included in code review; revert any manual edits to
packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/__init__.py,
remove it from the commit/PR, and instead apply required changes to the
generation template that produces this module (the template that yields the
imports of annotations,evaluator_results,ingest,spans,traces and the app =
create_typer_app(...) construction) so regenerated output will contain the
desired changes.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 3fe76028-99ec-4020-949f-8309bc8f263b

📥 Commits

Reviewing files that changed from the base of the PR and between 3da66a7 and 7044b8b.

⛔ Files ignored due to path filters (103)
  • sdk/python/nemo-platform/.nmpcontext/openapi.yaml is excluded by !sdk/**
  • sdk/python/nemo-platform/.nmpcontext/stainless.yaml is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/apps/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/apps/tasks.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/entries/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/entries/events.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/exports/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/exports/jobs.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/models/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/projects.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/api.md is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/apps/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/apps/apps.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/apps/tasks.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/entries/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/entries/entries.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/entries/events.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/exports/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/exports/exports.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/exports/jobs.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/ingest/chat_completions.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/resources/intake/intake.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/app.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/app_create_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/app_filter_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/app_list_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/app_patch_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/app_sort_field.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/apps/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/apps/task.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/apps/task_create_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/apps/task_filter_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/apps/task_list_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/apps/task_sort_field.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/apps/tasks_page.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/apps_page.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entries/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entries/event_create_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry_context.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry_context_filter_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry_context_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry_create_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry_data.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry_data_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry_filter_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry_list_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry_patch_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entry_sort_field.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/entrys_page.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/evaluator_result_event.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/evaluator_result_event_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/export_config_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/export_config_param_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/export_preview_response.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/exports/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/exports/export_config.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/exports/export_job.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/exports/export_job_filter_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/exports/export_job_sort_field.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/exports/export_jobs_page.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/exports/export_status_details.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/exports/job_create_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/exports/job_list_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/exports/job_status.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/flexible_entry_request.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/flexible_entry_request_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/flexible_entry_response.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/flexible_entry_response_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/flexible_message.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/flexible_message_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/ingest/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/ingest/captured_chat_completions_request_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/ingest/captured_chat_completions_response_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/ingest/captured_chat_message_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/ingest/chat_completion_create_params.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/ingest/chat_message_role.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/reviewer_annotation_event.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/reviewer_annotation_event_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/thumb_direction.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/usage.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/usage_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/user_action_event.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/user_action_event_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/user_feedback_event.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/user_feedback_event_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/user_rating.py is excluded by !sdk/**
  • sdk/python/nemo-platform/src/nemo_platform/types/intake/user_rating_param.py is excluded by !sdk/**
  • sdk/python/nemo-platform/tests/api_resources/intake/apps/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/tests/api_resources/intake/apps/test_tasks.py is excluded by !sdk/**
  • sdk/python/nemo-platform/tests/api_resources/intake/entries/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/tests/api_resources/intake/entries/test_events.py is excluded by !sdk/**
  • sdk/python/nemo-platform/tests/api_resources/intake/exports/__init__.py is excluded by !sdk/**
  • sdk/python/nemo-platform/tests/api_resources/intake/exports/test_jobs.py is excluded by !sdk/**
  • sdk/python/nemo-platform/tests/api_resources/intake/ingest/test_chat_completions.py is excluded by !sdk/**
  • sdk/python/nemo-platform/tests/api_resources/intake/test_apps.py is excluded by !sdk/**
  • sdk/python/nemo-platform/tests/api_resources/intake/test_entries.py is excluded by !sdk/**
  • sdk/python/nemo-platform/tests/api_resources/intake/test_exports.py is excluded by !sdk/**
  • sdk/stainless.yaml is excluded by !sdk/**
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • docs/cli/reference.md
  • packages/nemo_platform/pyproject.toml
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/__init__.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/apps/__init__.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/apps/tasks.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/entries/__init__.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/entries/events.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/exports/__init__.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/exports/jobs.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/models/__init__.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/projects.py
  • services/core/auth/src/nmp/core/auth/assets/static-authz.yaml
  • services/intake/tests/test_clickhouse_startup.py
  • third_party/licenses.jsonl
  • third_party/osv-licenses.json
  • third_party/requirements-main.txt
💤 Files with no reviewable changes (8)
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/exports/init.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/apps/tasks.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/entries/init.py
  • services/core/auth/src/nmp/core/auth/assets/static-authz.yaml
  • packages/nemo_platform/pyproject.toml
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/apps/init.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/exports/jobs.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/entries/events.py
✅ Files skipped from review due to trivial changes (3)
  • docs/cli/reference.md
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/models/init.py
  • packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/projects.py

Signed-off-by: Brian Newsom <brnewsom@nvidia.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 28, 2026

Actionable comments posted: 0

…e-unused-intake-surface-area-3

Signed-off-by: Brian Newsom <brnewsom@nvidia.com>

# Conflicts:
#	services/intake/scripts/seed-entries.py
#	uv.lock
@BrianNewsom BrianNewsom enabled auto-merge May 29, 2026 19:19
@BrianNewsom BrianNewsom added this pull request to the merge queue May 29, 2026
Merged via the queue into main with commit b4da2a6 May 29, 2026
28 checks passed
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.

2 participants