Skip to content

Conversation

@gaurpulkit
Copy link
Contributor

@gaurpulkit gaurpulkit commented Dec 26, 2025

Important

This PR adds support for new dbt artifacts run_results and sources, updates the CLI for onboarding these artifacts, and includes new schemas and tests.

  • Behavior:
    • Adds support for new dbt artifacts run_results and sources in onboard_file() in utils.py.
    • Updates onboard command in cli.py to handle new artifact paths and validate them.
    • Supports ingestion of manifest, catalog, run_results, sources, and semantic_manifest.
  • Schemas:
    • Adds run_results.py and sources.py for new artifact schemas.
    • Updates existing run results and sources parsers to allow extra fields.
  • Tests:
    • Adds tests in test_utils.py to verify supported artifact types and error handling for unsupported types.
    • Adds tests in test_artifact_loaders.py for loading run_results and sources.
    • Updates test_cli.py to check CLI help for new artifact options.
    • Includes test data files run_results_v6.json and sources_v3.json.

This description was created by Ellipsis for 32d52c7. You can customize this summary. It will automatically update as commits are pushed.

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Important

Looks good to me! 👍

Reviewed everything up to 9358e35 in 26 seconds. Click for details.
  • Reviewed 770 lines of code in 19 files
  • Skipped 0 files when reviewing.
  • Skipped posting 2 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. src/vendor/dbt_artifacts_parser/parser.py:254
  • Draft comment:
    The error message in parse_run_results is misleading; it says 'Not a manifest.json' when it should indicate run-results.json.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
2. src/vendor/dbt_artifacts_parser/parser.py:324
  • Draft comment:
    The error message in parse_sources is incorrect; it raises 'Not a manifest.json' instead of 'Not a sources.json'.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.

Workflow ID: wflow_eK1ZtMY6XRJXBtYu

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

Comment on lines +112 to +114
run_results: RunResults = parse_run_results(run_results_dict)
except ValueError as e:
raise AltimateInvalidManifestError(f"Invalid run results file: {run_results_path}. Error: {e}") from e

This comment was marked as outdated.

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Important

Looks good to me! 👍

Reviewed 6d2034f in 45 seconds. Click for details.
  • Reviewed 366 lines of code in 12 files
  • Skipped 0 files when reviewing.
  • Skipped posting 12 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. src/datapilot/clients/altimate/constants.py:9
  • Draft comment:
    Removed 'semantic_manifest' from SUPPORTED_ARTIFACT_TYPES. Ensure this breaking change is documented.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
2. src/datapilot/core/platforms/dbt/cli/cli.py:21
  • Draft comment:
    Removed import of load_semantic_manifest. All references to semantic_manifest are cleaned up.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
3. src/datapilot/core/platforms/dbt/cli/cli.py:160
  • Draft comment:
    Removed '--semantic-manifest-path' option and related validation from the onboard command. Confirm this removal aligns with overall artifact support changes.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
4. src/datapilot/core/platforms/dbt/schemas/semantic_manifest.py:1
  • Draft comment:
    Deleted the semantic_manifest schema file. Ensure downstream consumers are updated, as this removal is breaking.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
5. src/datapilot/core/platforms/dbt/utils.py:132
  • Draft comment:
    Removed the load_semantic_manifest() function. This cleanup is consistent with the removal in CLI and schema. Confirm no external dependency remains.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
6. src/vendor/dbt_artifacts_parser/parser.py:346
  • Draft comment:
    Removed parse_semantic_manifest function. Verify that no external code depends on this parser.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
7. src/vendor/dbt_artifacts_parser/parsers/semantic_manifest/__init__.py:1
  • Draft comment:
    Removed the semantic_manifest init file from the parsers. Ensure that no module import errors occur post-deletion.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
8. src/vendor/dbt_artifacts_parser/parsers/semantic_manifest/semantic_manifest_v1.py:1
  • Draft comment:
    Removed the semantic_manifest_v1 parser implementation. Confirm that full semantic manifest support is no longer required.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
9. src/vendor/dbt_artifacts_parser/parsers/version_map.py:78
  • Draft comment:
    Removed the SEMANTIC_MANIFEST_V1 mapping from ArtifactTypes. This is consistent with the removal of semantic manifest support.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
