Repository: dbt-labs/dbt-core
Pull request: CT 1443 remove root path
resolves #6171


### Description

As part of cleanup for the structured logging effort, remove the 'root_path' field from most nodes.

### Checklist

- [x] I have read [the contributing guide](https://github.com/dbt-labs/dbt-core/blob/main/CONTRIBUTING.md) and understand what's expected of me
- [x] I have signed the [CLA](https://docs.getdbt.com/docs/contributor-license-agreements)
- [x] I have run this code in development and it appears to resolve the stated issue
- [x] This PR includes tests, or tests are not required/relevant for this PR
- [x] I have [opened an issue to add/update docs](https://github.com/dbt-labs/docs.getdbt.com/issues/new/choose), or docs changes are not required/relevant for this PR
- [x] I have run `changie new` to [create a changelog entry](https://github.com/dbt-labs/dbt-core/blob/main/CONTRIBUTING.md#adding-a-changelog-entry)


Problem statement:
[CT-1443] Remove 'root_path' from most node definitions
We are moving towards enabling manifests to be portable. Currently we include the 'root_path' of the project in every node, which is duplicative and non-portable. In addition, this field is hardly used.

Remove root_path from the node class definitions.

Note: because we don't load seed csv file contents, we do use the root_path to load the seed file when the seeds command is run. For now, we will include the root_path in seed nodes, but longer term we need to come up with a solution for this, whether making it possible to get the root_path for every project in the 'load_agate_table' context method or some other solution.

This is done as part of the structured logging effort, as cleanup of the node attributes that need to be included in the contracts for node information.

Hints from issue discussion:

Commit message: Changie

Patch to review:
diff --git a/.changes/unreleased/Under the Hood-20221028-104837.yaml b/.changes/unreleased/Under the Hood-20221028-104837.yaml
new file mode 100644
index 00000000000..22ad4901794
--- /dev/null
+++ b/.changes/unreleased/Under the Hood-20221028-104837.yaml	
@@ -0,0 +1,7 @@
+kind: Under the Hood
+body: Remove the 'root_path' field from most nodes
+time: 2022-10-28T10:48:37.687886-04:00
+custom:
+  Author: gshank
+  Issue: "6171"
+  PR: "6172"
diff --git a/core/dbt/context/providers.py b/core/dbt/context/providers.py
index 597b526e384..eb3d684204e 100644
--- a/core/dbt/context/providers.py
+++ b/core/dbt/context/providers.py
@@ -803,6 +803,7 @@ def load_agate_table(self) -> agate.Table:
             raise_compiler_error(
                 "can only load_agate_table for seeds (got a {})".format(self.model.resource_type)
             )
+        assert self.model.root_path
         path = os.path.join(self.model.root_path, self.model.original_file_path)
         column_types = self.model.config.column_types
         try:
diff --git a/core/dbt/contracts/graph/compiled.py b/core/dbt/contracts/graph/compiled.py
index 118d104f537..28930932299 100644
--- a/core/dbt/contracts/graph/compiled.py
+++ b/core/dbt/contracts/graph/compiled.py
@@ -97,6 +97,7 @@ class CompiledSeedNode(CompiledNode):
     # keep this in sync with ParsedSeedNode!
     resource_type: NodeType = field(metadata={"restrict": [NodeType.Seed]})
     config: SeedConfig = field(default_factory=SeedConfig)
+    root_path: Optional[str] = None
 
     @property
     def empty(self):
diff --git a/core/dbt/contracts/graph/parsed.py b/core/dbt/contracts/graph/parsed.py
index 860f3fdf662..d92982ce043 100644
--- a/core/dbt/contracts/graph/parsed.py
+++ b/core/dbt/contracts/graph/parsed.py
@@ -408,6 +408,9 @@ class ParsedSeedNode(ParsedNode):
     # keep this in sync with CompiledSeedNode!
     resource_type: NodeType = field(metadata={"restrict": [NodeType.Seed]})
     config: SeedConfig = field(default_factory=SeedConfig)
+    # seeds need the root_path because the contents are not loaded initially
+    # and we need the root_path to load the seed later
+    root_path: Optional[str] = None
 
     @property
     def empty(self):
diff --git a/core/dbt/contracts/graph/unparsed.py b/core/dbt/contracts/graph/unparsed.py
index 662ec6f01ad..453dc883d7b 100644
--- a/core/dbt/contracts/graph/unparsed.py
+++ b/core/dbt/contracts/graph/unparsed.py
@@ -24,7 +24,6 @@
 @dataclass
 class UnparsedBaseNode(dbtClassMixin, Replaceable):
     package_name: str
-    root_path: str
     path: str
     original_file_path: str
 
@@ -364,7 +363,6 @@ def get_table_named(self, name: str) -> Optional[SourceTablePatch]:
 @dataclass
 class UnparsedDocumentation(dbtClassMixin, Replaceable):
     package_name: str
-    root_path: str
     path: str
     original_file_path: str
 
diff --git a/core/dbt/graph/selector_methods.py b/core/dbt/graph/selector_methods.py
index 577cf825512..0e59da38a16 100644
--- a/core/dbt/graph/selector_methods.py
+++ b/core/dbt/graph/selector_methods.py
@@ -286,8 +286,6 @@ def search(self, included_nodes: Set[UniqueId], selector: str) -> Iterator[Uniqu
         root = Path.cwd()
         paths = set(p.relative_to(root) for p in root.glob(selector))
         for node, real_node in self.all_nodes(included_nodes):
-            if Path(real_node.root_path) != root:
-                continue
             ofp = Path(real_node.original_file_path)
             if ofp in paths:
                 yield node
diff --git a/core/dbt/parser/base.py b/core/dbt/parser/base.py
index 4b9e666a421..b6d349803f6 100644
--- a/core/dbt/parser/base.py
+++ b/core/dbt/parser/base.py
@@ -169,7 +169,6 @@ def _create_error_node(
             resource_type=self.resource_type,
             path=path,
             original_file_path=original_file_path,
-            root_path=self.project.project_root,
             package_name=self.project.project_name,
             raw_code=raw_code,
             language=language,
@@ -202,7 +201,6 @@ def _create_parsetime_node(
             "database": self.default_database,
             "fqn": fqn,
             "name": name,
-            "root_path": self.project.project_root,
             "resource_type": self.resource_type,
             "path": path,
             "original_file_path": block.path.original_file_path,
diff --git a/core/dbt/parser/docs.py b/core/dbt/parser/docs.py
index f24f70544d5..a1130eda0da 100644
--- a/core/dbt/parser/docs.py
+++ b/core/dbt/parser/docs.py
@@ -32,7 +32,6 @@ def parse_block(self, block: BlockContents) -> Iterable[ParsedDocumentation]:
         contents = get_rendered(block.contents, {}).strip()
 
         doc = ParsedDocumentation(
-            root_path=self.project.project_root,
             path=block.file.path.relative_path,
             original_file_path=block.path.original_file_path,
             package_name=self.project.project_name,
diff --git a/core/dbt/parser/generic_test.py b/core/dbt/parser/generic_test.py
index 4706119585b..3a7d49c0cf3 100644
--- a/core/dbt/parser/generic_test.py
+++ b/core/dbt/parser/generic_test.py
@@ -35,7 +35,6 @@ def parse_generic_test(
             macro_sql=block.full_block,
             original_file_path=base_node.original_file_path,
             package_name=base_node.package_name,
-            root_path=base_node.root_path,
             resource_type=base_node.resource_type,
             name=name,
             unique_id=unique_id,
@@ -96,7 +95,6 @@ def parse_file(self, block: FileBlock):
             original_file_path=original_file_path,
             package_name=self.project.project_name,
             raw_code=source_file.contents,
-            root_path=self.project.project_root,
             resource_type=NodeType.Macro,
             language="sql",
         )
diff --git a/core/dbt/parser/macros.py b/core/dbt/parser/macros.py
index 4fe6b422595..396d39f57cc 100644
--- a/core/dbt/parser/macros.py
+++ b/core/dbt/parser/macros.py
@@ -41,7 +41,6 @@ def parse_macro(
             macro_sql=block.full_block,
             original_file_path=base_node.original_file_path,
             package_name=base_node.package_name,
-            root_path=base_node.root_path,
             resource_type=base_node.resource_type,
             name=name,
             unique_id=unique_id,
@@ -103,7 +102,6 @@ def parse_file(self, block: FileBlock):
             original_file_path=original_file_path,
             package_name=self.project.project_name,
             raw_code=source_file.contents,
-            root_path=self.project.project_root,
             resource_type=NodeType.Macro,
             language="sql",
         )
diff --git a/core/dbt/parser/schemas.py b/core/dbt/parser/schemas.py
index 8b22427cb39..aa7a96100b9 100644
--- a/core/dbt/parser/schemas.py
+++ b/core/dbt/parser/schemas.py
@@ -245,7 +245,6 @@ def get_hashable_md(data: Union[str, int, float, List, Dict]) -> Union[str, List
             "database": self.default_database,
             "fqn": fqn,
             "name": name,
-            "root_path": self.project.project_root,
             "resource_type": self.resource_type,
             "tags": tags,
             "path": path,
@@ -729,7 +728,6 @@ def add_source_definitions(self, source: UnparsedSourceDefinition) -> None:
                 table=table,
                 path=original_file_path,
                 original_file_path=original_file_path,
-                root_path=self.project.project_root,
                 package_name=package_name,
                 unique_id=unique_id,
                 resource_type=NodeType.Source,
@@ -1024,7 +1022,6 @@ def parse_exposure(self, unparsed: UnparsedExposure):
 
         parsed = ParsedExposure(
             package_name=package_name,
-            root_path=self.project.project_root,
             path=path,
             original_file_path=self.yaml.path.original_file_path,
             unique_id=unique_id,
@@ -1128,7 +1125,6 @@ def parse_metric(self, unparsed: UnparsedMetric):
 
         parsed = ParsedMetric(
             package_name=package_name,
-            root_path=self.project.project_root,
             path=path,
             original_file_path=self.yaml.path.original_file_path,
             unique_id=unique_id,
diff --git a/core/dbt/parser/seeds.py b/core/dbt/parser/seeds.py
index 63550e3f30f..0cd5aeb6307 100644
--- a/core/dbt/parser/seeds.py
+++ b/core/dbt/parser/seeds.py
@@ -7,6 +7,8 @@
 
 class SeedParser(SimpleSQLParser[ParsedSeedNode]):
     def parse_from_dict(self, dct, validate=True) -> ParsedSeedNode:
+        # seeds need the root_path because the contents are not loaded
+        dct["root_path"] = self.project.project_root
         if validate:
             ParsedSeedNode.validate(dct)
         return ParsedSeedNode.from_dict(dct)
diff --git a/core/dbt/parser/sources.py b/core/dbt/parser/sources.py
index 1c55281db56..6cf8dc7e25a 100644
--- a/core/dbt/parser/sources.py
+++ b/core/dbt/parser/sources.py
@@ -160,7 +160,6 @@ def parse_source(self, target: UnpatchedSourceDefinition) -> ParsedSourceDefinit
             database=(source.database or default_database),
             schema=(source.schema or source.name),
             identifier=(table.identifier or table.name),
-            root_path=target.root_path,
             path=target.path,
             original_file_path=target.original_file_path,
             columns=refs.column_info,
diff --git a/core/dbt/parser/sql.py b/core/dbt/parser/sql.py
index 35c8f3072dd..14c74247b62 100644
--- a/core/dbt/parser/sql.py
+++ b/core/dbt/parser/sql.py
@@ -56,7 +56,6 @@ def parse_remote(self, contents) -> Iterable[ParsedMacro]:
             package_name=self.project.project_name,
             raw_code=contents,
             language="sql",
-            root_path=self.project.project_root,
             resource_type=NodeType.Macro,
         )
         for node in self.parse_unparsed_macros(base):
diff --git a/schemas/dbt/manifest/v7.json b/schemas/dbt/manifest/v7.json
index efb3ff99c89..561c6d9b7b1 100644
--- a/schemas/dbt/manifest/v7.json
+++ b/schemas/dbt/manifest/v7.json
@@ -227,7 +227,7 @@
     }
   },
   "additionalProperties": false,
-  "description": "WritableManifest(metadata: dbt.contracts.graph.manifest.ManifestMetadata, nodes: Mapping[str, Union[dbt.contracts.graph.compiled.CompiledAnalysisNode, dbt.contracts.graph.compiled.CompiledSingularTestNode, dbt.contracts.graph.compiled.CompiledModelNode, dbt.contracts.graph.compiled.CompiledHookNode, dbt.contracts.graph.compiled.CompiledRPCNode, dbt.contracts.graph.compiled.CompiledSqlNode, dbt.contracts.graph.compiled.CompiledGenericTestNode, dbt.contracts.graph.compiled.CompiledSeedNode, dbt.contracts.graph.compiled.CompiledSnapshotNode, dbt.contracts.graph.parsed.ParsedAnalysisNode, dbt.contracts.graph.parsed.ParsedSingularTestNode, dbt.contracts.graph.parsed.ParsedHookNode, dbt.contracts.graph.parsed.ParsedModelNode, dbt.contracts.graph.parsed.ParsedRPCNode, dbt.contracts.graph.parsed.ParsedSqlNode, dbt.contracts.graph.parsed.ParsedGenericTestNode, dbt.contracts.graph.parsed.ParsedSeedNode, dbt.contracts.graph.parsed.ParsedSnapshotNode]], sources: Mapping[str, dbt.contracts.graph.parsed.ParsedSourceDefinition], macros: Mapping[str, dbt.contracts.graph.parsed.ParsedMacro], docs: Mapping[str, dbt.contracts.graph.parsed.ParsedDocumentation], exposures: Mapping[str, dbt.contracts.graph.parsed.ParsedExposure], metrics: Mapping[str, dbt.contracts.graph.parsed.ParsedMetric], selectors: Mapping[str, Any], disabled: Union[Mapping[str, List[Union[dbt.contracts.graph.compiled.CompiledAnalysisNode, dbt.contracts.graph.compiled.CompiledSingularTestNode, dbt.contracts.graph.compiled.CompiledModelNode, dbt.contracts.graph.compiled.CompiledHookNode, dbt.contracts.graph.compiled.CompiledRPCNode, dbt.contracts.graph.compiled.CompiledSqlNode, dbt.contracts.graph.compiled.CompiledGenericTestNode, dbt.contracts.graph.compiled.CompiledSeedNode, dbt.contracts.graph.compiled.CompiledSnapshotNode, dbt.contracts.graph.parsed.ParsedAnalysisNode, dbt.contracts.graph.parsed.ParsedSingularTestNode, dbt.contracts.graph.parsed.ParsedHookNode, dbt.contracts.graph.parsed.ParsedModelNode, dbt.contracts.graph.parsed.ParsedRPCNode, dbt.contracts.graph.parsed.ParsedSqlNode, dbt.contracts.graph.parsed.ParsedGenericTestNode, dbt.contracts.graph.parsed.ParsedSeedNode, dbt.contracts.graph.parsed.ParsedSnapshotNode, dbt.contracts.graph.parsed.ParsedSourceDefinition]]], NoneType], parent_map: Union[Dict[str, List[str]], NoneType], child_map: Union[Dict[str, List[str]], NoneType])",
+  "description": "WritableManifest(metadata: dbt.contracts.graph.manifest.ManifestMetadata, nodes: Mapping[str, Union[dbt.contracts.graph.compiled.CompiledAnalysisNode, dbt.contracts.graph.compiled.CompiledSingularTestNode, dbt.contracts.graph.compiled.CompiledModelNode, dbt.contracts.graph.compiled.CompiledHookNode, dbt.contracts.graph.compiled.CompiledRPCNode, dbt.contracts.graph.compiled.CompiledSqlNode, dbt.contracts.graph.compiled.CompiledGenericTestNode, dbt.contracts.graph.compiled.CompiledSeedNode, dbt.contracts.graph.compiled.CompiledSnapshotNode, dbt.contracts.graph.parsed.ParsedAnalysisNode, dbt.contracts.graph.parsed.ParsedSingularTestNode, dbt.contracts.graph.parsed.ParsedHookNode, dbt.contracts.graph.parsed.ParsedModelNode, dbt.contracts.graph.parsed.ParsedRPCNode, dbt.contracts.graph.parsed.ParsedSqlNode, dbt.contracts.graph.parsed.ParsedGenericTestNode, dbt.contracts.graph.parsed.ParsedSeedNode, dbt.contracts.graph.parsed.ParsedSnapshotNode]], sources: Mapping[str, dbt.contracts.graph.parsed.ParsedSourceDefinition], macros: Mapping[str, dbt.contracts.graph.parsed.ParsedMacro], docs: Mapping[str, dbt.contracts.graph.parsed.ParsedDocumentation], exposures: Mapping[str, dbt.contracts.graph.parsed.ParsedExposure], metrics: Mapping[str, dbt.contracts.graph.parsed.ParsedMetric], selectors: Mapping[str, Any], disabled: Optional[Mapping[str, List[Union[dbt.contracts.graph.compiled.CompiledAnalysisNode, dbt.contracts.graph.compiled.CompiledSingularTestNode, dbt.contracts.graph.compiled.CompiledModelNode, dbt.contracts.graph.compiled.CompiledHookNode, dbt.contracts.graph.compiled.CompiledRPCNode, dbt.contracts.graph.compiled.CompiledSqlNode, dbt.contracts.graph.compiled.CompiledGenericTestNode, dbt.contracts.graph.compiled.CompiledSeedNode, dbt.contracts.graph.compiled.CompiledSnapshotNode, dbt.contracts.graph.parsed.ParsedAnalysisNode, dbt.contracts.graph.parsed.ParsedSingularTestNode, dbt.contracts.graph.parsed.ParsedHookNode, dbt.contracts.graph.parsed.ParsedModelNode, dbt.contracts.graph.parsed.ParsedRPCNode, dbt.contracts.graph.parsed.ParsedSqlNode, dbt.contracts.graph.parsed.ParsedGenericTestNode, dbt.contracts.graph.parsed.ParsedSeedNode, dbt.contracts.graph.parsed.ParsedSnapshotNode, dbt.contracts.graph.parsed.ParsedSourceDefinition]]]], parent_map: Optional[Dict[str, List[str]]], child_map: Optional[Dict[str, List[str]]])",
   "definitions": {
     "ManifestMetadata": {
       "type": "object",
@@ -239,12 +239,12 @@
         },
         "dbt_version": {
           "type": "string",
-          "default": "1.3.0b2"
+          "default": "1.4.0a1"
         },
         "generated_at": {
           "type": "string",
           "format": "date-time",
-          "default": "2022-09-14T20:35:15.346636Z"
+          "default": "2022-10-26T21:09:25.635019Z"
         },
         "invocation_id": {
           "oneOf": [
@@ -255,7 +255,7 @@
               "type": "null"
             }
           ],
-          "default": "c59a8269-533c-4b78-a709-5094045afd4d"
+          "default": "db656e72-f60a-461a-93ad-45f01d3c6e65"
         },
         "env": {
           "type": "object",
@@ -323,7 +323,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -366,9 +365,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -523,7 +519,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.3517282
+          "default": 1666818565.639622
         },
         "config_call_dict": {
           "type": "object",
@@ -562,7 +558,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "CompiledAnalysisNode(compiled: bool, database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Union[str, NoneType] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Union[str, NoneType] = None, _pre_injected_sql: Union[str, NoneType] = None)"
+      "description": "CompiledAnalysisNode(compiled: bool, database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Optional[str] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Optional[str] = None, _pre_injected_sql: Optional[str] = None)"
     },
     "FileHash": {
       "type": "object",
@@ -734,7 +730,7 @@
         }
       },
       "additionalProperties": true,
-      "description": "NodeConfig(_extra: Dict[str, Any] = <factory>, enabled: bool = True, alias: Union[str, NoneType] = None, schema: Union[str, NoneType] = None, database: Union[str, NoneType] = None, tags: Union[List[str], str] = <factory>, meta: Dict[str, Any] = <factory>, materialized: str = 'view', incremental_strategy: Union[str, NoneType] = None, persist_docs: Dict[str, Any] = <factory>, post_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, pre_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, quoting: Dict[str, Any] = <factory>, column_types: Dict[str, Any] = <factory>, full_refresh: Union[bool, NoneType] = None, unique_key: Union[str, List[str], NoneType] = None, on_schema_change: Union[str, NoneType] = 'ignore', grants: Dict[str, Any] = <factory>, packages: List[str] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>)"
+      "description": "NodeConfig(_extra: Dict[str, Any] = <factory>, enabled: bool = True, alias: Optional[str] = None, schema: Optional[str] = None, database: Optional[str] = None, tags: Union[List[str], str] = <factory>, meta: Dict[str, Any] = <factory>, materialized: str = 'view', incremental_strategy: Optional[str] = None, persist_docs: Dict[str, Any] = <factory>, post_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, pre_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, quoting: Dict[str, Any] = <factory>, column_types: Dict[str, Any] = <factory>, full_refresh: Optional[bool] = None, unique_key: Union[str, List[str], NoneType] = None, on_schema_change: Optional[str] = 'ignore', grants: Dict[str, Any] = <factory>, packages: List[str] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>)"
     },
     "Hook": {
       "type": "object",
@@ -761,7 +757,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "Hook(sql: str, transaction: bool = True, index: Union[int, NoneType] = None)"
+      "description": "Hook(sql: str, transaction: bool = True, index: Optional[int] = None)"
     },
     "Docs": {
       "type": "object",
@@ -783,7 +779,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "Docs(show: bool = True, node_color: Union[str, NoneType] = None)"
+      "description": "Docs(show: bool = True, node_color: Optional[str] = None)"
     },
     "DependsOn": {
       "type": "object",
@@ -853,7 +849,7 @@
         }
       },
       "additionalProperties": true,
-      "description": "ColumnInfo(name: str, description: str = '', meta: Dict[str, Any] = <factory>, data_type: Union[str, NoneType] = None, quote: Union[bool, NoneType] = None, tags: List[str] = <factory>, _extra: Dict[str, Any] = <factory>)"
+      "description": "ColumnInfo(name: str, description: str = '', meta: Dict[str, Any] = <factory>, data_type: Optional[str] = None, quote: Optional[bool] = None, tags: List[str] = <factory>, _extra: Dict[str, Any] = <factory>)"
     },
     "InjectedCTE": {
       "type": "object",
@@ -882,7 +878,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -925,9 +920,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -1074,7 +1066,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.35441
+          "default": 1666818565.6422322
         },
         "config_call_dict": {
           "type": "object",
@@ -1113,7 +1105,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "CompiledSingularTestNode(compiled: bool, database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.TestConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Union[str, NoneType] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Union[str, NoneType] = None, _pre_injected_sql: Union[str, NoneType] = None)"
+      "description": "CompiledSingularTestNode(compiled: bool, database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.TestConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Optional[str] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Optional[str] = None, _pre_injected_sql: Optional[str] = None)"
     },
     "TestConfig": {
       "type": "object",
@@ -1225,7 +1217,7 @@
         }
       },
       "additionalProperties": true,
-      "description": "TestConfig(_extra: Dict[str, Any] = <factory>, enabled: bool = True, alias: Union[str, NoneType] = None, schema: Union[str, NoneType] = 'dbt_test__audit', database: Union[str, NoneType] = None, tags: Union[List[str], str] = <factory>, meta: Dict[str, Any] = <factory>, materialized: str = 'test', severity: dbt.contracts.graph.model_config.Severity = 'ERROR', store_failures: Union[bool, NoneType] = None, where: Union[str, NoneType] = None, limit: Union[int, NoneType] = None, fail_calc: str = 'count(*)', warn_if: str = '!= 0', error_if: str = '!= 0')"
+      "description": "TestConfig(_extra: Dict[str, Any] = <factory>, enabled: bool = True, alias: Optional[str] = None, schema: Optional[str] = 'dbt_test__audit', database: Optional[str] = None, tags: Union[List[str], str] = <factory>, meta: Dict[str, Any] = <factory>, materialized: str = 'test', severity: dbt.contracts.graph.model_config.Severity = 'ERROR', store_failures: Optional[bool] = None, where: Optional[str] = None, limit: Optional[int] = None, fail_calc: str = 'count(*)', warn_if: str = '!= 0', error_if: str = '!= 0')"
     },
     "CompiledModelNode": {
       "type": "object",
@@ -1237,7 +1229,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -1280,9 +1271,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -1437,7 +1425,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.356541
+          "default": 1666818565.64379
         },
         "config_call_dict": {
           "type": "object",
@@ -1476,7 +1464,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "CompiledModelNode(compiled: bool, database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Union[str, NoneType] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Union[str, NoneType] = None, _pre_injected_sql: Union[str, NoneType] = None)"
+      "description": "CompiledModelNode(compiled: bool, database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Optional[str] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Optional[str] = None, _pre_injected_sql: Optional[str] = None)"
     },
     "CompiledHookNode": {
       "type": "object",
@@ -1488,7 +1476,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -1531,9 +1518,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -1688,7 +1672,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.3582149
+          "default": 1666818565.645806
         },
         "config_call_dict": {
           "type": "object",
@@ -1737,7 +1721,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "CompiledHookNode(compiled: bool, database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Union[str, NoneType] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Union[str, NoneType] = None, _pre_injected_sql: Union[str, NoneType] = None, index: Union[int, NoneType] = None)"
+      "description": "CompiledHookNode(compiled: bool, database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Optional[str] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Optional[str] = None, _pre_injected_sql: Optional[str] = None, index: Optional[int] = None)"
     },
     "CompiledRPCNode": {
       "type": "object",
@@ -1749,7 +1733,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -1792,9 +1775,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -1949,7 +1929,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.359935
+          "default": 1666818565.647713
         },
         "config_call_dict": {
           "type": "object",
@@ -1988,7 +1968,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "CompiledRPCNode(compiled: bool, database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Union[str, NoneType] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Union[str, NoneType] = None, _pre_injected_sql: Union[str, NoneType] = None)"
+      "description": "CompiledRPCNode(compiled: bool, database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Optional[str] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Optional[str] = None, _pre_injected_sql: Optional[str] = None)"
     },
     "CompiledSqlNode": {
       "type": "object",
@@ -2000,7 +1980,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -2043,9 +2022,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -2200,7 +2176,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.361423
+          "default": 1666818565.649301
         },
         "config_call_dict": {
           "type": "object",
@@ -2239,7 +2215,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "CompiledSqlNode(compiled: bool, database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Union[str, NoneType] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Union[str, NoneType] = None, _pre_injected_sql: Union[str, NoneType] = None)"
+      "description": "CompiledSqlNode(compiled: bool, database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Optional[str] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Optional[str] = None, _pre_injected_sql: Optional[str] = None)"
     },
     "CompiledGenericTestNode": {
       "type": "object",
@@ -2252,7 +2228,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -2298,9 +2273,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -2447,7 +2419,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.363411
+          "default": 1666818565.651345
         },
         "config_call_dict": {
           "type": "object",
@@ -2506,7 +2478,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "CompiledGenericTestNode(test_metadata: dbt.contracts.graph.parsed.TestMetadata, compiled: bool, database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.TestConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Union[str, NoneType] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Union[str, NoneType] = None, _pre_injected_sql: Union[str, NoneType] = None, column_name: Union[str, NoneType] = None, file_key_name: Union[str, NoneType] = None)"
+      "description": "CompiledGenericTestNode(test_metadata: dbt.contracts.graph.parsed.TestMetadata, compiled: bool, database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.TestConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Optional[str] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Optional[str] = None, _pre_injected_sql: Optional[str] = None, column_name: Optional[str] = None, file_key_name: Optional[str] = None)"
     },
     "TestMetadata": {
       "type": "object",
@@ -2533,7 +2505,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "TestMetadata(name: str, kwargs: Dict[str, Any] = <factory>, namespace: Union[str, NoneType] = None)"
+      "description": "TestMetadata(name: str, kwargs: Dict[str, Any] = <factory>, namespace: Optional[str] = None)"
     },
     "CompiledSeedNode": {
       "type": "object",
@@ -2545,7 +2517,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -2588,9 +2559,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -2746,7 +2714,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.366584
+          "default": 1666818565.654619
         },
         "config_call_dict": {
           "type": "object",
@@ -2782,10 +2750,20 @@
               "type": "null"
             }
           ]
+        },
+        "root_path": {
+          "oneOf": [
+            {
+              "type": "string"
+            },
+            {
+              "type": "null"
+            }
+          ]
         }
       },
       "additionalProperties": false,
