devarch 0.2.0__tar.gz → 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. {devarch-0.2.0 → devarch-0.2.1}/PKG-INFO +12 -16
  2. {devarch-0.2.0 → devarch-0.2.1}/README.md +290 -294
  3. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/monsters.py +4 -2
  4. devarch-0.2.1/devarch.egg-info/PKG-INFO +313 -0
  5. devarch-0.2.1/devarch.egg-info/SOURCES.txt +43 -0
  6. devarch-0.2.1/devarch.egg-info/dependency_links.txt +1 -0
  7. devarch-0.2.1/devarch.egg-info/entry_points.txt +2 -0
  8. devarch-0.2.1/devarch.egg-info/requires.txt +15 -0
  9. devarch-0.2.1/devarch.egg-info/top_level.txt +1 -0
  10. {devarch-0.2.0 → devarch-0.2.1}/pyproject.toml +1 -1
  11. devarch-0.2.1/setup.cfg +4 -0
  12. devarch-0.2.0/.github/workflows/release-artifacts.yml +0 -33
  13. devarch-0.2.0/.gitignore +0 -37
  14. devarch-0.2.0/scripts/build_release.py +0 -80
  15. devarch-0.2.0/tests/conftest.py +0 -10
  16. {devarch-0.2.0 → devarch-0.2.1}/LICENSE +0 -0
  17. {devarch-0.2.0 → devarch-0.2.1}/MANIFEST.in +0 -0
  18. {devarch-0.2.0 → devarch-0.2.1}/assets/devarch-logo.png +0 -0
  19. {devarch-0.2.0 → devarch-0.2.1}/assets/magnexis-logo.png +0 -0
  20. {devarch-0.2.0 → devarch-0.2.1}/devarch/__init__.py +0 -0
  21. {devarch-0.2.0 → devarch-0.2.1}/devarch/__main__.py +0 -0
  22. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/__init__.py +0 -0
  23. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/ancient.py +0 -0
  24. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/dead_code.py +0 -0
  25. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/duplicates.py +0 -0
  26. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/health.py +0 -0
  27. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/maintenance.py +0 -0
  28. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/recovery.py +0 -0
  29. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/ruins.py +0 -0
  30. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/suspicious.py +0 -0
  31. {devarch-0.2.0 → devarch-0.2.1}/devarch/analyzers/todos.py +0 -0
  32. {devarch-0.2.0 → devarch-0.2.1}/devarch/cli/__init__.py +0 -0
  33. {devarch-0.2.0 → devarch-0.2.1}/devarch/cli/main.py +0 -0
  34. {devarch-0.2.0 → devarch-0.2.1}/devarch/models.py +0 -0
  35. {devarch-0.2.0 → devarch-0.2.1}/devarch/plugins.py +0 -0
  36. {devarch-0.2.0 → devarch-0.2.1}/devarch/reports/__init__.py +0 -0
  37. {devarch-0.2.0 → devarch-0.2.1}/devarch/reports/exporters.py +0 -0
  38. {devarch-0.2.0 → devarch-0.2.1}/devarch/scanner/__init__.py +0 -0
  39. {devarch-0.2.0 → devarch-0.2.1}/devarch/scanner/core.py +0 -0
  40. {devarch-0.2.0 → devarch-0.2.1}/devarch/scanner/discovery.py +0 -0
  41. {devarch-0.2.0 → devarch-0.2.1}/devarch/scanner/intelligence.py +0 -0
  42. {devarch-0.2.0 → devarch-0.2.1}/devarch/utils/__init__.py +0 -0
  43. {devarch-0.2.0 → devarch-0.2.1}/devarch/utils/fs.py +0 -0
  44. {devarch-0.2.0 → devarch-0.2.1}/devarch/utils/git_info.py +0 -0
  45. {devarch-0.2.0 → devarch-0.2.1}/devarch/utils/rich_ui.py +0 -0
  46. {devarch-0.2.0 → devarch-0.2.1}/devarch/version.py +0 -0
  47. {devarch-0.2.0 → devarch-0.2.1}/tests/test_analyzers.py +0 -0
  48. {devarch-0.2.0 → devarch-0.2.1}/tests/test_cli.py +0 -0
  49. {devarch-0.2.0 → devarch-0.2.1}/tests/test_intelligence.py +0 -0
@@ -1,24 +1,25 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devarch
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Dev Archaeologist: excavate dead code, technical debt, and forgotten artifacts in software projects.
5
5
  Author: magnexis