10. tests/clients/altimate/test_utils.py:8
  • Draft comment:
    Updated expected artifact types in tests to reflect removal of semantic_manifest. Test coverage seems adjusted accordingly.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
11. tests/core/platform/dbt/test_artifact_loaders.py:35
  • Draft comment:
    Removed tests for load_semantic_manifest. Ensure that removal does not affect backward compatibility if needed.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
12. tests/core/platform/dbt/test_cli.py:125
  • Draft comment:
    Adjusted CLI help test: '--semantic-manifest-path' is no longer expected. Verify that help output remains clear for supported options.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None

Workflow ID: wflow_P90yRDDddxLPfvJA

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

@mdesmet
Copy link
Collaborator

mdesmet commented Dec 29, 2025

@gaurpulkit : fix error message to be more generic, provide a valid dbt artifact file path

def load_json(file_path: str) -> Dict:
try:
with Path(file_path).open() as f:
return json.load(f)
except FileNotFoundError:
raise
except json.decoder.JSONDecodeError as e:
raise ValueError(f"Invalid JSON file: {file_path}") from e
except IsADirectoryError as e:
raise ValueError(f"Please provide a A valid manifest file path. {file_path} is a directory") from e

Copy link
Collaborator

@mdesmet mdesmet left a comment

Choose a reason for hiding this comment

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

Please readd semantic manifest, we can already collect it in backend

"manifest",
"catalog",
"run_results",
"sources",
Copy link
Collaborator

Choose a reason for hiding this comment

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

also add semantic manifest, we can already collect it, we should not validate it.

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Important

Looks good to me! 👍

Reviewed 9a34999 in 31 seconds. Click for details.
  • Reviewed 69 lines of code in 4 files
  • Skipped 0 files when reviewing.
  • Skipped posting 6 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. src/datapilot/clients/altimate/constants.py:9
  • Draft comment:
    Added 'semantic_manifest' to SUPPORTED_ARTIFACT_TYPES. Ensure documentation is updated if needed.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
2. src/datapilot/core/platforms/dbt/cli/cli.py:162
  • Draft comment:
    New '--semantic-manifest-path' option added. The option is consistent with the other artifact paths.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
3. src/datapilot/core/platforms/dbt/cli/cli.py:275
  • Draft comment:
    Handles onboarding for 'semantic_manifest'. Consider adding file validation (if applicable) similar to catalog, run_results, and sources for consistency.
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None
4. src/datapilot/core/platforms/dbt/cli/cli.py:247
  • Draft comment:
    The repeated logic for onboarding different artifacts (catalog, run_results, sources, semantic_manifest) might be refactored into a shared function or loop to reduce duplication.
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None
5. tests/clients/altimate/test_utils.py:8
  • Draft comment:
    Test updated: expected artifact types now include 'semantic_manifest'. This update is consistent with the constants.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
6. tests/core/platform/dbt/test_cli.py:129
  • Draft comment:
    The onboarding help test now asserts '--semantic-manifest-path' is shown. This verifies that the new option is exposed in CLI help.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None

Workflow ID: wflow_YOkMtfNZAGhnrZNh

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

Comment on lines +275 to +283
if semantic_manifest_path:
response = onboard_file(
token, instance_name, dbt_integration_id, dbt_integration_environment, "semantic_manifest", semantic_manifest_path, backend_url
)
if response["ok"]:
click.echo("Semantic manifest onboarded successfully!")
artifacts_uploaded.append("semantic_manifest")
else:
click.echo(f"{response['message']}")

This comment was marked as outdated.

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Important

Looks good to me! 👍

Reviewed ba68036 in 1 minute and 36 seconds. Click for details.
  • Reviewed 906 lines of code in 14 files
  • Skipped 0 files when reviewing.
  • Skipped posting 8 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. src/datapilot/clients/altimate/utils.py:107
  • Draft comment:
    Nice use of an f-string here. Ensure that 'file_type' is always provided to avoid a blank error message.
  • Reason this comment was not posted:
    Comment looked like it was already resolved.