-      "description": "CompiledSeedNode(compiled: bool, database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.SeedConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Union[str, NoneType] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Union[str, NoneType] = None, _pre_injected_sql: Union[str, NoneType] = None)"
+      "description": "CompiledSeedNode(compiled: bool, database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.SeedConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Optional[str] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Optional[str] = None, _pre_injected_sql: Optional[str] = None, root_path: Optional[str] = None)"
     },
     "SeedConfig": {
       "type": "object",
@@ -2950,7 +2928,7 @@
         }
       },
       "additionalProperties": true,
-      "description": "SeedConfig(_extra: Dict[str, Any] = <factory>, enabled: bool = True, alias: Union[str, NoneType] = None, schema: Union[str, NoneType] = None, database: Union[str, NoneType] = None, tags: Union[List[str], str] = <factory>, meta: Dict[str, Any] = <factory>, materialized: str = 'seed', incremental_strategy: Union[str, NoneType] = None, persist_docs: Dict[str, Any] = <factory>, post_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, pre_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, quoting: Dict[str, Any] = <factory>, column_types: Dict[str, Any] = <factory>, full_refresh: Union[bool, NoneType] = None, unique_key: Union[str, List[str], NoneType] = None, on_schema_change: Union[str, NoneType] = 'ignore', grants: Dict[str, Any] = <factory>, packages: List[str] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, quote_columns: Union[bool, NoneType] = None)"
+      "description": "SeedConfig(_extra: Dict[str, Any] = <factory>, enabled: bool = True, alias: Optional[str] = None, schema: Optional[str] = None, database: Optional[str] = None, tags: Union[List[str], str] = <factory>, meta: Dict[str, Any] = <factory>, materialized: str = 'seed', incremental_strategy: Optional[str] = None, persist_docs: Dict[str, Any] = <factory>, post_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, pre_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, quoting: Dict[str, Any] = <factory>, column_types: Dict[str, Any] = <factory>, full_refresh: Optional[bool] = None, unique_key: Union[str, List[str], NoneType] = None, on_schema_change: Optional[str] = 'ignore', grants: Dict[str, Any] = <factory>, packages: List[str] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, quote_columns: Optional[bool] = None)"
     },
     "CompiledSnapshotNode": {
       "type": "object",
@@ -2962,7 +2940,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -3005,9 +2982,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -3162,7 +3136,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.3682182
+          "default": 1666818565.656323
         },
         "config_call_dict": {
           "type": "object",
@@ -3201,7 +3175,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "CompiledSnapshotNode(compiled: bool, database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Union[str, NoneType] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Union[str, NoneType] = None, _pre_injected_sql: Union[str, NoneType] = None)"
+      "description": "CompiledSnapshotNode(compiled: bool, database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, compiled_code: Optional[str] = None, extra_ctes_injected: bool = False, extra_ctes: List[dbt.contracts.graph.compiled.InjectedCTE] = <factory>, relation_name: Optional[str] = None, _pre_injected_sql: Optional[str] = None)"
     },
     "ParsedAnalysisNode": {
       "type": "object",
@@ -3212,7 +3186,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -3252,9 +3225,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -3409,7 +3379,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.369675
+          "default": 1666818565.657857
         },
         "config_call_dict": {
           "type": "object",
@@ -3417,7 +3387,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ParsedAnalysisNode(database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
+      "description": "ParsedAnalysisNode(database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
     },
     "ParsedSingularTestNode": {
       "type": "object",
@@ -3428,7 +3398,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -3468,9 +3437,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -3617,7 +3583,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.370925
+          "default": 1666818565.659179
         },
         "config_call_dict": {
           "type": "object",
@@ -3625,7 +3591,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ParsedSingularTestNode(database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.TestConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
+      "description": "ParsedSingularTestNode(database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.TestConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
     },
     "ParsedHookNode": {
       "type": "object",
@@ -3636,7 +3602,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -3676,9 +3641,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -3833,7 +3795,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.372257
+          "default": 1666818565.6606588
         },
         "config_call_dict": {
           "type": "object",
@@ -3851,7 +3813,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ParsedHookNode(database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, index: Union[int, NoneType] = None)"
+      "description": "ParsedHookNode(database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, index: Optional[int] = None)"
     },
     "ParsedModelNode": {
       "type": "object",
@@ -3862,7 +3824,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -3902,9 +3863,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -4059,7 +4017,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.373705
+          "default": 1666818565.662091
         },
         "config_call_dict": {
           "type": "object",
@@ -4067,7 +4025,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ParsedModelNode(database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
+      "description": "ParsedModelNode(database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
     },
     "ParsedRPCNode": {
       "type": "object",
@@ -4078,7 +4036,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -4118,9 +4075,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -4275,7 +4229,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.375131
+          "default": 1666818565.663405
         },
         "config_call_dict": {
           "type": "object",
@@ -4283,7 +4237,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ParsedRPCNode(database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
+      "description": "ParsedRPCNode(database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
     },
     "ParsedSqlNode": {
       "type": "object",
@@ -4294,7 +4248,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -4334,9 +4287,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -4491,7 +4441,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.376405
+          "default": 1666818565.6648169
         },
         "config_call_dict": {
           "type": "object",
@@ -4499,7 +4449,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ParsedSqlNode(database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
+      "description": "ParsedSqlNode(database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.NodeConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
     },
     "ParsedGenericTestNode": {
       "type": "object",
@@ -4511,7 +4461,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -4554,9 +4503,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -4703,7 +4649,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.3784761
+          "default": 1666818565.666188
         },
         "config_call_dict": {
           "type": "object",
@@ -4731,7 +4677,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ParsedGenericTestNode(test_metadata: dbt.contracts.graph.parsed.TestMetadata, database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.TestConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, column_name: Union[str, NoneType] = None, file_key_name: Union[str, NoneType] = None)"
+      "description": "ParsedGenericTestNode(test_metadata: dbt.contracts.graph.parsed.TestMetadata, database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.TestConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, column_name: Optional[str] = None, file_key_name: Optional[str] = None)"
     },
     "ParsedSeedNode": {
       "type": "object",
@@ -4742,7 +4688,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -4782,9 +4727,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -4940,15 +4882,25 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.380325
+          "default": 1666818565.6676538
         },
         "config_call_dict": {
           "type": "object",
           "default": {}
+        },
+        "root_path": {
+          "oneOf": [
+            {
+              "type": "string"
+            },
+            {
+              "type": "null"
+            }
+          ]
         }
       },
       "additionalProperties": false,
-      "description": "ParsedSeedNode(database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.SeedConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
+      "description": "ParsedSeedNode(database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.SeedConfig = <factory>, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>, root_path: Optional[str] = None)"
     },
     "ParsedSnapshotNode": {
       "type": "object",
@@ -4959,7 +4911,6 @@
         "raw_code",
         "language",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -5000,9 +4951,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -5133,7 +5081,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.3832462
+          "default": 1666818565.6706932
         },
         "config_call_dict": {
           "type": "object",
@@ -5141,7 +5089,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ParsedSnapshotNode(database: Union[str, NoneType], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.SnapshotConfig, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, compiled_path: Union[str, NoneType] = None, build_path: Union[str, NoneType] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
+      "description": "ParsedSnapshotNode(database: Optional[str], schema: str, fqn: List[str], unique_id: str, raw_code: str, language: str, package_name: str, path: str, original_file_path: str, name: str, resource_type: dbt.node_types.NodeType, alias: str, checksum: dbt.contracts.files.FileHash, config: dbt.contracts.graph.model_config.SnapshotConfig, _event_status: Dict[str, Any] = <factory>, tags: List[str] = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, compiled_path: Optional[str] = None, build_path: Optional[str] = None, deferred: bool = False, unrendered_config: Dict[str, Any] = <factory>, created_at: float = <factory>, config_call_dict: Dict[str, Any] = <factory>)"
     },
     "SnapshotConfig": {
       "type": "object",
@@ -5346,7 +5294,7 @@
         }
       },
       "additionalProperties": true,
-      "description": "SnapshotConfig(_extra: Dict[str, Any] = <factory>, enabled: bool = True, alias: Union[str, NoneType] = None, schema: Union[str, NoneType] = None, database: Union[str, NoneType] = None, tags: Union[List[str], str] = <factory>, meta: Dict[str, Any] = <factory>, materialized: str = 'snapshot', incremental_strategy: Union[str, NoneType] = None, persist_docs: Dict[str, Any] = <factory>, post_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, pre_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, quoting: Dict[str, Any] = <factory>, column_types: Dict[str, Any] = <factory>, full_refresh: Union[bool, NoneType] = None, unique_key: Union[str, NoneType] = None, on_schema_change: Union[str, NoneType] = 'ignore', grants: Dict[str, Any] = <factory>, packages: List[str] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, strategy: Union[str, NoneType] = None, target_schema: Union[str, NoneType] = None, target_database: Union[str, NoneType] = None, updated_at: Union[str, NoneType] = None, check_cols: Union[str, List[str], NoneType] = None)"
+      "description": "SnapshotConfig(_extra: Dict[str, Any] = <factory>, enabled: bool = True, alias: Optional[str] = None, schema: Optional[str] = None, database: Optional[str] = None, tags: Union[List[str], str] = <factory>, meta: Dict[str, Any] = <factory>, materialized: str = 'snapshot', incremental_strategy: Optional[str] = None, persist_docs: Dict[str, Any] = <factory>, post_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, pre_hook: List[dbt.contracts.graph.model_config.Hook] = <factory>, quoting: Dict[str, Any] = <factory>, column_types: Dict[str, Any] = <factory>, full_refresh: Optional[bool] = None, unique_key: Optional[str] = None, on_schema_change: Optional[str] = 'ignore', grants: Dict[str, Any] = <factory>, packages: List[str] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, strategy: Optional[str] = None, target_schema: Optional[str] = None, target_database: Optional[str] = None, updated_at: Optional[str] = None, check_cols: Union[str, List[str], NoneType] = None)"
     },
     "ParsedSourceDefinition": {
       "type": "object",
@@ -5355,7 +5303,6 @@
         "schema",
         "unique_id",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -5391,9 +5338,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -5518,11 +5462,11 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.3854342
+          "default": 1666818565.6730208
         }
       },
       "additionalProperties": false,
-      "description": "ParsedSourceDefinition(fqn: List[str], database: Union[str, NoneType], schema: str, unique_id: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, source_name: str, source_description: str, loader: str, identifier: str, resource_type: dbt.node_types.NodeType, _event_status: Dict[str, Any] = <factory>, quoting: dbt.contracts.graph.unparsed.Quoting = <factory>, loaded_at_field: Union[str, NoneType] = None, freshness: Union[dbt.contracts.graph.unparsed.FreshnessThreshold, NoneType] = None, external: Union[dbt.contracts.graph.unparsed.ExternalTable, NoneType] = None, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, source_meta: Dict[str, Any] = <factory>, tags: List[str] = <factory>, config: dbt.contracts.graph.model_config.SourceConfig = <factory>, patch_path: Union[pathlib.Path, NoneType] = None, unrendered_config: Dict[str, Any] = <factory>, relation_name: Union[str, NoneType] = None, created_at: float = <factory>)"
+      "description": "ParsedSourceDefinition(fqn: List[str], database: Optional[str], schema: str, unique_id: str, package_name: str, path: str, original_file_path: str, name: str, source_name: str, source_description: str, loader: str, identifier: str, resource_type: dbt.node_types.NodeType, _event_status: Dict[str, Any] = <factory>, quoting: dbt.contracts.graph.unparsed.Quoting = <factory>, loaded_at_field: Optional[str] = None, freshness: Optional[dbt.contracts.graph.unparsed.FreshnessThreshold] = None, external: Optional[dbt.contracts.graph.unparsed.ExternalTable] = None, description: str = '', columns: Dict[str, dbt.contracts.graph.parsed.ColumnInfo] = <factory>, meta: Dict[str, Any] = <factory>, source_meta: Dict[str, Any] = <factory>, tags: List[str] = <factory>, config: dbt.contracts.graph.model_config.SourceConfig = <factory>, patch_path: Optional[pathlib.Path] = None, unrendered_config: Dict[str, Any] = <factory>, relation_name: Optional[str] = None, created_at: float = <factory>)"
     },
     "Quoting": {
       "type": "object",
@@ -5570,7 +5514,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "Quoting(database: Union[bool, NoneType] = None, schema: Union[bool, NoneType] = None, identifier: Union[bool, NoneType] = None, column: Union[bool, NoneType] = None)"
+      "description": "Quoting(database: Optional[bool] = None, schema: Optional[bool] = None, identifier: Optional[bool] = None, column: Optional[bool] = None)"
     },
     "FreshnessThreshold": {
       "type": "object",
@@ -5616,7 +5560,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "FreshnessThreshold(warn_after: Union[dbt.contracts.graph.unparsed.Time, NoneType] = <factory>, error_after: Union[dbt.contracts.graph.unparsed.Time, NoneType] = <factory>, filter: Union[str, NoneType] = None)"
+      "description": "FreshnessThreshold(warn_after: Optional[dbt.contracts.graph.unparsed.Time] = <factory>, error_after: Optional[dbt.contracts.graph.unparsed.Time] = <factory>, filter: Optional[str] = None)"
     },
     "FreshnessMetadata": {
       "type": "object",
@@ -5628,12 +5572,12 @@
         },
         "dbt_version": {
           "type": "string",
-          "default": "1.3.0b2"
+          "default": "1.4.0a1"
         },
         "generated_at": {
           "type": "string",
           "format": "date-time",
-          "default": "2022-09-14T20:35:15.341700Z"
+          "default": "2022-10-26T21:09:25.629684Z"
         },
         "invocation_id": {
           "oneOf": [
@@ -5644,7 +5588,7 @@
               "type": "null"
             }
           ],
