1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Graph Schema
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Node labels
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Code layer
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Label | Properties | Description |
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Repository` | `name`, `path`, `url`, `ingested_at` | Top-level repo node |
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `File` | `path`, `language`, `lines`, `size` | Source file |
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Module` | `name`, `file`, `path` | Python module or TS namespace |
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Class` | `name`, `file`, `line`, `end_line`, `docstring`, `is_abstract` | Class definition |
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Function` | `name`, `file`, `line`, `end_line`, `signature`, `docstring`, `is_async` | Top-level function |
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Method` | `name`, `file`, `line`, `end_line`, `signature`, `docstring`, `is_async`, `is_classmethod`, `is_staticmethod` | Class method |
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Variable` | `name`, `file`, `line`, `type_annotation` | Module-level variable |
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Import` | `name`, `alias`, `file`, `line`, `from_module` | Import statement |
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Decorator` | `name`, `expression`, `file`, `line` | Decorator applied to function/class |
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Knowledge layer
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Label | Properties | Description |
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Domain` | `name`, `description`, `created_at` | Top-level grouping for concepts, rules, decisions |
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Concept` | `name`, `description`, `domain`, `status`, `created_at` | Named domain concept or design pattern |
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Rule` | `name`, `description`, `domain`, `severity`, `rationale`, `created_at` | Enforceable constraint; severity: `info`, `warning`, `critical` |
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Decision` | `name`, `description`, `domain`, `rationale`, `alternatives`, `date`, `status`, `created_at` | Architectural decision record; status: `proposed`, `accepted`, `deprecated`, `superseded` |
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `WikiPage` | `title`, `content`, `url`, `source`, `updated_at` | Wiki page or document |
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `Person` | `name`, `email`, `role`, `team`, `created_at` | Team member or contributor |
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Edge types
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Edge | From | To | Meaning |
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|---|
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `CONTAINS` | Repository, File, Module, Class | File, Class, Function, Method, Variable, Import | Structural containment |
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `DEFINES` | File, Class | Class, Function, Method | Definition site |
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `IMPORTS` | File | Import | File imports a module or symbol |
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `DEPENDS_ON` | File, Module | File, Module | Module-level dependency |
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `CALLS` | Function, Method | Function, Method | Direct function call (static analysis) |
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `REFERENCES` | Function, Method, File | Variable, Class, Function | Name reference (not a call) |
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `INHERITS` | Class | Class | Class inherits from parent |
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `IMPLEMENTS` | Class, Function | Concept | Code implements a concept or interface |
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `DECORATES` | Decorator | Function, Method, Class | Decorator applied to target |
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `BELONGS_TO` | Concept, Rule, Decision, Person | Domain | Membership in a domain |
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `RELATED_TO` | Any | Any | General semantic relationship |
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `GOVERNS` | Rule | Function, Method, Class, File | Rule applies to code node |
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `DOCUMENTS` | WikiPage | Concept, Function, Class, File | Documentation relationship |
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `ANNOTATES` | Concept, Rule | Function, Method, Class, File, Module | Knowledge node annotates code node |
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `ASSIGNED_TO` | Rule, Decision | Person | Work item or decision assigned to person |
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `DECIDED_BY` | Decision | Person | Decision was made by person |
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `TESTS` | Function, Method | Function, Method, Class | Test function exercises a source function or class |
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `COUPLED_WITH` | File, Module | File, Module | Files that change together frequently (from churn analysis) |
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `OWNS` | Person | File, Module, Class | Ownership from CODEOWNERS or annotation |
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Schema diagram
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```mermaid
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
graph LR
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
subgraph Knowledge["Knowledge Layer"]
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Domain
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Concept
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Rule
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Decision
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
WikiPage
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Person
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
end
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
subgraph Code["Code Layer"]
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Repository
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
File
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Module
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Class
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Function
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Method
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Decorator
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Import
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Variable
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
end
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Repository -->|CONTAINS| File
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
File -->|CONTAINS| Class
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
File -->|CONTAINS| Function
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
File -->|IMPORTS| Import
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Class -->|DEFINES| Method
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Function -->|CALLS| Function
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Method -->|CALLS| Function
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Method -->|CALLS| Method
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Class -->|INHERITS| Class
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Decorator -->|DECORATES| Function
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Decorator -->|DECORATES| Class
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Decorator -->|DECORATES| Method
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Domain -->|"(inverse) BELONGS_TO"| Concept
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Domain -->|"(inverse) BELONGS_TO"| Rule
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Domain -->|"(inverse) BELONGS_TO"| Decision
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
WikiPage -->|DOCUMENTS| Concept
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
WikiPage -->|DOCUMENTS| Function
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Rule -->|GOVERNS| Function
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Rule -->|GOVERNS| Class
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Concept -->|ANNOTATES| Function
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Concept -->|ANNOTATES| Class
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Class -->|IMPLEMENTS| Concept
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Decision -->|DECIDED_BY| Person
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Rule -->|ASSIGNED_TO| Person
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Function -->|TESTS| Function
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Function -->|TESTS| Class
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
File -->|COUPLED_WITH| File
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Person -->|OWNS| File
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Code vs knowledge layer distinction
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The two layers have different **lifecycle** and **provenance**:
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Dimension | Code layer | Knowledge layer |
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Source | tree-sitter AST parsing | Manual curation, wiki, Planopticon |
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Refresh | On every `navegador ingest` | On demand (`navegador add`, `wiki ingest`, `planopticon ingest`) |
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Change rate | Fast (changes with every commit) | Slow (changes with design decisions) |
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Authorship | Derived from code | Human or meeting-authored |
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Queryability | Names, signatures, call graphs | Domain semantics, rationale, history |
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Cross-layer edges (`ANNOTATES`, `GOVERNS`, `IMPLEMENTS`, `DOCUMENTS`) are the join points between the two layers. They are created explicitly by humans via `navegador annotate` or inferred during wiki/Planopticon ingestion.
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Analysis edges (`TESTS`, `COUPLED_WITH`) are created by analysis commands (`navegador testmap`, `navegador churn`) and are derived rather than curated. They are refreshed whenever those commands are re-run.
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`OWNS` edges are populated from CODEOWNERS file parsing (`navegador codeowners`) and from explicit `navegador annotate --owner` assignments.
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!