2. src/datapilot/core/platforms/dbt/schemas/catalog.py:29
  • Draft comment:
    Avoid using double Optional (Optional[Optional[str]]); use Optional[str] instead.
  • Reason this comment was not posted:
    Comment was on unchanged code.
3. src/vendor/dbt_artifacts_parser/parsers/run_results/run_results_v1.py:18
  • Draft comment:
    Switching 'extra' from 'forbid' to 'allow' improves artifact compatibility but relaxes validation. Confirm this trade-off.
  • Reason this comment was not posted:
    Comment looked like it was already resolved.
4. src/vendor/dbt_artifacts_parser/parsers/sources/sources_v1.py:28
  • Draft comment:
    Changing extra validation to 'allow' permits unexpected fields; ensure this is intended for new artifact versions.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
5. Multiple Files (e.g., manifest.py, nodes.py, run_results_v* and sources_v*):1
  • Draft comment:
    Consistently adding model_config = ConfigDict(extra="allow") aids forward compatibility but reduces strict type validation. Verify if this is acceptable.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
6. src/datapilot/core/platforms/dbt/schemas/catalog.py:21
  • Draft comment:
    Typographical note: The type hint for invocation_id is written as Optional[Optional[str]], which appears to be a redundant nesting of Optional. Consider changing it to Optional[str].
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
7. src/datapilot/core/platforms/dbt/schemas/catalog.py:70
  • Draft comment:
    Typographical note: It looks like the type annotation for ‘errors’ is using a double Optional (Optional[Optional[List[str]]]). This may be unintentional; consider using Optional[List[str]] for clarity.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.
8. src/datapilot/core/platforms/dbt/schemas/manifest.py:70
  • Draft comment:
    Typographical Issue: The type hint for 'data_type' in AltimateManifestColumnInfo is declared as Optional[Optional[str]]. This appears to be a duplicate of Optional; please correct it to Optional[str] if that was the intent.
  • Reason this comment was not posted:
    Comment was not on a location in the diff, so it can't be submitted as a review comment.

Workflow ID: wflow_9RFp8ujlyDWuOpAk

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

Copy link
Collaborator

@mdesmet mdesmet left a comment

Choose a reason for hiding this comment

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

Remove model extra allow everywhere except in vendor



class InsightResult(BaseModel):
model_config = ConfigDict(extra="allow")
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why is this required?



class InsightResponse(BaseModel):
model_config = ConfigDict(extra="allow")
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why is this required?

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request adds comprehensive support for new dbt artifacts beyond the existing manifest and catalog support. The changes enable onboarding and validation of run_results, sources, and semantic_manifest artifacts, along with necessary schema definitions and test coverage.

  • Introduces loader functions for run_results and sources artifacts with validation
  • Updates the CLI onboard command to accept and process multiple artifact types
  • Adds schema wrappers and updates vendor parsers to allow extra fields for forward compatibility

Reviewed changes