6
+ License-Expression: MIT
6
7
  Requires-Python: >=3.12
7
8
  Description-Content-Type: text/markdown
8
- License-Expression: MIT
9
9
  License-File: LICENSE
10
10
  Requires-Dist: typer>=0.12.3
11
11
  Requires-Dist: rich>=13.7.1
12
12
  Requires-Dist: pathspec>=0.12.1
13
- Requires-Dist: radon>=6.0.1 ; extra == "extended"
14
- Requires-Dist: networkx>=3.3 ; extra == "extended"
15
- Requires-Dist: gitpython>=3.1.43 ; extra == "extended"
16
- Requires-Dist: tree-sitter>=0.22.3 ; extra == "extended"
17
- Requires-Dist: reportlab>=4.2.2 ; extra == "pdf"
18
- Requires-Dist: pytest>=8.2.2 ; extra == "test"
19
13
  Provides-Extra: extended
14
+ Requires-Dist: radon>=6.0.1; extra == "extended"
15
+ Requires-Dist: networkx>=3.3; extra == "extended"
16
+ Requires-Dist: gitpython>=3.1.43; extra == "extended"
17
+ Requires-Dist: tree-sitter>=0.22.3; extra == "extended"
20
18
  Provides-Extra: pdf
19
+ Requires-Dist: reportlab>=4.2.2; extra == "pdf"
21
20
  Provides-Extra: test
21
+ Requires-Dist: pytest>=8.2.2; extra == "test"
22
+ Dynamic: license-file
22
23
 
23
24
  # Dev Archaeologist
24
25
 
@@ -146,16 +147,12 @@ python scripts/build_release.py
146
147
 
147
148
  This produces the following artifacts in `dist/`:
148
149
 
149
- - `*.whl` for Python wheel distribution
150
- - `*.tar.gz` for source distribution
151
- - `*-release.zip` for a bundled release archive
150
+ - `devarch-0.2.0-py3-none-any.whl` for the Python wheel
151
+ - `devarch-0.2.0.tar.gz` for the source distribution
152
+ - `devarch-0.2.0-release.zip` for the bundled release archive
152
153
  - `release-manifest.json` for artifact metadata
153
154
  - `SHA256SUMS.txt` for checksum verification
154
155
 
155
- The zip bundle is convenient for sharing the release set as a single downloadable package.
156
-
157
- See [RELEASE_NOTES.md](RELEASE_NOTES.md) for the full release summary and artifact inventory.
158
-
159
156
  ## Command Reference
160
157
 
161
158
  ### Core excavation
@@ -314,4 +311,3 @@ The maintenance engine supports:
314
311
  ## License
315
312
 
316
313
  MIT