-          "default": "c59a8269-533c-4b78-a709-5094045afd4d"
+          "default": "db656e72-f60a-461a-93ad-45f01d3c6e65"
         },
         "env": {
           "type": "object",
@@ -5655,7 +5599,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "FreshnessMetadata(dbt_schema_version: str = <factory>, dbt_version: str = '1.3.0b2', generated_at: datetime.datetime = <factory>, invocation_id: Union[str, NoneType] = <factory>, env: Dict[str, str] = <factory>)"
+      "description": "FreshnessMetadata(dbt_schema_version: str = <factory>, dbt_version: str = '1.4.0a1', generated_at: datetime.datetime = <factory>, invocation_id: Optional[str] = <factory>, env: Dict[str, str] = <factory>)"
     },
     "SourceFreshnessRuntimeError": {
       "type": "object",
@@ -5781,7 +5725,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "Time(count: Union[int, NoneType] = None, period: Union[dbt.contracts.graph.unparsed.TimePeriod, NoneType] = None)"
+      "description": "Time(count: Optional[int] = None, period: Optional[dbt.contracts.graph.unparsed.TimePeriod] = None)"
     },
     "TimingInfo": {
       "type": "object",
@@ -5816,7 +5760,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "TimingInfo(name: str, started_at: Union[datetime.datetime, NoneType] = None, completed_at: Union[datetime.datetime, NoneType] = None)"
+      "description": "TimingInfo(name: str, started_at: Optional[datetime.datetime] = None, completed_at: Optional[datetime.datetime] = None)"
     },
     "ExternalTable": {
       "type": "object",
@@ -5864,6 +5808,12 @@
         },
         "partitions": {
           "oneOf": [
+            {
+              "type": "array",
+              "items": {
+                "type": "string"
+              }
+            },
             {
               "type": "array",
               "items": {
@@ -5877,7 +5827,7 @@
         }
       },
       "additionalProperties": true,
-      "description": "ExternalTable(_extra: Dict[str, Any] = <factory>, location: Union[str, NoneType] = None, file_format: Union[str, NoneType] = None, row_format: Union[str, NoneType] = None, tbl_properties: Union[str, NoneType] = None, partitions: Union[List[dbt.contracts.graph.unparsed.ExternalPartition], NoneType] = None)"
+      "description": "ExternalTable(_extra: Dict[str, Any] = <factory>, location: Optional[str] = None, file_format: Optional[str] = None, row_format: Optional[str] = None, tbl_properties: Optional[str] = None, partitions: Union[List[str], List[dbt.contracts.graph.unparsed.ExternalPartition], NoneType] = None)"
     },
     "ExternalPartition": {
       "type": "object",
@@ -5920,7 +5870,6 @@
       "required": [
         "unique_id",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -5934,9 +5883,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -6002,7 +5948,7 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.386226
+          "default": 1666818565.6739898
         },
         "supported_languages": {
           "oneOf": [
@@ -6023,7 +5969,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ParsedMacro(unique_id: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, macro_sql: str, resource_type: dbt.node_types.NodeType, tags: List[str] = <factory>, depends_on: dbt.contracts.graph.parsed.MacroDependsOn = <factory>, description: str = '', meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Union[str, NoneType] = None, arguments: List[dbt.contracts.graph.unparsed.MacroArgument] = <factory>, created_at: float = <factory>, supported_languages: Union[List[dbt.node_types.ModelLanguage], NoneType] = None)"
+      "description": "ParsedMacro(unique_id: str, package_name: str, path: str, original_file_path: str, name: str, macro_sql: str, resource_type: dbt.node_types.NodeType, tags: List[str] = <factory>, depends_on: dbt.contracts.graph.parsed.MacroDependsOn = <factory>, description: str = '', meta: Dict[str, Any] = <factory>, docs: dbt.contracts.graph.unparsed.Docs = <factory>, patch_path: Optional[str] = None, arguments: List[dbt.contracts.graph.unparsed.MacroArgument] = <factory>, created_at: float = <factory>, supported_languages: Optional[List[dbt.node_types.ModelLanguage]] = None)"
     },
     "MacroDependsOn": {
       "type": "object",
@@ -6065,14 +6011,13 @@
         }
       },
       "additionalProperties": false,
-      "description": "MacroArgument(name: str, type: Union[str, NoneType] = None, description: str = '')"
+      "description": "MacroArgument(name: str, type: Optional[str] = None, description: str = '')"
     },
     "ParsedDocumentation": {
       "type": "object",
       "required": [
         "unique_id",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -6085,9 +6030,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -6102,7 +6044,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ParsedDocumentation(unique_id: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, block_contents: str)"
+      "description": "ParsedDocumentation(unique_id: str, package_name: str, path: str, original_file_path: str, name: str, block_contents: str)"
     },
     "ParsedExposure": {
       "type": "object",
@@ -6110,7 +6052,6 @@
         "fqn",
         "unique_id",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
@@ -6130,9 +6071,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -6263,11 +6201,11 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.3878772
+          "default": 1666818565.6757529
         }
       },
       "additionalProperties": false,
-      "description": "ParsedExposure(fqn: List[str], unique_id: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, type: dbt.contracts.graph.unparsed.ExposureType, owner: dbt.contracts.graph.unparsed.ExposureOwner, resource_type: dbt.node_types.NodeType = <NodeType.Exposure: 'exposure'>, description: str = '', label: Union[str, NoneType] = None, maturity: Union[dbt.contracts.graph.unparsed.MaturityType, NoneType] = None, meta: Dict[str, Any] = <factory>, tags: List[str] = <factory>, config: dbt.contracts.graph.model_config.ExposureConfig = <factory>, unrendered_config: Dict[str, Any] = <factory>, url: Union[str, NoneType] = None, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, created_at: float = <factory>)"
+      "description": "ParsedExposure(fqn: List[str], unique_id: str, package_name: str, path: str, original_file_path: str, name: str, type: dbt.contracts.graph.unparsed.ExposureType, owner: dbt.contracts.graph.unparsed.ExposureOwner, resource_type: dbt.node_types.NodeType = <NodeType.Exposure: 'exposure'>, description: str = '', label: Optional[str] = None, maturity: Optional[dbt.contracts.graph.unparsed.MaturityType] = None, meta: Dict[str, Any] = <factory>, tags: List[str] = <factory>, config: dbt.contracts.graph.model_config.ExposureConfig = <factory>, unrendered_config: Dict[str, Any] = <factory>, url: Optional[str] = None, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, refs: List[List[str]] = <factory>, sources: List[List[str]] = <factory>, created_at: float = <factory>)"
     },
     "ExposureOwner": {
       "type": "object",
@@ -6290,7 +6228,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "ExposureOwner(email: str, name: Union[str, NoneType] = None)"
+      "description": "ExposureOwner(email: str, name: Optional[str] = None)"
     },
     "ExposureConfig": {
       "type": "object",
@@ -6310,13 +6248,13 @@
         "fqn",
         "unique_id",
         "package_name",
-        "root_path",
         "path",
         "original_file_path",
         "name",
         "description",
         "label",
         "calculation_method",
+        "timestamp",
         "expression",
         "filters",
         "time_grains",
@@ -6335,9 +6273,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
         "path": {
           "type": "string"
         },
@@ -6356,18 +6291,11 @@
         "calculation_method": {
           "type": "string"
         },
-        "expression": {
+        "timestamp": {
           "type": "string"
         },
-        "timestamp": {
-          "oneOf": [
-            {
-              "type": "string"
-            },
-            {
-              "type": "null"
-            }
-          ]
+        "expression": {
+          "type": "string"
         },
         "filters": {
           "type": "array",
@@ -6496,11 +6424,11 @@
         },
         "created_at": {
           "type": "number",
-          "default": 1663187715.38939
+          "default": 1666818565.677998
         }
       },
       "additionalProperties": false,
-      "description": "ParsedMetric(fqn: List[str], unique_id: str, package_name: str, root_path: str, path: str, original_file_path: str, name: str, description: str, label: str, calculation_method: str, expression: str, timestamp: Union[str, NoneType], filters: List[dbt.contracts.graph.unparsed.MetricFilter], time_grains: List[str], dimensions: List[str], window: Union[dbt.contracts.graph.unparsed.MetricTime, NoneType], model: Union[str, NoneType] = None, model_unique_id: Union[str, NoneType] = None, resource_type: dbt.node_types.NodeType = <NodeType.Metric: 'metric'>, meta: Dict[str, Any] = <factory>, tags: List[str] = <factory>, config: dbt.contracts.graph.model_config.MetricConfig = <factory>, unrendered_config: Dict[str, Any] = <factory>, sources: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, refs: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, created_at: float = <factory>)"
+      "description": "ParsedMetric(fqn: List[str], unique_id: str, package_name: str, path: str, original_file_path: str, name: str, description: str, label: str, calculation_method: str, timestamp: str, expression: str, filters: List[dbt.contracts.graph.unparsed.MetricFilter], time_grains: List[str], dimensions: List[str], window: Optional[dbt.contracts.graph.unparsed.MetricTime] = None, model: Optional[str] = None, model_unique_id: Optional[str] = None, resource_type: dbt.node_types.NodeType = <NodeType.Metric: 'metric'>, meta: Dict[str, Any] = <factory>, tags: List[str] = <factory>, config: dbt.contracts.graph.model_config.MetricConfig = <factory>, unrendered_config: Dict[str, Any] = <factory>, sources: List[List[str]] = <factory>, depends_on: dbt.contracts.graph.parsed.DependsOn = <factory>, refs: List[List[str]] = <factory>, metrics: List[List[str]] = <factory>, created_at: float = <factory>)"
     },
     "MetricFilter": {
       "type": "object",
@@ -6555,7 +6483,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "MetricTime(count: Union[int, NoneType] = None, period: Union[dbt.contracts.graph.unparsed.MetricTimePeriod, NoneType] = None)"
+      "description": "MetricTime(count: Optional[int] = None, period: Optional[dbt.contracts.graph.unparsed.MetricTimePeriod] = None)"
     },
     "MetricConfig": {
       "type": "object",
@@ -6572,4 +6500,4 @@
   },
   "$schema": "http://json-schema.org/draft-07/schema#",
   "$id": "https://schemas.getdbt.com/dbt/manifest/v7.json"
-}
+}
\ No newline at end of file
diff --git a/schemas/dbt/run-results/v4.json b/schemas/dbt/run-results/v4.json
index 27326fe8b62..5d8d600beb2 100644
--- a/schemas/dbt/run-results/v4.json
+++ b/schemas/dbt/run-results/v4.json
@@ -37,12 +37,12 @@
         },
         "dbt_version": {
           "type": "string",
-          "default": "1.2.0a1"
+          "default": "1.4.0a1"
         },
         "generated_at": {
           "type": "string",
           "format": "date-time",
-          "default": "2022-04-15T20:38:22.700175Z"
+          "default": "2022-10-26T21:09:25.631845Z"
         },
         "invocation_id": {
           "oneOf": [
@@ -53,7 +53,7 @@
               "type": "null"
             }
           ],