Copilot reviewed 15 out of 26 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
src/datapilot/clients/altimate/constants.py Defines the set of supported artifact types for onboarding
src/datapilot/clients/altimate/utils.py Adds validation for supported artifact types and improves documentation
src/datapilot/core/platforms/dbt/cli/cli.py Extends onboard command with new artifact options and validation workflow
src/datapilot/core/platforms/dbt/utils.py Implements load_run_results() and load_sources() loader functions
src/datapilot/core/platforms/dbt/schemas/run_results.py New schema wrappers for run_results artifacts (v1-v6)
src/datapilot/core/platforms/dbt/schemas/sources.py New schema wrappers for sources artifacts (v1-v3)
src/datapilot/core/platforms/dbt/schemas/manifest.py Adds extra="allow" config to all models for flexibility
src/datapilot/core/platforms/dbt/schemas/catalog.py Adds extra="allow" config to all catalog models
src/datapilot/schemas/nodes.py Adds extra="allow" config to ModelNode and SourceNode
src/datapilot/core/insights/schema.py Adds extra="allow" config to insight models
src/vendor/dbt_artifacts_parser/parsers/run_results/*.py Updates all run_results parsers to allow extra fields
src/vendor/dbt_artifacts_parser/parsers/sources/*.py Updates all sources parsers to allow extra fields
tests/clients/altimate/test_utils.py Tests for artifact type validation in onboarding
tests/core/platform/dbt/test_artifact_loaders.py Tests for new loader functions with valid and invalid inputs
tests/core/platform/dbt/test_cli.py Tests CLI help output includes all artifact options
tests/data/run_results_v6.json Test fixture for run_results artifact
tests/data/sources_v3.json Test fixture for sources artifact
tests/clients/altimate/__init__.py Empty init file for test module
tests/clients/__init__.py Empty init file for test module

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +275 to +283
if semantic_manifest_path:
response = onboard_file(
token, instance_name, dbt_integration_id, dbt_integration_environment, "semantic_manifest", semantic_manifest_path, backend_url
)
if response["ok"]:
click.echo("Semantic manifest onboarded successfully!")
artifacts_uploaded.append("semantic_manifest")
else:
click.echo(f"{response['message']}")
Copy link

Copilot AI Jan 6, 2026

Choose a reason for hiding this comment

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

The semantic_manifest_path artifact is uploaded without validation, unlike the other artifacts (manifest, catalog, run_results, sources). This inconsistency could lead to invalid files being uploaded. Consider adding validation for semantic_manifest before uploading, similar to lines 217-236.

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is for semantic_manifest only. dbt-artifacts-library doesn't have a parser for it, so are storing it as-it-is.

Comment on lines +60 to +74
"""
Upload a dbt artifact file to the Altimate backend.
Args:
api_token: API authentication token
tenant: Tenant/instance name
dbt_core_integration_id: ID of the dbt integration
dbt_core_integration_environment: Environment type (e.g., PROD)
file_type: Type of artifact - one of: manifest, catalog, run_results, sources, semantic_manifest
file_path: Path to the artifact file
backend_url: URL of the Altimate backend
Returns:
Dict with 'ok' boolean and optional 'message' on failure
"""
Copy link

Copilot AI Jan 6, 2026

Choose a reason for hiding this comment

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

The documentation added for the onboard_file function is helpful and clear. However, it should note that validation is the caller's responsibility. Currently, semantic_manifest files are not validated before being uploaded, which differs from other artifact types.

Copilot uses AI. Check for mistakes.
Comment on lines 13 to 34
class RunResultsV1(BaseRunResultsV1):
model_config = ConfigDict(extra="allow")


class RunResultsV2(BaseRunResultsV2):
model_config = ConfigDict(extra="allow")


class RunResultsV3(BaseRunResultsV3):
model_config = ConfigDict(extra="allow")


class RunResultsV4(BaseRunResultsV4):
model_config = ConfigDict(extra="allow")


class RunResultsV5(BaseRunResultsV5):
model_config = ConfigDict(extra="allow")


class RunResultsV6(BaseRunResultsV6):
model_config = ConfigDict(extra="allow")
Copy link

Copilot AI Jan 6, 2026

Choose a reason for hiding this comment

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

The model_config = ConfigDict(extra="allow") is redundant here since the base classes (BaseRunResultsV1 through BaseRunResultsV6) already have this configuration set. While this doesn't cause issues, it adds unnecessary repetition. Consider removing these redundant configurations unless there's a specific need to override them.

Copilot uses AI. Check for mistakes.
Comment on lines 3 to 19
from pydantic import ConfigDict

from vendor.dbt_artifacts_parser.parsers.sources.sources_v1 import SourcesV1 as BaseSourcesV1
from vendor.dbt_artifacts_parser.parsers.sources.sources_v2 import SourcesV2 as BaseSourcesV2
from vendor.dbt_artifacts_parser.parsers.sources.sources_v3 import SourcesV3 as BaseSourcesV3


class SourcesV1(BaseSourcesV1):
model_config = ConfigDict(extra="allow")


class SourcesV2(BaseSourcesV2):
model_config = ConfigDict(extra="allow")


class SourcesV3(BaseSourcesV3):
model_config = ConfigDict(extra="allow")
Copy link

Copilot AI Jan 6, 2026

Choose a reason for hiding this comment

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

The model_config = ConfigDict(extra="allow") is redundant here since the base classes (BaseSourcesV1 through BaseSourcesV3) already have this configuration set. While this doesn't cause issues, it adds unnecessary repetition. Consider removing these redundant configurations unless there's a specific need to override them.

Suggested change
from pydantic import ConfigDict
from vendor.dbt_artifacts_parser.parsers.sources.sources_v1 import SourcesV1 as BaseSourcesV1
from vendor.dbt_artifacts_parser.parsers.sources.sources_v2 import SourcesV2 as BaseSourcesV2
from vendor.dbt_artifacts_parser.parsers.sources.sources_v3 import SourcesV3 as BaseSourcesV3
class SourcesV1(BaseSourcesV1):
model_config = ConfigDict(extra="allow")
class SourcesV2(BaseSourcesV2):
model_config = ConfigDict(extra="allow")
class SourcesV3(BaseSourcesV3):
model_config = ConfigDict(extra="allow")
from vendor.dbt_artifacts_parser.parsers.sources.sources_v1 import SourcesV1 as BaseSourcesV1
from vendor.dbt_artifacts_parser.parsers.sources.sources_v2 import SourcesV2 as BaseSourcesV2
from vendor.dbt_artifacts_parser.parsers.sources.sources_v3 import SourcesV3 as BaseSourcesV3
class SourcesV1(BaseSourcesV1):
...
class SourcesV2(BaseSourcesV2):
...
class SourcesV3(BaseSourcesV3):
...

Copilot uses AI. Check for mistakes.
try:
run_results: RunResults = parse_run_results(run_results_dict)
except ValueError as e:
raise AltimateInvalidManifestError(f"Invalid run results file: {run_results_path}. Error: {e}") from e
Copy link

Copilot AI Jan 6, 2026

Choose a reason for hiding this comment

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

The exception type AltimateInvalidManifestError is misleading when used for non-manifest files like run_results. Consider creating a more generic exception type such as AltimateInvalidArtifactError or using specific exceptions for each artifact type.

Copilot uses AI. Check for mistakes.
try:
sources: Sources = parse_sources(sources_dict)
except ValueError as e:
raise AltimateInvalidManifestError(f"Invalid sources file: {sources_path}. Error: {e}") from e
Copy link

Copilot AI Jan 6, 2026

Choose a reason for hiding this comment

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

The exception type AltimateInvalidManifestError is misleading when used for non-manifest files like sources. Consider creating a more generic exception type such as AltimateInvalidArtifactError or using specific exceptions for each artifact type.

Copilot uses AI. Check for mistakes.
Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Important

Looks good to me! 👍

Reviewed 752cf7c in 1 minute and 37 seconds. Click for details.
  • Reviewed 433 lines of code in 6 files
  • Skipped 0 files when reviewing.
  • Skipped posting 6 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. src/datapilot/core/insights/schema.py:2
  • Draft comment:
    Removed unused ConfigDict import & model_config lines—ensure strict validation of extra fields is intended.
  • Reason this comment was not posted:
    Comment looked like it was already resolved.
2. src/datapilot/core/platforms/dbt/schemas/catalog.py:15
  • Draft comment:
    Consistently removed model_config from AltimateCatalog models; verify that extra fields are now handled as desired.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% The comment is asking the PR author to verify that extra fields are handled as desired after removing model_config. This falls under asking the author to ensure behavior is intended, which is against the rules.
3. src/datapilot/core/platforms/dbt/schemas/manifest.py:24
  • Draft comment:
    Removal of model_config in manifest models simplifies schema; confirm that no extra field handling is now needed.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% The comment is asking the PR author to confirm that no extra field handling is needed after the removal of model_config. This is against the rules as it asks for confirmation of intention. The comment does not provide a specific code suggestion or ask for a test to be written.
4. src/datapilot/core/platforms/dbt/schemas/run_results.py:1
  • Draft comment:
    Directly importing run_results classes cleans up the code; ensure removed extended classes don't affect behavior.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% This comment is asking the PR author to ensure that a change doesn't affect behavior, which violates the rule against asking the author to ensure behavior is intended or tested. It doesn't provide a specific suggestion or ask for a specific test to be written.
5. src/datapilot/core/platforms/dbt/schemas/sources.py:1
  • Draft comment:
    Removed model_config from Sources classes; verify that extra fields no longer need to be accepted.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% The comment is asking the PR author to verify that extra fields no longer need to be accepted after removing model_config. This is asking for confirmation of intention, which is against the rules.
6. src/datapilot/schemas/nodes.py:4
  • Draft comment:
    Removed model_config lines from ModelNode and SourceNode; ensure that rejecting extra fields is intentional.
  • Reason this comment was not posted:
    Comment looked like it was already resolved.

Workflow ID: wflow_kQf6aMX1chQstHOG

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

Comment on lines +275 to +283
if semantic_manifest_path:
response = onboard_file(
token, instance_name, dbt_integration_id, dbt_integration_environment, "semantic_manifest", semantic_manifest_path, backend_url
)
if response["ok"]:
click.echo("Semantic manifest onboarded successfully!")
artifacts_uploaded.append("semantic_manifest")
else:
click.echo(f"{response['message']}")

This comment was marked as outdated.

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Important

Looks good to me! 👍

Reviewed 32d52c7 in 1 minute and 51 seconds. Click for details.
  • Reviewed 71 lines of code in 2 files
  • Skipped 0 files when reviewing.
  • Skipped posting 5 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. src/vendor/dbt_artifacts_parser/parsers/run_results/run_results_v6.py:64
  • Draft comment:
    New AdapterResponse model added. Consider adding a docstring or explicit fields if known.
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None
2. src/vendor/dbt_artifacts_parser/parsers/run_results/run_results_v6.py:80
  • Draft comment:
    Changed adapter_response field type from dict to AdapterResponse. Ensure downstream usage handles the new model appropriately.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% The comment is asking the author to ensure that downstream usage handles the new model appropriately, which is a form of asking the author to double-check their work. This violates the rule against asking the author to ensure behavior is intended or tested.
3. src/vendor/dbt_artifacts_parser/parsers/run_results/run_results_v6.py:88
  • Draft comment:
    New Args model introduced and used in RunResultsV6. If known, consider defining expected fields for clarity.
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None
4. src/vendor/dbt_artifacts_parser/parsers/sources/sources_v3.py:88
  • Draft comment:
    New AdapterResponse model is added here too. Consider centralizing this model to avoid duplication across modules.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% The comment is about potential duplication "across modules", which inherently requires cross-file context to verify. The rules explicitly state to "Ignore cross-file issues. Only think about the file you are reviewing." Additionally, this appears to be generated code (based on the header comment), so refactoring suggestions may not be appropriate. The comment is also a code quality suggestion that would require seeing other files to verify if duplication actually exists. Without being able to see other modules, I cannot confirm there is duplication. The rules state I need "STRONG EVIDENCE that the comment is correct" and should "assume that the comment is incorrect or not useful" by default. Perhaps the reviewer has knowledge of other files in the codebase where AdapterResponse is duplicated, and this is a valid refactoring suggestion. The comment could be helpful for maintaining DRY principles across the codebase. While the reviewer may have broader context, the rules explicitly state to ignore cross-file issues and only focus on the file being reviewed. Without being able to verify duplication exists in other modules from this diff alone, I cannot confirm this comment is correct. Additionally, this is generated code, which makes refactoring suggestions less actionable. This comment should be deleted because it references cross-file issues ("across modules") which requires context beyond this single file, and the rules explicitly state to ignore cross-file issues. There is no strong evidence within this diff alone that duplication exists.
5. src/vendor/dbt_artifacts_parser/parsers/sources/sources_v3.py:101
  • Draft comment:
    Changed adapter_response field in Results1 to use AdapterResponse model. Verify that this change aligns with upstream data expectations.
  • Reason this comment was not posted:
    Comment did not seem useful. Confidence is useful = 0% <= threshold 50% The comment is asking the PR author to verify alignment with upstream data expectations, which is against the rules. It doesn't provide a specific suggestion or point out a clear issue with the code.

Workflow ID: wflow_KAr64mhSt5fua4DI

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

@gaurpulkit gaurpulkit merged commit 10cbf36 into main Jan 7, 2026
31 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.

4 participants