317
-
@@ -1,294 +1,290 @@
1
- # Dev Archaeologist
2
-
3
- <p align="center">
4
- <img src="assets/devarch-logo.png" alt="Dev Archaeologist logo" width="220">
5
- </p>
6
-
7
- <p align="center">
8
- <em>Software archaeology and repository intelligence from Magnexis<img src="assets/magnexis-logo.png" alt="Magnexis logo" width="35"></em>
9
- </p>
10
-
11
-
12
- <p align="center">
13
- <a href="#install"><img alt="Python 3.12+" src="https://img.shields.io/badge/Python-3.12%2B-blue.svg"></a>
14
- <a href="#license"><img alt="MIT License" src="https://img.shields.io/badge/License-MIT-green.svg"></a>
15
- <a href="#use"><img alt="CLI" src="https://img.shields.io/badge/CLI-devarch-8A6A3A.svg"></a>
16
- <a href="#project-overview"><img alt="Magnexis" src="https://img.shields.io/badge/Brand-Magnexis-1F1F1F.svg"></a>
17
- <a href="#release-artifacts"><img alt="Build sdist" src="https://img.shields.io/badge/Build-sdist%20%2B%20wheel-5E4B35.svg"></a>
18
- <a href="#release-artifacts"><img alt="Release zip" src="https://img.shields.io/badge/Build-release%20zip-444444.svg"></a>
19
- <a href="#release-artifacts"><img alt="Release manifest" src="https://img.shields.io/badge/Build-manifest%20%2B%20checksums-B8894D.svg"></a>
20
- <a href="#project-overview"><img alt="Version" src="https://img.shields.io/badge/Version-0.2.0-444444.svg"></a>
21
- </p>
22
-
23
- Dev Archaeologist is a Magnexis-built Python CLI for excavating hidden technical debt, structural decay, and forgotten implementation artifacts in software repositories.
24
-
25
- It treats every codebase like an archaeological dig site and helps you answer questions like:
26
-
27
- - What code is ancient and likely abandoned?
28
- - Where is the repository accumulating risk?
29
- - Which files are structural weak points?
30
- - What can be safely removed, refactored, or archived?
31
- - How is the project evolving over time?
32
-
33
- ## Project Overview
34
-
35
- The tool scans a repository and turns the results into a rich, terminal-first excavation report.
36
-
37
- It can surface:
38
-
39
- - dead code
40
- - ancient files
41
- - TODO, FIXME, HACK, BUG, TEMP, and XXX markers
42
- - duplicated logic
43
- - unused assets and empty directories
44
- - suspicious backup-style filenames
45
- - oversized, complex "monster" files
46
- - dependency hotspots and fragile chains
47
- - architectural drift and release readiness issues
48
- - remediation suggestions with estimated effort
49
-
50
- The design goals are:
51
-
52
- - strong terminal UX
53
- - modular analyzers
54
- - readable artifact reports
55
- - release-friendly packaging
56
- - future plugin support
57
-
58
- ## Magnexis Brand
59
-
60
- Dev Archaeologist is presented as part of the Magnexis tooling line.
61
-
62
- Brand cues used in this repository:
63
-
64
- - the archaeological emblem in the project logo
65
- - the Magnexis name treatment in the README header
66
- - the Magnexis mark used as a small brand seal
67
- - a dedicated brand badge in the top badge row
68
- - consistent earth-toned release and CLI styling
69
-
70
- ## Installation
71
-
72
- Install from PyPI:
73
-
74
- ```bash
75
- pip install devarch
76
- ```
77
-
78
- Install with optional extras:
79
-
80
- ```bash
81
- pip install devarch[extended]
82
- pip install devarch[release]
83
- pip install devarch[test]
84
- ```
85
-
86
- The `release` extra is useful if you want to build local distributions.
87
-
88
- ## Quick Start
89
-
90
- Run a full excavation over the current directory:
91
-
92
- ```bash
93
- devarch scan .
94
- ```
95
-
96
- List every available command:
97
-
98
- ```bash
99
- devarch help
100
- ```
101
-
102
- Generate a markdown report:
103
-
104
- ```bash
105
- devarch export markdown
106
- ```
107
-
108
- Generate a PDF report:
109
-
110
- ```bash
111
- devarch report pdf
112
- ```
113
-
114
- ## Release Artifacts
115
-
116
- Dev Archaeologist includes a repeatable release build flow for local packaging and CI artifact generation.
117
-
118
- Build the release bundle locally:
119
-
120
- ```bash
121
- pip install .[release]
122
- python scripts/build_release.py
123
- ```
124
-
125
- This produces the following artifacts in `dist/`:
126
-
127
- - `*.whl` for Python wheel distribution
128
- - `*.tar.gz` for source distribution
129
- - `*-release.zip` for a bundled release archive
130
- - `release-manifest.json` for artifact metadata
131
- - `SHA256SUMS.txt` for checksum verification
132
-
133
- The zip bundle is convenient for sharing the release set as a single downloadable package.
134
-
135
- See [RELEASE_NOTES.md](RELEASE_NOTES.md) for the full release summary and artifact inventory.
136
-
137
- ## Command Reference
138
-
139
- ### Core excavation
140
-
141
- ```bash
142
- devarch scan .
143
- devarch help
144
- devarch ancient .
145
- devarch dead-code .
146
- devarch todos .
147
- devarch duplicates .
148
- devarch monsters .
149
- devarch ruins .
150
- devarch suspicious .
151
- devarch inspect src/app.py
152
- devarch trace auth
153
- devarch evidence auth
154
- devarch bugmark src/app.py --line 128
155
- devarch errorcode "ModuleNotFoundError: No module named 'rich'"
156
- ```
157
-
158
- ### Repository intelligence
159
-
160
- ```bash
161
- devarch dependencies .
162
- devarch genealogy .
163
- devarch civilizations .
164
- devarch debt .
165
- devarch timeline .
166
- devarch personality .
167
- devarch forecast .
168
- devarch explore .
169
- devarch investigate .
170
- devarch weaknesses .
171
- devarch quake .
172
- devarch architecture .
173
- devarch contributors .
174
- devarch mutations .
175
- devarch map .
176
- devarch survival .
177
- devarch notes .
178
- ```
179
-
180
- ### Forensic helpers
181
-
182
- ```bash
183
- devarch investigate .
184
- devarch inspect src/app.py
185
- devarch trace auth
186
- devarch evidence auth
187
- devarch bugmark src/app.py --line 128
188
- devarch errorcode "ModuleNotFoundError: No module named 'rich'"
189
- ```
190
-
191
- ### Recovery and maintenance
192
-
193
- ```bash
194
- devarch plan .
195
- devarch delete-check src/legacy_auth.py
196
- devarch refactor .
197
- devarch routes .
198
- devarch configs .
199
- devarch migrations .
200
- devarch deps .
201
- devarch drift .
202
- devarch pr-report .
203
- devarch status .
204
- devarch baseline .
205
- devarch regressions .
206
- devarch budget .
207
- devarch release-check .
208
- devarch ownership .
209
- devarch dependency-health .
210
- devarch cleanup .
211
- devarch standards .
212
- devarch history .
213
- devarch recommend .
214
- devarch prescribe .
215
- devarch repair-plan .
216
- ```
217
-
218
- ### Reporting
219
-
220
- ```bash
221
- devarch export json
222
- devarch export markdown
223
- devarch export html
224
- devarch report markdown
225
- devarch report html
226
- devarch report pdf
227
- ```
228
-
229
- ## Output Philosophy
230
-
231
- Each finding is designed to be actionable instead of just descriptive.
232
-
233
- Typical output includes:
234
-
235
- - problem
236
- - evidence
237
- - impact
238
- - confidence
239
- - recommended fix
240
- - estimated effort
241
- - risk level
242
-
243
- That makes the tool useful not just for audits, but also for cleanup planning, code review, and release preparation.
244
-
245
- ## Plugin Architecture
246
-
247
- Dev Archaeologist exposes a lightweight plugin registry via the `devarch.plugins` entry-point group so future extensions can hook into the excavation pipeline.
248
-
249
- Planned extension areas include:
250
-
251
- - `devarch-plugin-security`
252
- - `devarch-plugin-ai`
253
- - `devarch-plugin-performance`
254
-
255
- ## Development
256
-
257
- Project layout:
258
-
259
- ```text
260
- devarch/
261
- ├── analyzers/
262
- ├── cli/
263
- ├── reports/
264
- ├── scanner/
265
- ├── utils/
266
- └── tests/
267
- ```
268
-
269
- Useful commands:
270
-
271
- ```bash
272
- python -m pytest -q
273
- python -m compileall devarch
274
- python scripts/build_release.py
275
- ```
276
-
277
- ## Repository Maintenance
278
-
279
- The maintenance engine supports:
280
-
281
- - baseline snapshots
282
- - regression detection
283
- - debt budgets
284
- - release readiness checks
285
- - ownership analysis
286
- - dependency health monitoring
287
- - cleanup recommendations
288
- - standards checks
289
- - health history
290
- - remediation prescriptions
291
-
292
- ## License
293
-
294
- MIT
1
+ # Dev Archaeologist
2
+
3
+ <p align="center">
4
+ <img src="assets/devarch-logo.png" alt="Dev Archaeologist logo" width="220">
5
+ </p>
6
+
7
+ <p align="center">
8
+ <em>Software archaeology and repository intelligence from Magnexis<img src="assets/magnexis-logo.png" alt="Magnexis logo" width="35"></em>
9
+ </p>
10
+
11
+
12
+ <p align="center">
13
+ <a href="#install"><img alt="Python 3.12+" src="https://img.shields.io/badge/Python-3.12%2B-blue.svg"></a>
14
+ <a href="#license"><img alt="MIT License" src="https://img.shields.io/badge/License-MIT-green.svg"></a>
15
+ <a href="#use"><img alt="CLI" src="https://img.shields.io/badge/CLI-devarch-8A6A3A.svg"></a>
16
+ <a href="#project-overview"><img alt="Magnexis" src="https://img.shields.io/badge/Brand-Magnexis-1F1F1F.svg"></a>
17
+ <a href="#release-artifacts"><img alt="Build sdist" src="https://img.shields.io/badge/Build-sdist%20%2B%20wheel-5E4B35.svg"></a>
18
+ <a href="#release-artifacts"><img alt="Release zip" src="https://img.shields.io/badge/Build-release%20zip-444444.svg"></a>
19
+ <a href="#release-artifacts"><img alt="Release manifest" src="https://img.shields.io/badge/Build-manifest%20%2B%20checksums-B8894D.svg"></a>
20
+ <a href="#project-overview"><img alt="Version" src="https://img.shields.io/badge/Version-0.2.0-444444.svg"></a>
21
+ </p>
22
+
23
+ Dev Archaeologist is a Magnexis-built Python CLI for excavating hidden technical debt, structural decay, and forgotten implementation artifacts in software repositories.
24
+
25
+ It treats every codebase like an archaeological dig site and helps you answer questions like:
26
+
27
+ - What code is ancient and likely abandoned?
28
+ - Where is the repository accumulating risk?
29
+ - Which files are structural weak points?
30
+ - What can be safely removed, refactored, or archived?
31
+ - How is the project evolving over time?
32
+
33
+ ## Project Overview
34
+
35
+ The tool scans a repository and turns the results into a rich, terminal-first excavation report.
36
+
37
+ It can surface:
38
+
39
+ - dead code
40
+ - ancient files
41
+ - TODO, FIXME, HACK, BUG, TEMP, and XXX markers
42
+ - duplicated logic
43
+ - unused assets and empty directories
44
+ - suspicious backup-style filenames
45
+ - oversized, complex "monster" files
46
+ - dependency hotspots and fragile chains
47
+ - architectural drift and release readiness issues
48
+ - remediation suggestions with estimated effort
49
+
50
+ The design goals are:
51
+
52
+ - strong terminal UX
53
+ - modular analyzers
54
+ - readable artifact reports
55
+ - release-friendly packaging
56
+ - future plugin support
57
+
58
+ ## Magnexis Brand
59
+
60
+ Dev Archaeologist is presented as part of the Magnexis tooling line.
61
+
62
+ Brand cues used in this repository:
63
+
64
+ - the archaeological emblem in the project logo
65
+ - the Magnexis name treatment in the README header
66
+ - the Magnexis mark used as a small brand seal
67
+ - a dedicated brand badge in the top badge row
68
+ - consistent earth-toned release and CLI styling
69
+
70
+ ## Installation
71
+
72
+ Install from PyPI:
73
+
74
+ ```bash
75
+ pip install devarch
76
+ ```
77
+
78
+ Install with optional extras:
79
+
80
+ ```bash
81
+ pip install devarch[extended]
82
+ pip install devarch[release]
83
+ pip install devarch[test]
84
+ ```
85
+
86
+ The `release` extra is useful if you want to build local distributions.
87
+
88
+ ## Quick Start
89
+
90
+ Run a full excavation over the current directory:
91
+
92
+ ```bash
93
+ devarch scan .
94
+ ```
95
+
96
+ List every available command:
97
+
98
+ ```bash
99
+ devarch help
100
+ ```
101
+
102
+ Generate a markdown report:
103
+
104
+ ```bash
105
+ devarch export markdown
106
+ ```
107
+
108
+ Generate a PDF report:
109
+
110
+ ```bash
111
+ devarch report pdf
112
+ ```
113
+
114
+ ## Release Artifacts
115
+
116
+ Dev Archaeologist includes a repeatable release build flow for local packaging and CI artifact generation.
117
+
118
+ Build the release bundle locally:
119
+
120
+ ```bash
121
+ pip install .[release]
122
+ python scripts/build_release.py
123
+ ```
124
+
125
+ This produces the following artifacts in `dist/`:
126
+
127
+ - `devarch-0.2.0-py3-none-any.whl` for the Python wheel
128
+ - `devarch-0.2.0.tar.gz` for the source distribution
129
+ - `devarch-0.2.0-release.zip` for the bundled release archive
130
+ - `release-manifest.json` for artifact metadata
131
+ - `SHA256SUMS.txt` for checksum verification
132
+
133
+ ## Command Reference
134
+
135
+ ### Core excavation
136
+
137
+ ```bash
138
+ devarch scan .
139
+ devarch help
140
+ devarch ancient .
141
+ devarch dead-code .
142
+ devarch todos .
143
+ devarch duplicates .
144
+ devarch monsters .
145
+ devarch ruins .
146
+ devarch suspicious .
147
+ devarch inspect src/app.py
148
+ devarch trace auth
149
+ devarch evidence auth
150
+ devarch bugmark src/app.py --line 128
151
+ devarch errorcode "ModuleNotFoundError: No module named 'rich'"
152
+ ```
153
+
154
+ ### Repository intelligence
155
+
156
+ ```bash
157
+ devarch dependencies .
158
+ devarch genealogy .
159
+ devarch civilizations .
160
+ devarch debt .
161
+ devarch timeline .
162
+ devarch personality .
163
+ devarch forecast .
164
+ devarch explore .
165
+ devarch investigate .
166
+ devarch weaknesses .
167
+ devarch quake .
168
+ devarch architecture .
169
+ devarch contributors .
170
+ devarch mutations .
171
+ devarch map .
172
+ devarch survival .
173
+ devarch notes .
174
+ ```
175
+
176
+ ### Forensic helpers
177
+
178
+ ```bash
179
+ devarch investigate .
180
+ devarch inspect src/app.py
181
+ devarch trace auth
182
+ devarch evidence auth
183
+ devarch bugmark src/app.py --line 128
184
+ devarch errorcode "ModuleNotFoundError: No module named 'rich'"
185
+ ```
186
+
187
+ ### Recovery and maintenance
188
+
189
+ ```bash
190
+ devarch plan .
191
+ devarch delete-check src/legacy_auth.py
192
+ devarch refactor .
193
+ devarch routes .
194
+ devarch configs .
195
+ devarch migrations .
196
+ devarch deps .
197
+ devarch drift .
198
+ devarch pr-report .
199
+ devarch status .
200
+ devarch baseline .
201
+ devarch regressions .
202
+ devarch budget .
203
+ devarch release-check .
204
+ devarch ownership .
205
+ devarch dependency-health .
206
+ devarch cleanup .
207
+ devarch standards .
208
+ devarch history .
209
+ devarch recommend .
210
+ devarch prescribe .
211
+ devarch repair-plan .
212
+ ```
213
+
214
+ ### Reporting
215
+
216
+ ```bash
217
+ devarch export json
218
+ devarch export markdown
219
+ devarch export html
220
+ devarch report markdown
221
+ devarch report html
222
+ devarch report pdf
223
+ ```
224
+
225
+ ## Output Philosophy
226
+
227
+ Each finding is designed to be actionable instead of just descriptive.
228
+
229
+ Typical output includes:
230
+
231
+ - problem
232
+ - evidence
233
+ - impact
234
+ - confidence
235
+ - recommended fix
236
+ - estimated effort
237
+ - risk level
238
+
239
+ That makes the tool useful not just for audits, but also for cleanup planning, code review, and release preparation.
240
+
241
+ ## Plugin Architecture
242
+
243
+ Dev Archaeologist exposes a lightweight plugin registry via the `devarch.plugins` entry-point group so future extensions can hook into the excavation pipeline.
244
+
245
+ Planned extension areas include:
246
+
247
+ - `devarch-plugin-security`
248
+ - `devarch-plugin-ai`
249
+ - `devarch-plugin-performance`
250
+
251
+ ## Development
252
+
253
+ Project layout:
254
+
255
+ ```text
256
+ devarch/
257
+ ├── analyzers/
258
+ ├── cli/
259
+ ├── reports/
260
+ ├── scanner/
261
+ ├── utils/
262
+ └── tests/
263
+ ```
264
+
265
+ Useful commands:
266
+
267
+ ```bash
268
+ python -m pytest -q
269
+ python -m compileall devarch
270
+ python scripts/build_release.py
271
+ ```
272
+
273
+ ## Repository Maintenance
274
+
275
+ The maintenance engine supports:
276
+
277
+ - baseline snapshots
278
+ - regression detection
279
+ - debt budgets
280
+ - release readiness checks
281
+ - ownership analysis
282
+ - dependency health monitoring
283
+ - cleanup recommendations
284
+ - standards checks
285
+ - health history
286
+ - remediation prescriptions
287
+
288
+ ## License
289
+
290
+ MIT
@@ -19,9 +19,11 @@ def dependency_count(content: str) -> int:
19
19
  count = 0
20
20
  for line in content.splitlines():
21
21
  line = line.strip()
22
- if line.startswith("import ") or line.startswith("from "):
22
+ if line.startswith("import "):
23
23
  count += 1
24
- if line.startswith("require(") or "import " in line:
24
+ elif line.startswith("from "):
25
+ count += 1
26
+ elif line.startswith("require("):
25
27
  count += 1
26
28
  return count
27
29