-          "default": "34abf75e-59d3-442f-920c-fa3843d98014"
+          "default": "db656e72-f60a-461a-93ad-45f01d3c6e65"
         },
         "env": {
           "type": "object",
@@ -64,7 +64,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "BaseArtifactMetadata(dbt_schema_version: str, dbt_version: str = '1.2.0a1', generated_at: datetime.datetime = <factory>, invocation_id: Union[str, NoneType] = <factory>, env: Dict[str, str] = <factory>)"
+      "description": "BaseArtifactMetadata(dbt_schema_version: str, dbt_version: str = '1.4.0a1', generated_at: datetime.datetime = <factory>, invocation_id: Optional[str] = <factory>, env: Dict[str, str] = <factory>)"
     },
     "RunResultOutput": {
       "type": "object",
@@ -148,7 +148,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "RunResultOutput(status: Union[dbt.contracts.results.RunStatus, dbt.contracts.results.TestStatus, dbt.contracts.results.FreshnessStatus], timing: List[dbt.contracts.results.TimingInfo], thread_id: str, execution_time: float, adapter_response: Dict[str, Any], message: Union[str, NoneType], failures: Union[int, NoneType], unique_id: str)"
+      "description": "RunResultOutput(status: Union[dbt.contracts.results.RunStatus, dbt.contracts.results.TestStatus, dbt.contracts.results.FreshnessStatus], timing: List[dbt.contracts.results.TimingInfo], thread_id: str, execution_time: float, adapter_response: Dict[str, Any], message: Optional[str], failures: Optional[int], unique_id: str)"
     },
     "TimingInfo": {
       "type": "object",
@@ -183,7 +183,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "TimingInfo(name: str, started_at: Union[datetime.datetime, NoneType] = None, completed_at: Union[datetime.datetime, NoneType] = None)"
+      "description": "TimingInfo(name: str, started_at: Optional[datetime.datetime] = None, completed_at: Optional[datetime.datetime] = None)"
     },
     "FreshnessMetadata": {
       "type": "object",
@@ -195,12 +195,12 @@
         },
         "dbt_version": {
           "type": "string",
-          "default": "1.2.0a1"
+          "default": "1.4.0a1"
         },
         "generated_at": {
           "type": "string",
           "format": "date-time",
-          "default": "2022-04-15T20:38:22.697740Z"
+          "default": "2022-10-26T21:09:25.629684Z"
         },
         "invocation_id": {
           "oneOf": [
@@ -211,7 +211,7 @@
               "type": "null"
             }
           ],
-          "default": "34abf75e-59d3-442f-920c-fa3843d98014"
+          "default": "db656e72-f60a-461a-93ad-45f01d3c6e65"
         },
         "env": {
           "type": "object",
@@ -222,7 +222,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "FreshnessMetadata(dbt_schema_version: str = <factory>, dbt_version: str = '1.2.0a1', generated_at: datetime.datetime = <factory>, invocation_id: Union[str, NoneType] = <factory>, env: Dict[str, str] = <factory>)"
+      "description": "FreshnessMetadata(dbt_schema_version: str = <factory>, dbt_version: str = '1.4.0a1', generated_at: datetime.datetime = <factory>, invocation_id: Optional[str] = <factory>, env: Dict[str, str] = <factory>)"
     },
     "SourceFreshnessRuntimeError": {
       "type": "object",
@@ -361,7 +361,7 @@
         }
       },
       "additionalProperties": false,
-      "description": "FreshnessThreshold(warn_after: Union[dbt.contracts.graph.unparsed.Time, NoneType] = <factory>, error_after: Union[dbt.contracts.graph.unparsed.Time, NoneType] = <factory>, filter: Union[str, NoneType] = None)"
+      "description": "FreshnessThreshold(warn_after: Optional[dbt.contracts.graph.unparsed.Time] = <factory>, error_after: Optional[dbt.contracts.graph.unparsed.Time] = <factory>, filter: Optional[str] = None)"
     },
     "Time": {
       "type": "object",
@@ -394,9 +394,9 @@
         }
       },
       "additionalProperties": false,
-      "description": "Time(count: Union[int, NoneType] = None, period: Union[dbt.contracts.graph.unparsed.TimePeriod, NoneType] = None)"
+      "description": "Time(count: Optional[int] = None, period: Optional[dbt.contracts.graph.unparsed.TimePeriod] = None)"
     }
   },
   "$schema": "http://json-schema.org/draft-07/schema#",
   "$id": "https://schemas.getdbt.com/dbt/run-results/v4.json"
-}
+}
\ No newline at end of file
diff --git a/test/unit/test_compiler.py b/test/unit/test_compiler.py
index 506c427a067..919f897c549 100644
--- a/test/unit/test_compiler.py
+++ b/test/unit/test_compiler.py
@@ -95,7 +95,6 @@ def test__prepend_ctes__already_has_cte(self):
                     unique_id='model.root.view',
                     fqn=['root', 'view'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=self.model_config,
                     path='view.sql',
                     original_file_path='view.sql',
@@ -112,7 +111,6 @@ def test__prepend_ctes__already_has_cte(self):
                     unique_id='model.root.ephemeral',
                     fqn=['root', 'ephemeral'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=ephemeral_config,
                     path='ephemeral.sql',
                     original_file_path='ephemeral.sql',
@@ -159,7 +157,6 @@ def test__prepend_ctes__no_ctes(self):
                     unique_id='model.root.view',
                     fqn=['root', 'view'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=self.model_config,
                     path='view.sql',
                     original_file_path='view.sql',
@@ -177,7 +174,6 @@ def test__prepend_ctes__no_ctes(self):
                     unique_id='model.root.view_no_cte',
                     fqn=['root', 'view_no_cte'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=self.model_config,
                     path='view.sql',
                     original_file_path='view.sql',
@@ -237,7 +233,6 @@ def test__prepend_ctes(self):
                     unique_id='model.root.view',
                     fqn=['root', 'view'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=self.model_config,
                     path='view.sql',
                     original_file_path='view.sql',
@@ -254,7 +249,6 @@ def test__prepend_ctes(self):
                     unique_id='model.root.ephemeral',
                     fqn=['root', 'ephemeral'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=ephemeral_config,
                     path='ephemeral.sql',
                     original_file_path='ephemeral.sql',
@@ -299,7 +293,6 @@ def test__prepend_ctes__cte_not_compiled(self):
             unique_id='model.root.ephemeral',
             fqn=['root', 'ephemeral'],
             package_name='root',
-            root_path='/usr/src/app',
             refs=[],
             sources=[],
             depends_on=DependsOn(),
@@ -320,7 +313,6 @@ def test__prepend_ctes__cte_not_compiled(self):
             unique_id='model.root.ephemeral',
             fqn=['root', 'ephemeral'],
             package_name='root',
-            root_path='/usr/src/app',
             refs=[],
             sources=[],
             depends_on=DependsOn(),
@@ -348,7 +340,6 @@ def test__prepend_ctes__cte_not_compiled(self):
                     unique_id='model.root.view',
                     fqn=['root', 'view'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     refs=[],
                     sources=[],
                     depends_on=DependsOn(nodes=['model.root.ephemeral']),
@@ -418,7 +409,6 @@ def test__prepend_ctes__multiple_levels(self):
                     unique_id='model.root.view',
                     fqn=['root', 'view'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=self.model_config,
                     path='view.sql',
                     original_file_path='view.sql',
@@ -436,7 +426,6 @@ def test__prepend_ctes__multiple_levels(self):
                     unique_id='model.root.ephemeral',
                     fqn=['root', 'ephemeral'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=ephemeral_config,
                     path='ephemeral.sql',
                     original_file_path='ephemeral.sql',
@@ -453,7 +442,6 @@ def test__prepend_ctes__multiple_levels(self):
                     unique_id='model.root.ephemeral_level_two',
                     fqn=['root', 'ephemeral_level_two'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=ephemeral_config,
                     path='ephemeral_level_two.sql',
                     original_file_path='ephemeral_level_two.sql',
@@ -509,7 +497,6 @@ def test__prepend_ctes__valid_ephemeral_sql(self):
                     unique_id='model.root.view',
                     fqn=['root', 'view'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=self.model_config,
                     path='view.sql',
                     original_file_path='view.sql',
@@ -526,7 +513,6 @@ def test__prepend_ctes__valid_ephemeral_sql(self):
                     unique_id='model.root.inner_ephemeral',
                     fqn=['root', 'inner_ephemeral'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=ephemeral_config,
                     path='inner_ephemeral.sql',
                     original_file_path='inner_ephemeral.sql',
@@ -543,7 +529,6 @@ def test__prepend_ctes__valid_ephemeral_sql(self):
                     unique_id='model.root.ephemeral',
                     fqn=['root', 'ephemeral'],
                     package_name='root',
-                    root_path='/usr/src/app',
                     config=ephemeral_config,
                     path='ephemeral.sql',
                     original_file_path='ephemeral.sql',
diff --git a/test/unit/test_context.py b/test/unit/test_context.py
index 668d76cc525..01c4f678abe 100644
--- a/test/unit/test_context.py
+++ b/test/unit/test_context.py
@@ -43,7 +43,6 @@ def setUp(self):
             fqn=["root", "model_one"],
             package_name="root",
             original_file_path="model_one.sql",
-            root_path="/usr/src/app",
             refs=[],
             sources=[],
             depends_on=DependsOn(),
@@ -283,7 +282,6 @@ def model():
         fqn=["root", "model_one"],
         package_name="root",
         original_file_path="model_one.sql",
-        root_path="/usr/src/app",
         refs=[],
         sources=[],
         depends_on=DependsOn(),
@@ -346,7 +344,6 @@ def mock_model():
         fqn=["root", "model_one"],
         package_name="root",
         original_file_path="model_one.sql",
-        root_path="/usr/src/app",
         refs=[],
         sources=[],
         depends_on=DependsOn(),
diff --git a/test/unit/test_contracts_graph_compiled.py b/test/unit/test_contracts_graph_compiled.py
index aaa44857326..982673514ab 100644
--- a/test/unit/test_contracts_graph_compiled.py
+++ b/test/unit/test_contracts_graph_compiled.py
@@ -24,7 +24,6 @@
 def basic_uncompiled_model():
     return CompiledModelNode(
         package_name='test',
-        root_path='/root/',
         path='/root/models/foo.sql',
         original_file_path='models/foo.sql',
         language='sql',
@@ -57,7 +56,6 @@ def basic_uncompiled_model():
 def basic_compiled_model():
     return CompiledModelNode(
         package_name='test',
-        root_path='/root/',
         path='/root/models/foo.sql',
         original_file_path='models/foo.sql',
         language='sql',
@@ -91,7 +89,6 @@ def basic_compiled_model():
 def minimal_uncompiled_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1,
         'resource_type': str(NodeType.Model),
         'path': '/root/models/foo.sql',
@@ -114,7 +111,6 @@ def minimal_uncompiled_dict():
 def basic_uncompiled_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1,
         'resource_type': str(NodeType.Model),
         'path': '/root/models/foo.sql',
@@ -164,7 +160,6 @@ def basic_uncompiled_dict():
 def basic_compiled_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1,
         'resource_type': str(NodeType.Model),
         'path': '/root/models/foo.sql',
@@ -328,7 +323,6 @@ def test_compare_changed_model(func, basic_uncompiled_model):
 def minimal_schema_test_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1,
         'resource_type': str(NodeType.Test),
         'path': '/root/x/path.sql',
@@ -354,7 +348,6 @@ def minimal_schema_test_dict():
 def basic_uncompiled_schema_test_node():
     return CompiledGenericTestNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -388,7 +381,6 @@ def basic_uncompiled_schema_test_node():
 def basic_compiled_schema_test_node():
     return CompiledGenericTestNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -426,7 +418,6 @@ def basic_compiled_schema_test_node():
 def basic_uncompiled_schema_test_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1,
         'resource_type': str(NodeType.Test),
         'path': '/root/x/path.sql',
@@ -477,7 +468,6 @@ def basic_uncompiled_schema_test_dict():
 def basic_compiled_schema_test_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1,
         'resource_type': str(NodeType.Test),
         'path': '/root/x/path.sql',
diff --git a/test/unit/test_contracts_graph_parsed.py b/test/unit/test_contracts_graph_parsed.py
index b5ec79a7aba..9d11b1cfbc8 100644
--- a/test/unit/test_contracts_graph_parsed.py
+++ b/test/unit/test_contracts_graph_parsed.py
@@ -127,7 +127,6 @@ def test_config_same(unrendered_node_config_dict, func):
 def base_parsed_model_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Model),
         'path': '/root/x/path.sql',
@@ -175,7 +174,6 @@ def base_parsed_model_dict():
 def basic_parsed_model_object():
     return ParsedModelNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -204,7 +202,6 @@ def basic_parsed_model_object():
 def minimal_parsed_model_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Model),
         'path': '/root/x/path.sql',
@@ -226,7 +223,6 @@ def minimal_parsed_model_dict():
 def complex_parsed_model_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Model),
         'path': '/root/x/path.sql',
@@ -285,7 +281,6 @@ def complex_parsed_model_dict():
 def complex_parsed_model_object():
     return ParsedModelNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -428,7 +423,6 @@ def test_compare_changed_model(func, basic_parsed_model_object):
 def basic_parsed_seed_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Seed),
         'path': '/root/seeds/seed.csv',
@@ -476,7 +470,6 @@ def basic_parsed_seed_dict():
 def basic_parsed_seed_object():
     return ParsedSeedNode(
         name='foo',
-        root_path='/root/',
         resource_type=NodeType.Seed,
         path='/root/seeds/seed.csv',
         original_file_path='seeds/seed.csv',
@@ -509,7 +502,6 @@ def basic_parsed_seed_object():
 def minimal_parsed_seed_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Seed),
         'path': '/root/seeds/seed.csv',
@@ -530,7 +522,6 @@ def minimal_parsed_seed_dict():
 def complex_parsed_seed_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Seed),
         'path': '/root/seeds/seed.csv',
@@ -581,7 +572,6 @@ def complex_parsed_seed_dict():
 def complex_parsed_seed_object():
     return ParsedSeedNode(
         name='foo',
-        root_path='/root/',
         resource_type=NodeType.Seed,
         path='/root/seeds/seed.csv',
         original_file_path='seeds/seed.csv',
@@ -731,7 +721,6 @@ def basic_parsed_model_patch_object():
 def patched_model_object():
     return ParsedModelNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -771,7 +760,6 @@ def test_patch_parsed_model(basic_parsed_model_object, basic_parsed_model_patch_
 def minimal_parsed_hook_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'resource_type': str(NodeType.Operation),
         'path': '/root/x/path.sql',
         'original_file_path': '/root/path.sql',
@@ -791,7 +779,6 @@ def minimal_parsed_hook_dict():
 def base_parsed_hook_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Operation),
         'path': '/root/x/path.sql',
@@ -839,7 +826,6 @@ def base_parsed_hook_dict():
 def base_parsed_hook_object():
     return ParsedHookNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -869,7 +855,6 @@ def base_parsed_hook_object():
 def complex_parsed_hook_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Operation),
         'path': '/root/x/path.sql',
@@ -928,7 +913,6 @@ def complex_parsed_hook_dict():
 def complex_parsed_hook_object():
     return ParsedHookNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -996,7 +980,6 @@ def test_invalid_hook_index_type(base_parsed_hook_dict):
 def minimal_parsed_schema_test_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Test),
         'path': '/root/x/path.sql',
@@ -1023,7 +1006,6 @@ def minimal_parsed_schema_test_dict():
 def basic_parsed_schema_test_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Test),
         'path': '/root/x/path.sql',
@@ -1071,7 +1053,6 @@ def basic_parsed_schema_test_dict():
 def basic_parsed_schema_test_object():
     return ParsedGenericTestNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -1100,7 +1081,6 @@ def basic_parsed_schema_test_object():
 def complex_parsed_schema_test_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Test),
         'path': '/root/x/path.sql',
@@ -1165,7 +1145,6 @@ def complex_parsed_schema_test_object():
     cfg._extra.update({'extra_key': 'extra value'})
     return ParsedGenericTestNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -1459,7 +1438,6 @@ def test_invalid_check_value(basic_check_snapshot_config_dict):
 def basic_timestamp_snapshot_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Snapshot),
         'path': '/root/x/path.sql',
@@ -1518,7 +1496,6 @@ def basic_timestamp_snapshot_dict():
 def basic_timestamp_snapshot_object():
     return ParsedSnapshotNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -1567,7 +1544,6 @@ def basic_intermediate_timestamp_snapshot_object():
 
     return IntermediateSnapshotNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -1602,7 +1578,6 @@ def basic_intermediate_timestamp_snapshot_object():
 def basic_check_snapshot_dict():
     return {
         'name': 'foo',
-        'root_path': '/root/',
         'created_at': 1.0,
         'resource_type': str(NodeType.Snapshot),
         'path': '/root/x/path.sql',
@@ -1661,7 +1636,6 @@ def basic_check_snapshot_dict():
 def basic_check_snapshot_object():
     return ParsedSnapshotNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -1710,7 +1684,6 @@ def basic_intermediate_check_snapshot_object():
 
     return IntermediateSnapshotNode(
         package_name='test',
-        root_path='/root/',
         path='/root/x/path.sql',
         original_file_path='/root/path.sql',
         language='sql',
@@ -1829,7 +1802,6 @@ def _ok_dict(self):
             'created_at': 1.0,
             'package_name': 'test',
             'macro_sql': '{% macro foo() %}select 1 as id{% endmacro %}',
-            'root_path': '/root/',
             'resource_type': 'macro',
             'unique_id': 'macro.test.foo',
             'tags': [],
@@ -1848,7 +1820,6 @@ def test_ok(self):
             original_file_path='/root/path.sql',
             package_name='test',
             macro_sql='{% macro foo() %}select 1 as id{% endmacro %}',
-            root_path='/root/',
             resource_type=NodeType.Macro,
             unique_id='macro.test.foo',
             tags=[],
@@ -1881,7 +1852,6 @@ def _ok_dict(self):
             'original_file_path': '/root/docs/doc.md',
             'package_name': 'test',
             'path': '/root/docs',
-            'root_path': '/root',
             'unique_id': 'test.foo',
         }
 
@@ -1889,7 +1859,6 @@ def test_ok(self):
         doc_dict = self._ok_dict()
         doc = self.ContractType(
             package_name='test',
-            root_path='/root',
             path='/root/docs',
             original_file_path='/root/docs/doc.md',
             name='foo',
@@ -1914,7 +1883,6 @@ def test_invalid_extra(self):
 def minimum_parsed_source_definition_dict():
     return {
         'package_name': 'test',
-        'root_path': '/root',
         'path': '/root/models/sources.yml',
         'original_file_path': '/root/models/sources.yml',
         'created_at': 1.0,
@@ -1935,7 +1903,6 @@ def minimum_parsed_source_definition_dict():
 def basic_parsed_source_definition_dict():
     return {
         'package_name': 'test',
-        'root_path': '/root',
         'path': '/root/models/sources.yml',
         'original_file_path': '/root/models/sources.yml',
         'created_at': 1.0,
@@ -1977,7 +1944,6 @@ def basic_parsed_source_definition_object():
         path='/root/models/sources.yml',
         quoting=Quoting(),
         resource_type=NodeType.Source,
-        root_path='/root',
         schema='some_schema',
         source_description='my source description',
         source_name='my_source',
@@ -1991,7 +1957,6 @@ def basic_parsed_source_definition_object():
 def complex_parsed_source_definition_dict():
     return {
         'package_name': 'test',
-        'root_path': '/root',
         'path': '/root/models/sources.yml',
         'original_file_path': '/root/models/sources.yml',
         'created_at': 1.0,
@@ -2038,7 +2003,6 @@ def complex_parsed_source_definition_object():
         path='/root/models/sources.yml',
         quoting=Quoting(),
         resource_type=NodeType.Source,
-        root_path='/root',
         schema='some_schema',
         source_description='my source description',
         source_name='my_source',
@@ -2146,7 +2110,6 @@ def minimal_parsed_exposure_dict():
         'meta': {},
         'tags': [],
         'path': 'models/something.yml',
-        'root_path': '/usr/src/app',
         'original_file_path': 'models/something.yml',
         'description': '',
         'created_at': 1.0,
@@ -2172,7 +2135,6 @@ def basic_parsed_exposure_dict():
         'unique_id': 'exposure.test.my_exposure',
         'package_name': 'test',
         'path': 'models/something.yml',
-        'root_path': '/usr/src/app',
         'original_file_path': 'models/something.yml',
         'description': '',
         'meta': {},
@@ -2194,7 +2156,6 @@ def basic_parsed_exposure_object():
         unique_id='exposure.test.my_exposure',
         package_name='test',
         path='models/something.yml',
-        root_path='/usr/src/app',
         original_file_path='models/something.yml',
         owner=ExposureOwner(email='test@example.com'),
         description='',
@@ -2234,7 +2195,6 @@ def complex_parsed_exposure_dict():
         'unique_id': 'exposure.test.my_exposure',
         'package_name': 'test',
         'path': 'models/something.yml',
-        'root_path': '/usr/src/app',
         'original_file_path': 'models/something.yml',
         'config': {
             'enabled': True,
@@ -2259,7 +2219,6 @@ def complex_parsed_exposure_object():
         unique_id='exposure.test.my_exposure',
         package_name='test',
         path='models/something.yml',
-        root_path='/usr/src/app',
         original_file_path='models/something.yml',
         config=ExposureConfig(),
         unrendered_config={},
@@ -2318,7 +2277,6 @@ def minimal_parsed_metric_dict():
         'meta': {},
         'tags': [],
         'path': 'models/something.yml',
-        'root_path': '/usr/src/app',
         'original_file_path': 'models/something.yml',
         'description': '',
         'created_at': 1.0,
@@ -2351,7 +2309,6 @@ def basic_parsed_metric_dict():
         'unique_id': 'metric.test.my_metric',
         'package_name': 'test',
         'path': 'models/something.yml',
-        'root_path': '/usr/src/app',
         'original_file_path': 'models/something.yml',
         'description': '',
         'meta': {},
@@ -2373,7 +2330,6 @@ def basic_parsed_metric_object():
         unique_id='metric.test.my_metric',
         package_name='test',
         path='models/something.yml',
-        root_path='/usr/src/app',
         original_file_path='models/something.yml',
         description='',
         meta={},
diff --git a/test/unit/test_contracts_graph_unparsed.py b/test/unit/test_contracts_graph_unparsed.py
index 5c89148cd11..8821b355b71 100644
--- a/test/unit/test_contracts_graph_unparsed.py
+++ b/test/unit/test_contracts_graph_unparsed.py
@@ -24,7 +24,6 @@ def test_ok(self):
             'package_name': 'test',
             'language': 'sql',
             'raw_code': '{% macro foo() %}select 1 as id{% endmacro %}',
-            'root_path': '/root/',
             'resource_type': 'macro',
         }
         macro = self.ContractType(
@@ -33,7 +32,6 @@ def test_ok(self):
             package_name='test',
             language='sql',
             raw_code='{% macro foo() %}select 1 as id{% endmacro %}',
-            root_path='/root/',
             resource_type=NodeType.Macro,
         )
         self.assert_symmetric(macro, macro_dict)
@@ -46,7 +44,6 @@ def test_invalid_missing_field(self):
             # 'package_name': 'test',
             'language': 'sql',
             'raw_code': '{% macro foo() %}select 1 as id{% endmacro %}',
-            'root_path': '/root/',
             'resource_type': 'macro',
         }
         self.assert_fails_validation(macro_dict)
@@ -58,7 +55,6 @@ def test_invalid_extra_field(self):
             'package_name': 'test',
             'language': 'sql',
             'raw_code': '{% macro foo() %}select 1 as id{% endmacro %}',
-            'root_path': '/root/',
             'extra': 'extra',
             'resource_type': 'macro',
         }
@@ -71,7 +67,6 @@ class TestUnparsedNode(ContractTestCase):
     def test_ok(self):
         node_dict = {
             'name': 'foo',
-            'root_path': '/root/',
             'resource_type': NodeType.Model,
             'path': '/root/x/path.sql',
             'original_file_path': '/root/path.sql',
@@ -81,7 +76,6 @@ def test_ok(self):
         }
         node = self.ContractType(
             package_name='test',
-            root_path='/root/',
             path='/root/x/path.sql',
             original_file_path='/root/path.sql',
             language='sql',
@@ -99,7 +93,6 @@ def test_ok(self):
     def test_empty(self):
         node_dict = {
             'name': 'foo',
-            'root_path': '/root/',
             'resource_type': NodeType.Model,
             'path': '/root/x/path.sql',
             'original_file_path': '/root/path.sql',
@@ -109,7 +102,6 @@ def test_empty(self):
         }
         node = UnparsedNode(
             package_name='test',
-            root_path='/root/',
             path='/root/x/path.sql',
             original_file_path='/root/path.sql',
             language='sql',
@@ -126,7 +118,6 @@ def test_empty(self):
     def test_bad_type(self):
         node_dict = {
             'name': 'foo',
-            'root_path': '/root/',
             'resource_type': NodeType.Source,  # not valid!
             'path': '/root/x/path.sql',
             'original_file_path': '/root/path.sql',
@@ -143,7 +134,6 @@ class TestUnparsedRunHook(ContractTestCase):
     def test_ok(self):
         node_dict = {
             'name': 'foo',
-            'root_path': 'test/dbt_project.yml',
             'resource_type': NodeType.Operation,
             'path': '/root/dbt_project.yml',
             'original_file_path': '/root/dbt_project.yml',
@@ -154,7 +144,6 @@ def test_ok(self):
         }
         node = self.ContractType(
             package_name='test',
-            root_path='test/dbt_project.yml',
             path='/root/dbt_project.yml',
             original_file_path='/root/dbt_project.yml',
             language='sql',
@@ -170,7 +159,6 @@ def test_ok(self):
     def test_bad_type(self):
         node_dict = {
             'name': 'foo',
-            'root_path': 'test/dbt_project.yml',
             'resource_type': NodeType.Model,  # invalid
             'path': '/root/dbt_project.yml',
             'original_file_path': '/root/dbt_project.yml',
@@ -365,14 +353,12 @@ class TestUnparsedDocumentationFile(ContractTestCase):
     def test_ok(self):
         doc = self.ContractType(
             package_name='test',
-            root_path='/root',
             path='/root/docs',
             original_file_path='/root/docs/doc.md',
             file_contents='blah blah blah',
         )
         doc_dict = {
             'package_name': 'test',
-            'root_path': '/root',
             'path': '/root/docs',
             'original_file_path': '/root/docs/doc.md',
             'file_contents': 'blah blah blah',
@@ -386,7 +372,6 @@ def test_extra_field(self):
         self.assert_fails_validation({})
         doc_dict = {
             'package_name': 'test',
-            'root_path': '/root',
             'path': '/root/docs',
             'original_file_path': '/root/docs/doc.md',
             'file_contents': 'blah blah blah',
diff --git a/test/unit/test_docs_blocks.py b/test/unit/test_docs_blocks.py
index c6673321480..8b87463313a 100644
--- a/test/unit/test_docs_blocks.py
+++ b/test/unit/test_docs_blocks.py
@@ -158,7 +158,6 @@ def test_load_file(self):
             self.assertIsInstance(result, ParsedDocumentation)
             self.assertEqual(result.package_name, 'some_package')
             self.assertEqual(result.original_file_path, self.testfile_path)
-            self.assertEqual(result.root_path, self.subdir_path)
             self.assertEqual(result.resource_type, NodeType.Documentation)
             self.assertEqual(result.path, 'test_file.md')
 
@@ -200,7 +199,6 @@ def test_multiple_raw_blocks(self):
             self.assertIsInstance(result, ParsedDocumentation)
             self.assertEqual(result.package_name, 'some_package')
             self.assertEqual(result.original_file_path, self.testfile_path)
-            self.assertEqual(result.root_path, self.subdir_path)
             self.assertEqual(result.resource_type, NodeType.Documentation)
             self.assertEqual(result.path, 'test_file.md')
 
diff --git a/test/unit/test_graph_selector_methods.py b/test/unit/test_graph_selector_methods.py
index e32267e2d6f..1b65d5c4f4c 100644
--- a/test/unit/test_graph_selector_methods.py
+++ b/test/unit/test_graph_selector_methods.py
@@ -87,7 +87,6 @@ def make_model(pkg, name, sql, refs=None, sources=None, tags=None, path=None, al
         fqn=fqn,
         unique_id=f'model.{pkg}.{name}',
         package_name=pkg,
-        root_path='/usr/dbt/some-project',
         path=path,
         original_file_path=f'models/{path}',
         config=NodeConfig(**config_kwargs),
@@ -128,7 +127,6 @@ def make_seed(pkg, name, path=None, loader=None, alias=None, tags=None, fqn_extr
         fqn=fqn,
         unique_id=f'seed.{pkg}.{name}',
         package_name=pkg,
-        root_path='/usr/dbt/some-project',
         path=path,
         original_file_path=f'data/{path}',
         tags=tags,
@@ -156,7 +154,6 @@ def make_source(pkg, source_name, table_name, path=None, loader=None, identifier
         schema='dbt_schema',
         unique_id=f'source.{pkg}.{source_name}.{table_name}',
         package_name=pkg,
-        root_path='/usr/dbt/some-project',
         path=path,
         original_file_path=path,
         name=table_name,
@@ -182,7 +179,6 @@ def make_macro(pkg, name, macro_sql, path=None, depends_on_macros=None):
         macro_sql=macro_sql,
         unique_id=f'macro.{pkg}.{name}',
         package_name=pkg,
-        root_path='/usr/dbt/some-project',
         path=path,
         original_file_path=path,
         resource_type=NodeType.Macro,
@@ -266,7 +262,6 @@ def make_schema_test(pkg, test_name, test_model, test_kwargs, path=None, refs=No
         fqn=['minimal', 'schema_test', node_name],
         unique_id=f'test.{pkg}.{node_name}',
         package_name=pkg,
-        root_path='/usr/dbt/some-project',
         path=f'schema_test/{node_name}.sql',
         original_file_path=f'models/{path}',
         resource_type=NodeType.Test,
@@ -318,7 +313,6 @@ def make_data_test(pkg, name, sql, refs=None, sources=None, tags=None, path=None
         fqn=fqn,
         unique_id=f'test.{pkg}.{name}',
         package_name=pkg,
-        root_path='/usr/dbt/some-project',
         path=path,
         original_file_path=f'tests/{path}',
         config=TestConfig(**config_kwargs),
@@ -349,7 +343,6 @@ def make_exposure(pkg, name, path=None, fqn_extras=None, owner=None):
         unique_id=f'exposure.{pkg}.{name}',
         package_name=pkg,
         path=path,
-        root_path='/usr/src/app',
         original_file_path=path,
         owner=owner,
     )
@@ -363,7 +356,6 @@ def make_metric(pkg, name, path=None):
         name=name,
         path='schema.yml',
         package_name=pkg,
-        root_path='/usr/src/app',
         original_file_path=path,
         unique_id=f'metric.{pkg}.{name}',
         fqn=[pkg, 'metrics', name],
diff --git a/test/unit/test_manifest.py b/test/unit/test_manifest.py
index cbce93fc052..4b400ab2b9f 100644
--- a/test/unit/test_manifest.py
+++ b/test/unit/test_manifest.py
@@ -45,7 +45,7 @@
 REQUIRED_PARSED_NODE_KEYS = frozenset({
     'alias', 'tags', 'config', 'unique_id', 'refs', 'sources', 'metrics', 'meta',
     'depends_on', 'database', 'schema', 'name', 'resource_type',
-    'package_name', 'root_path', 'path', 'original_file_path', 'raw_code', 'language',
+    'package_name', 'path', 'original_file_path', 'raw_code', 'language',
     'description', 'columns', 'fqn', 'build_path', 'compiled_path', 'patch_path', 'docs',
     'deferred', 'checksum', 'unrendered_config', 'created_at', 'config_call_dict',
 })
@@ -95,7 +95,6 @@ def setUp(self):
                 fqn=['root', 'my_exposure'],
                 unique_id='exposure.root.my_exposure',
                 package_name='root',
-                root_path='',
                 path='my_exposure.sql',
                 original_file_path='my_exposure.sql'
             )
@@ -128,7 +127,6 @@ def setUp(self):
                 fqn=['root', 'my_metric'],
                 unique_id='metric.root.my_metric',
                 package_name='root',
-                root_path='',
                 path='my_metric.yml',
                 original_file_path='my_metric.yml'
             )
@@ -152,7 +150,6 @@ def setUp(self):
                 tags=[],
                 path='events.sql',
                 original_file_path='events.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
@@ -175,7 +172,6 @@ def setUp(self):
                 tags=[],
                 path='events.sql',
                 original_file_path='events.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
@@ -198,7 +194,6 @@ def setUp(self):
                 tags=[],
                 path='multi.sql',
                 original_file_path='multi.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
@@ -221,7 +216,6 @@ def setUp(self):
                 tags=[],
                 path='multi.sql',
                 original_file_path='multi.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
@@ -244,7 +238,6 @@ def setUp(self):
                 tags=[],
                 path='multi.sql',
                 original_file_path='multi.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
@@ -267,7 +260,6 @@ def setUp(self):
                 tags=[],
                 path='multi.sql',
                 original_file_path='multi.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
@@ -289,7 +281,6 @@ def setUp(self):
                 unique_id='source.test.my_source.my_table',
                 fqn=['test', 'my_source', 'my_table'],
                 package_name='root',
-                root_path='',
                 path='schema.yml',
                 original_file_path='schema.yml',
             ),
@@ -518,7 +509,6 @@ def test_get_resource_fqns(self):
             tags=[],
             path='seed.csv',
             original_file_path='seed.csv',
-            root_path='',
             language='sql',
             raw_code='-- csv --',
             checksum=FileHash.empty(),
@@ -569,7 +559,6 @@ def test__deepcopy_copies_flat_graph(self):
                 tags=[],
                 path='events.sql',
                 original_file_path='events.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
@@ -613,7 +602,6 @@ def setUp(self):
                 tags=[],
                 path='events.sql',
                 original_file_path='events.sql',
-                root_path='',
                 language='sql',
                 raw_code='does not matter',
                 meta={},
@@ -640,7 +628,6 @@ def setUp(self):
                 tags=[],
                 path='events.sql',
                 original_file_path='events.sql',
-                root_path='',
                 raw_code='does not matter',
                 meta={},
                 compiled=True,
@@ -667,7 +654,6 @@ def setUp(self):
                 tags=[],
                 path='multi.sql',
                 original_file_path='multi.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
@@ -689,7 +675,6 @@ def setUp(self):
                 tags=[],
                 path='multi.sql',
                 original_file_path='multi.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
@@ -711,7 +696,6 @@ def setUp(self):
                 tags=[],
                 path='multi.sql',
                 original_file_path='multi.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
@@ -733,7 +717,6 @@ def setUp(self):
                 tags=[],
                 path='multi.sql',
                 original_file_path='multi.sql',
-                root_path='',
                 meta={},
                 language='sql',
                 raw_code='does not matter',
diff --git a/test/unit/test_parser.py b/test/unit/test_parser.py
index 8fdf297d4cd..1ae9e3917ed 100644
--- a/test/unit/test_parser.py
+++ b/test/unit/test_parser.py
@@ -66,7 +66,6 @@ def _generate_macros(self):
                 unique_id=f'macro.root.{name}',
                 package_name='root',
                 original_file_path=normalize('macros/macro.sql'),
-                root_path=get_abs_os_path('./dbt_packages/root'),
                 path=normalize('macros/macro.sql'),
                 macro_sql=sql,
             )
@@ -521,7 +520,6 @@ def test_basic(self):
             fqn=['snowplow', 'nested', 'model_1'],
             package_name='snowplow',
             original_file_path=normalize('models/nested/model_1.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             config=NodeConfig(materialized='table'),
             path=normalize('nested/model_1.sql'),
             language='sql',
@@ -580,7 +578,6 @@ def model(dbt, session):
             fqn=['snowplow', 'nested', 'py_model'],
             package_name='snowplow',
             original_file_path=normalize('models/nested/py_model.py'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             config=NodeConfig(materialized='table', packages=python_packages),
             # config.packages = ['textblob']
             path=normalize('nested/py_model.py'),
@@ -765,7 +762,6 @@ def test_built_in_macro_override_detection(self):
             unique_id=macro_unique_id,
             package_name='root',
             original_file_path=normalize('macros/macro.sql'),
-            root_path=get_abs_os_path('./dbt_packages/root'),
             path=normalize('macros/macro.sql'),
             macro_sql='{% macro ref(model_name) %}{% set x = raise("boom") %}{% endmacro %}',
         )
@@ -782,7 +778,6 @@ def test_built_in_macro_override_detection(self):
             fqn=['snowplow', 'nested', 'model_1'],
             package_name='snowplow',
             original_file_path=normalize('models/nested/model_1.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             config=NodeConfig(materialized='table'),
             path=normalize('nested/model_1.sql'),
             language='sql',
@@ -818,7 +813,6 @@ def setUp(self):
             fqn=['snowplow', 'nested', 'model_1'],
             package_name='snowplow',
             original_file_path=normalize('models/nested/model_1.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             config=NodeConfig(materialized='table'),
             path=normalize('nested/model_1.sql'),
             language='sql',
@@ -999,7 +993,6 @@ def test_single_block(self):
             fqn=['snowplow', 'nested', 'snap_1', 'foo'],
             package_name='snowplow',
             original_file_path=normalize('snapshots/nested/snap_1.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             config=SnapshotConfig(
                 strategy='timestamp',
                 updated_at='last_update',
@@ -1068,7 +1061,6 @@ def test_multi_block(self):
             fqn=['snowplow', 'nested', 'snap_1', 'foo'],
             package_name='snowplow',
             original_file_path=normalize('snapshots/nested/snap_1.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             config=SnapshotConfig(
                 strategy='timestamp',
                 updated_at='last_update',
@@ -1106,7 +1098,6 @@ def test_multi_block(self):
             fqn=['snowplow', 'nested', 'snap_1', 'bar'],
             package_name='snowplow',
             original_file_path=normalize('snapshots/nested/snap_1.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             config=SnapshotConfig(
                 strategy='timestamp',
                 updated_at='last_update',
@@ -1166,7 +1157,6 @@ def test_single_block(self):
             unique_id='macro.snowplow.foo',
             package_name='snowplow',
             original_file_path=normalize('macros/macro.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             path=normalize('macros/macro.sql'),
             macro_sql=raw_code,
         )
@@ -1189,7 +1179,6 @@ def test_multiple_blocks(self):
             unique_id='macro.snowplow.bar',
             package_name='snowplow',
             original_file_path=normalize('macros/macro.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             path=normalize('macros/macro.sql'),
             macro_sql='{% macro bar(c, d) %}c + d{% endmacro %}',
         )
@@ -1199,7 +1188,6 @@ def test_multiple_blocks(self):
             unique_id='macro.snowplow.foo',
             package_name='snowplow',
             original_file_path=normalize('macros/macro.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             path=normalize('macros/macro.sql'),
             macro_sql='{% macro foo(a, b) %}a ~ b{% endmacro %}',
         )
@@ -1242,7 +1230,6 @@ def test_basic(self):
             fqn=['snowplow', 'test_1'],
             package_name='snowplow',
             original_file_path=normalize('tests/test_1.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             refs=[['blah']],
             config=TestConfig(severity='ERROR'),
             tags=[],
@@ -1282,7 +1269,6 @@ def test_basic(self):
             unique_id='macro.snowplow.test_not_null',
             package_name='snowplow',
             original_file_path=normalize('tests/generic/test_1.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             path=normalize('tests/generic/test_1.sql'),
             macro_sql=raw_code,
         )
@@ -1321,7 +1307,6 @@ def test_basic(self):
             fqn=['snowplow', 'analysis', 'nested', 'analysis_1'],
             package_name='snowplow',
             original_file_path=normalize('analyses/nested/analysis_1.sql'),
-            root_path=get_abs_os_path('./dbt_packages/snowplow'),
             depends_on=DependsOn(),
             config=NodeConfig(),
             path=normalize('analysis/nested/analysis_1.sql'),
diff --git a/test/unit/test_partial_parsing.py b/test/unit/test_partial_parsing.py
index de0e230ad3c..a784532fcf4 100644
--- a/test/unit/test_partial_parsing.py
+++ b/test/unit/test_partial_parsing.py
@@ -90,7 +90,6 @@ def setUp(self):
     def get_model(self, name):
         return ParsedModelNode(
             package_name='my_test',
-            root_path='/users/root/',
             path=f'{name}.sql',
             original_file_path=f'models/{name}.sql',
             language='sql',
@@ -109,7 +108,6 @@ def get_model(self, name):
     def get_python_model(self, name):
         return ParsedModelNode(
             package_name='my_test',
-            root_path='/users/root/',
             path=f'{name}.py',
             original_file_path=f'models/{name}.py',
             raw_code='import something',
diff --git a/test/unit/utils.py b/test/unit/utils.py
index 4cfe0519d44..5df2ef6ac8c 100644
--- a/test/unit/utils.py
+++ b/test/unit/utils.py
@@ -246,7 +246,6 @@ def generate_name_macros(package):
             unique_id=f'macro.{package}.{name}',
             package_name=package,
             original_file_path=normalize('macros/macro.sql'),
-            root_path='./dbt_packages/root',
             path=normalize('macros/macro.sql'),
             macro_sql=sql,
         )
diff --git a/tests/functional/artifacts/expected_manifest.py b/tests/functional/artifacts/expected_manifest.py
index 32c9dcfbfa1..fabd960dd94 100644
--- a/tests/functional/artifacts/expected_manifest.py
+++ b/tests/functional/artifacts/expected_manifest.py
@@ -241,7 +241,6 @@ def expected_seeded_manifest(project, model_database=None, quote_model=False):
                 "build_path": None,
                 "created_at": ANY,
                 "name": "model",
-                "root_path": project.project_root,
                 "relation_name": relation_name_node_format.format(
                     model_database, my_schema_name, "model"
                 ),
@@ -321,7 +320,6 @@ def expected_seeded_manifest(project, model_database=None, quote_model=False):
                 "build_path": None,
                 "created_at": ANY,
                 "name": "second_model",
-                "root_path": project.project_root,
                 "relation_name": relation_name_node_format.format(
                     project.database, alternate_schema, "second_model"
                 ),
@@ -510,7 +508,6 @@ def expected_seeded_manifest(project, model_database=None, quote_model=False):
                 "refs": [["model"]],
                 "relation_name": None,
                 "resource_type": "test",
-                "root_path": project.project_root,
                 "schema": test_audit_schema,
                 "database": project.database,
                 "tags": [],
@@ -571,7 +568,6 @@ def expected_seeded_manifest(project, model_database=None, quote_model=False):
                     project.database, alternate_schema, "snapshot_seed"
                 ),
                 "resource_type": "snapshot",
-                "root_path": project.project_root,
                 "schema": alternate_schema,
                 "sources": [],
                 "tags": [],
@@ -608,7 +604,6 @@ def expected_seeded_manifest(project, model_database=None, quote_model=False):
                 "refs": [["model"]],
                 "relation_name": None,
                 "resource_type": "test",
-                "root_path": project.project_root,
                 "schema": test_audit_schema,
                 "database": project.database,
                 "tags": [],
@@ -659,7 +654,6 @@ def expected_seeded_manifest(project, model_database=None, quote_model=False):
                 "refs": [["model"]],
                 "relation_name": None,
                 "resource_type": "test",
-                "root_path": project.project_root,
                 "schema": test_audit_schema,
                 "database": project.database,
                 "tags": [],
@@ -725,7 +719,6 @@ def expected_seeded_manifest(project, model_database=None, quote_model=False):
                     project.database, my_schema_name, "seed"
                 ),
                 "resource_type": "source",
-                "root_path": project.project_root,
                 "schema": my_schema_name,
                 "source_description": "My source",
                 "source_name": "my_source",
@@ -759,7 +752,6 @@ def expected_seeded_manifest(project, model_database=None, quote_model=False):
                 "path": "schema.yml",
                 "refs": [["model"], ["second_model"]],
                 "resource_type": "exposure",
-                "root_path": project.project_root,
                 "sources": [],
                 "type": "notebook",
                 "unique_id": "exposure.test.notebook_exposure",
@@ -788,7 +780,6 @@ def expected_seeded_manifest(project, model_database=None, quote_model=False):
                 "path": "schema.yml",
                 "refs": [["model"]],
                 "resource_type": "exposure",
-                "root_path": project.project_root,
                 "sources": [["my_source", "my_table"]],
                 "type": "dashboard",
                 "unique_id": "exposure.test.simple_exposure",
@@ -892,7 +883,6 @@ def expected_references_manifest(project):
                 "refs": [],
                 "relation_name": None,
                 "resource_type": "model",
-                "root_path": project.project_root,
                 "schema": my_schema_name,
                 "database": project.database,
                 "tags": [],
@@ -948,7 +938,6 @@ def expected_references_manifest(project):
                     model_database, my_schema_name
                 ),
                 "resource_type": "model",
-                "root_path": project.project_root,
                 "schema": my_schema_name,
                 "database": project.database,
                 "tags": [],
@@ -1002,7 +991,6 @@ def expected_references_manifest(project):
                 "refs": [["ephemeral_summary"]],
                 "relation_name": '"{0}"."{1}".view_summary'.format(model_database, my_schema_name),
                 "resource_type": "model",
-                "root_path": project.project_root,
                 "schema": my_schema_name,
                 "sources": [],
                 "tags": [],
@@ -1125,7 +1113,6 @@ def expected_references_manifest(project):
                     model_database, alternate_schema
                 ),
                 "resource_type": "snapshot",
-                "root_path": project.project_root,
                 "schema": alternate_schema,
                 "sources": [],
                 "tags": [],
@@ -1176,7 +1163,6 @@ def expected_references_manifest(project):
                 "patch_path": None,
                 "relation_name": '{0}."{1}"."seed"'.format(project.database, my_schema_name),
                 "resource_type": "source",
-                "root_path": project.project_root,
                 "schema": my_schema_name,
                 "source_description": "My source",
                 "source_name": "my_source",
@@ -1207,7 +1193,6 @@ def expected_references_manifest(project):
                 "path": "schema.yml",
                 "refs": [["view_summary"]],
                 "resource_type": "exposure",
-                "root_path": project.project_root,
                 "sources": [],
                 "type": "notebook",
                 "unique_id": "exposure.test.notebook_exposure",
@@ -1225,7 +1210,6 @@ def expected_references_manifest(project):
                 "original_file_path": docs_path,
                 "package_name": "test",
                 "path": "docs.md",
-                "root_path": project.project_root,
                 "unique_id": "test.column_info",
             },
             "test.ephemeral_summary": {
@@ -1234,7 +1218,6 @@ def expected_references_manifest(project):
                 "original_file_path": docs_path,
                 "package_name": "test",
                 "path": "docs.md",
-                "root_path": project.project_root,
                 "unique_id": "test.ephemeral_summary",
             },
             "test.source_info": {
@@ -1243,7 +1226,6 @@ def expected_references_manifest(project):
                 "original_file_path": docs_path,
                 "package_name": "test",
                 "path": "docs.md",
-                "root_path": project.project_root,
                 "unique_id": "test.source_info",
             },
             "test.summary_count": {
@@ -1252,7 +1234,6 @@ def expected_references_manifest(project):
                 "original_file_path": docs_path,
                 "package_name": "test",
                 "path": "docs.md",
-                "root_path": project.project_root,
                 "unique_id": "test.summary_count",
             },
             "test.summary_first_name": {
@@ -1261,7 +1242,6 @@ def expected_references_manifest(project):
                 "original_file_path": docs_path,
                 "package_name": "test",
                 "path": "docs.md",
-                "root_path": project.project_root,
                 "unique_id": "test.summary_first_name",
             },
             "test.table_info": {
@@ -1270,7 +1250,6 @@ def expected_references_manifest(project):
                 "original_file_path": docs_path,
                 "package_name": "test",
                 "path": "docs.md",
-                "root_path": project.project_root,
                 "unique_id": "test.table_info",
             },
             "test.view_summary": {
@@ -1281,7 +1260,6 @@ def expected_references_manifest(project):
                 "original_file_path": docs_path,
                 "package_name": "test",
                 "path": "docs.md",
-                "root_path": project.project_root,
                 "unique_id": "test.view_summary",
             },
             "test.macro_info": {
@@ -1290,7 +1268,6 @@ def expected_references_manifest(project):
                 "original_file_path": os.path.join("macros", "macro.md"),
                 "package_name": "test",
                 "path": "macro.md",
-                "root_path": project.project_root,
                 "unique_id": "test.macro_info",
             },
             "test.notebook_info": {
@@ -1299,7 +1276,6 @@ def expected_references_manifest(project):
                 "original_file_path": docs_path,
                 "package_name": "test",
                 "path": "docs.md",
-                "root_path": project.project_root,
                 "unique_id": "test.notebook_info",
             },
             "test.macro_arg_info": {
@@ -1308,7 +1284,6 @@ def expected_references_manifest(project):
                 "original_file_path": os.path.join("macros", "macro.md"),
                 "package_name": "test",
                 "path": "macro.md",
-                "root_path": project.project_root,
                 "unique_id": "test.macro_arg_info",
             },
         },
@@ -1349,7 +1324,6 @@ def expected_references_manifest(project):
                 "resource_type": "macro",
                 "unique_id": "macro.test.test_nothing",
                 "tags": [],
-                "root_path": project.project_root,
                 "supported_languages": None,
                 "arguments": [
                     {


Code review comments:
diff_hunk: @@ -366,9 +365,6 @@
         "package_name": {
           "type": "string"
         },
-        "root_path": {
-          "type": "string"
-        },
path: schemas/dbt/manifest/v7.json
text: @user1:
Do we need to bump the schema to v8 instead of modifying?