evolution-engine 0.1.0__tar.gz → 0.2.0__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.
- {evolution_engine-0.1.0/evolution_engine.egg-info → evolution_engine-0.2.0}/PKG-INFO +109 -18
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/README.md +108 -17
- evolution_engine-0.2.0/evolution/__init__.py +1 -0
- evolution_engine-0.2.0/evolution/accepted.py +310 -0
- evolution_engine-0.2.0/evolution/adapter_security.py +279 -0
- evolution_engine-0.2.0/evolution/adapter_versions.py +162 -0
- evolution_engine-0.2.0/evolution/cli.py +3237 -0
- evolution_engine-0.2.0/evolution/config.py +369 -0
- evolution_engine-0.2.0/evolution/data/adapter_blocklist.json +1 -0
- evolution_engine-0.2.0/evolution/data/pattern_blocklist.json +1 -0
- evolution_engine-0.2.0/evolution/data/pattern_index.json +1 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/data/universal_patterns.json +54 -27
- evolution_engine-0.2.0/evolution/data/verified_adapters.json +1 -0
- evolution_engine-0.2.0/evolution/fixer.py +870 -0
- evolution_engine-0.2.0/evolution/friendly.py +531 -0
- evolution_engine-0.2.0/evolution/history.py +346 -0
- evolution_engine-0.2.0/evolution/hooks.py +394 -0
- evolution_engine-0.2.0/evolution/init.py +339 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/kb_export.py +47 -23
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/kb_security.py +194 -2
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/kb_sync.py +17 -16
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/knowledge_store.py +37 -7
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/license.py +5 -4
- evolution_engine-0.2.0/evolution/notifications.py +275 -0
- evolution_engine-0.2.0/evolution/orchestrator.py +824 -0
- evolution_engine-0.2.0/evolution/pattern_registry.py +504 -0
- evolution_engine-0.2.0/evolution/pattern_scaffold.py +230 -0
- evolution_engine-0.2.0/evolution/pattern_validator.py +206 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/phase1_engine.py +12 -1
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/phase2_engine.py +6 -1
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/phase4_engine.py +38 -8
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/phase5_engine.py +245 -105
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/prescan.py +10 -2
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/registry.py +194 -16
- evolution_engine-0.2.0/evolution/report_generator.py +1822 -0
- evolution_engine-0.2.0/evolution/report_server.py +201 -0
- evolution_engine-0.2.0/evolution/setup_ui.py +735 -0
- evolution_engine-0.2.0/evolution/watcher.py +396 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0/evolution_engine.egg-info}/PKG-INFO +109 -18
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution_engine.egg-info/SOURCES.txt +18 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/pyproject.toml +2 -2
- evolution_engine-0.2.0/setup.py +68 -0
- evolution_engine-0.1.0/evolution/__init__.py +0 -1
- evolution_engine-0.1.0/evolution/cli.py +0 -1160
- evolution_engine-0.1.0/evolution/config.py +0 -161
- evolution_engine-0.1.0/evolution/fixer.py +0 -439
- evolution_engine-0.1.0/evolution/friendly.py +0 -200
- evolution_engine-0.1.0/evolution/orchestrator.py +0 -421
- evolution_engine-0.1.0/evolution/report_generator.py +0 -884
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/MANIFEST.in +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapter_scaffold.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapter_validator.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/__init__.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/ci/__init__.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/ci/github_actions_adapter.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/config/__init__.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/config/terraform_adapter.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/dependency/__init__.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/dependency/pip_adapter.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/deployment/__init__.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/deployment/github_releases_adapter.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/git/__init__.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/git/git_adapter.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/git/git_history_walker.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/github_client.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/schema/__init__.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/schema/openapi_adapter.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/security/__init__.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/security/github_security_adapter.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/security/trivy_adapter.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/testing/__init__.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/adapters/testing/junit_adapter.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/agents/__init__.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/agents/anthropic_agent.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/agents/base.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/agents/cli_agent.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/data/adapter_catalog.json +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/data/sdk_fingerprints.json +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/fp_validation.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/inline_suggestions.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/investigator.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/llm_anthropic.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/llm_openrouter.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/phase3_1_renderer.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/phase3_engine.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/pr_comment.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/telemetry.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution/validation_gate.py +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution_engine.egg-info/dependency_links.txt +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution_engine.egg-info/entry_points.txt +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution_engine.egg-info/requires.txt +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/evolution_engine.egg-info/top_level.txt +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/setup.cfg +0 -0
- {evolution_engine-0.1.0 → evolution_engine-0.2.0}/tests/test_git_history_walker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: evolution-engine
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Git-native codebase evolution indexer
|
|
5
5
|
Author: Slava
|
|
6
6
|
License: MIT
|
|
@@ -72,22 +72,39 @@ Sources → Phase 1 (Record) → Phase 2 (Measure) → Phase 3 (Explain)
|
|
|
72
72
|
## Quick Start
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
# Install
|
|
76
75
|
pip install evolution-engine
|
|
77
|
-
|
|
78
|
-
# Analyze any git repository
|
|
79
76
|
evo analyze .
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Three Integration Paths
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
| Path | Command | When to use |
|
|
82
|
+
|------|---------|-------------|
|
|
83
|
+
| **CLI Explorer** | `evo analyze .` | Start here -- manual analysis, reports, investigation |
|
|
84
|
+
| **Git Hooks** | `evo init . --path hooks` | Automate locally -- analyze on every commit or push |
|
|
85
|
+
| **GitHub Action** | `evo init . --path action` | Automate in CI -- PR comments with risk badges |
|
|
83
86
|
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
Start with the CLI. Graduate to hooks when you trust the output. Add the GitHub Action for team-wide coverage. See [QUICKSTART.md](QUICKSTART.md) for the full walkthrough.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Path 1: CLI Explorer (start here)
|
|
91
|
+
evo analyze . # Run the full pipeline
|
|
92
|
+
evo report . --open # Visual HTML report
|
|
93
|
+
evo status # Detected adapters and run info
|
|
86
94
|
|
|
87
|
-
#
|
|
88
|
-
evo
|
|
95
|
+
# Path 2: Git Hooks (automate locally)
|
|
96
|
+
evo init . --path hooks # Install post-commit hook
|
|
97
|
+
evo watch . # Or poll for commits continuously
|
|
98
|
+
|
|
99
|
+
# Path 3: GitHub Action (CI)
|
|
100
|
+
evo init . --path action # Generate workflow file, then push
|
|
101
|
+
|
|
102
|
+
# All paths at once
|
|
103
|
+
evo init . --path all
|
|
89
104
|
```
|
|
90
105
|
|
|
106
|
+
Free tier gets all three paths. Pro adds AI investigation, fix suggestions, and inline PR review comments.
|
|
107
|
+
|
|
91
108
|
### From Source
|
|
92
109
|
|
|
93
110
|
```bash
|
|
@@ -97,7 +114,7 @@ python -m venv .venv
|
|
|
97
114
|
source .venv/bin/activate
|
|
98
115
|
pip install -e .
|
|
99
116
|
|
|
100
|
-
# Run the test suite (
|
|
117
|
+
# Run the test suite (840+ tests)
|
|
101
118
|
python -m pytest tests/ -v
|
|
102
119
|
```
|
|
103
120
|
|
|
@@ -156,25 +173,65 @@ The **Git History Walker** extracts dependency, schema, and config files from gi
|
|
|
156
173
|
## CLI Commands
|
|
157
174
|
|
|
158
175
|
```bash
|
|
159
|
-
# Core
|
|
176
|
+
# Core Analysis
|
|
160
177
|
evo analyze [path] # Detect adapters, run full pipeline
|
|
161
178
|
evo analyze . --families git,ci # Override auto-detection
|
|
162
179
|
evo report [path] # Generate HTML report from last run
|
|
163
180
|
evo status # Show detected adapters and event counts
|
|
181
|
+
evo investigate [path] # AI root cause analysis (Pro)
|
|
182
|
+
evo fix [path] # AI fix-verify loop (Pro)
|
|
183
|
+
evo fix [path] --residual # Iteration-aware prompt (current vs previous)
|
|
184
|
+
evo verify <advisory> # Compare current state to a previous advisory
|
|
185
|
+
|
|
186
|
+
# Setup & Integration
|
|
187
|
+
evo init [path] # Detect environment and suggest integration path
|
|
188
|
+
evo init . --path hooks # Install git hooks for auto-analysis
|
|
189
|
+
evo init . --path action # Generate GitHub Action workflow
|
|
190
|
+
evo init . --path all # Set up all integration paths
|
|
191
|
+
evo setup [path] # Interactive configuration wizard
|
|
192
|
+
evo setup --ui # Browser-based settings page
|
|
193
|
+
evo watch [path] # Watch for commits and auto-analyze
|
|
194
|
+
evo watch . --daemon # Run watcher in background
|
|
195
|
+
evo hooks install [path] # Install git hooks
|
|
196
|
+
evo hooks uninstall [path] # Remove git hooks
|
|
197
|
+
evo hooks status [path] # Show hook status
|
|
164
198
|
|
|
165
199
|
# Patterns & Knowledge Base
|
|
166
200
|
evo patterns list # Show discovered patterns
|
|
201
|
+
evo patterns pull [path] # Fetch community patterns from registry
|
|
202
|
+
evo patterns push [path] # Share anonymized patterns (requires privacy_level >= 1)
|
|
167
203
|
evo patterns export # Export anonymized pattern digests
|
|
168
204
|
evo patterns import <file> # Import community patterns
|
|
169
|
-
evo patterns
|
|
205
|
+
evo patterns packages # List pattern packages + cache status
|
|
206
|
+
evo patterns new <name> # Scaffold a pattern package
|
|
207
|
+
evo patterns validate <path> # Validate a pattern package
|
|
208
|
+
evo patterns publish <path> # Publish pattern package to PyPI
|
|
209
|
+
evo patterns add <package> # Subscribe to a pattern package
|
|
210
|
+
evo patterns remove <package> # Unsubscribe from a pattern package
|
|
211
|
+
evo patterns block <name> # Block a pattern package
|
|
212
|
+
evo patterns unblock <name> # Unblock a pattern package
|
|
170
213
|
|
|
171
214
|
# Adapter Ecosystem
|
|
172
|
-
evo adapter list # Show detected
|
|
215
|
+
evo adapter list # Show detected adapters with trust badges
|
|
216
|
+
evo adapter discover [path] # Find available adapters for your tools
|
|
173
217
|
evo adapter validate <class> # Run 13-check certification
|
|
218
|
+
evo adapter validate <class> --security # + security scan
|
|
219
|
+
evo adapter security-check <mod> # Standalone security scan
|
|
174
220
|
evo adapter guide # How to build an adapter
|
|
175
221
|
evo adapter new <name> --family ci # Scaffold a pip-installable package
|
|
176
222
|
evo adapter prompt <name> --family ci # Generate AI prompt for building
|
|
177
223
|
evo adapter request <description> # Request an adapter from the community
|
|
224
|
+
evo adapter block <name> -r "reason" # Block an adapter locally
|
|
225
|
+
evo adapter unblock <name> # Unblock a blocked adapter
|
|
226
|
+
evo adapter check-updates # Check PyPI for plugin updates
|
|
227
|
+
evo adapter report <name> # Report a broken/malicious adapter
|
|
228
|
+
|
|
229
|
+
# Configuration & History
|
|
230
|
+
evo config list # Show all settings
|
|
231
|
+
evo config set <key> <val> # Update a setting
|
|
232
|
+
evo license status # Check license tier
|
|
233
|
+
evo history list [path] # Show run history
|
|
234
|
+
evo history diff [r1 r2] # Compare two runs
|
|
178
235
|
```
|
|
179
236
|
|
|
180
237
|
---
|
|
@@ -203,7 +260,7 @@ pip install -e .
|
|
|
203
260
|
evo adapter validate evo_jenkins.JenkinsAdapter
|
|
204
261
|
```
|
|
205
262
|
|
|
206
|
-
|
|
263
|
+
Adapters pass 13 structural checks + security scanning before certification.
|
|
207
264
|
|
|
208
265
|
### Learn More
|
|
209
266
|
|
|
@@ -221,9 +278,38 @@ The Evolution Engine discovers cross-family patterns automatically:
|
|
|
221
278
|
- **Lift-based co-occurrence**: deviations co-occur more than chance (lift >= 1.5)
|
|
222
279
|
- **Presence-based**: metric distributions differ when events co-occur (Cohen's d >= 0.2)
|
|
223
280
|
|
|
224
|
-
Patterns progress through scopes: **local** (this repo) -> **community** (shared anonymously) -> **confirmed** (local + community match)
|
|
281
|
+
Patterns progress through scopes: **local** (this repo) -> **community** (shared anonymously) -> **confirmed** (local + community match).
|
|
282
|
+
|
|
283
|
+
Community patterns are distributed through two redundant channels:
|
|
284
|
+
- **Registry** (real-time) — patterns pushed by users are immediately available via `codequal.dev/api`
|
|
285
|
+
- **PyPI packages** (durable) — periodic snapshots published as [`evo-patterns-community`](https://pypi.org/project/evo-patterns-community/), auto-fetched without `pip install`
|
|
225
286
|
|
|
226
|
-
|
|
287
|
+
If the registry is unavailable, PyPI packages still work. Both are checked automatically on `evo analyze`.
|
|
288
|
+
|
|
289
|
+
### Pattern Distribution
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# Auto-fetch happens on every `evo analyze` — no manual install needed
|
|
293
|
+
evo analyze .
|
|
294
|
+
# Imported 25 pattern(s) from community registry
|
|
295
|
+
# Imported 25 pattern(s) from community packages
|
|
296
|
+
|
|
297
|
+
# Pull/push patterns from the community registry
|
|
298
|
+
evo patterns pull .
|
|
299
|
+
evo patterns push . # requires: evo config set sync.privacy_level 2
|
|
300
|
+
|
|
301
|
+
# Add a third-party pattern package to your sources
|
|
302
|
+
evo patterns add evo-patterns-web-security
|
|
303
|
+
|
|
304
|
+
# Block an unwanted package
|
|
305
|
+
evo patterns block evo-patterns-untrusted
|
|
306
|
+
|
|
307
|
+
# Build and publish your own pattern package
|
|
308
|
+
evo patterns new my-patterns
|
|
309
|
+
# ... edit patterns.json ...
|
|
310
|
+
evo patterns validate evo-patterns-my-patterns
|
|
311
|
+
evo patterns publish evo-patterns-my-patterns
|
|
312
|
+
```
|
|
227
313
|
|
|
228
314
|
---
|
|
229
315
|
|
|
@@ -244,6 +330,9 @@ evolution-engine/
|
|
|
244
330
|
│ ├── knowledge_store.py # SQLite knowledge base
|
|
245
331
|
│ ├── kb_export.py # Anonymized pattern export/import
|
|
246
332
|
│ ├── kb_security.py # Import validation (XSS, injection, traversal)
|
|
333
|
+
│ ├── pattern_registry.py # Auto-fetch pattern packages from PyPI
|
|
334
|
+
│ ├── pattern_validator.py # Pattern package validation
|
|
335
|
+
│ ├── pattern_scaffold.py # Pattern package scaffolding
|
|
247
336
|
│ ├── report_generator.py # Standalone HTML report generator
|
|
248
337
|
│ ├── adapter_validator.py # 13-check adapter certification
|
|
249
338
|
│ ├── adapter_scaffold.py # Package scaffolding + AI prompt gen
|
|
@@ -252,7 +341,9 @@ evolution-engine/
|
|
|
252
341
|
│ ├── llm_anthropic.py # Anthropic LLM client
|
|
253
342
|
│ ├── validation_gate.py # LLM output validation
|
|
254
343
|
│ ├── data/
|
|
255
|
-
│ │
|
|
344
|
+
│ │ ├── universal_patterns.json # Bundled universal patterns
|
|
345
|
+
│ │ ├── pattern_index.json # Known pattern packages
|
|
346
|
+
│ │ └── pattern_blocklist.json # Blocked pattern packages
|
|
256
347
|
│ └── adapters/
|
|
257
348
|
│ ├── git/ # Version Control (+ Git History Walker)
|
|
258
349
|
│ ├── ci/ # CI / Build Pipeline (GitHub Actions)
|
|
@@ -37,22 +37,39 @@ Sources → Phase 1 (Record) → Phase 2 (Measure) → Phase 3 (Explain)
|
|
|
37
37
|
## Quick Start
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
# Install
|
|
41
40
|
pip install evolution-engine
|
|
42
|
-
|
|
43
|
-
# Analyze any git repository
|
|
44
41
|
evo analyze .
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Three Integration Paths
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
| Path | Command | When to use |
|
|
47
|
+
|------|---------|-------------|
|
|
48
|
+
| **CLI Explorer** | `evo analyze .` | Start here -- manual analysis, reports, investigation |
|
|
49
|
+
| **Git Hooks** | `evo init . --path hooks` | Automate locally -- analyze on every commit or push |
|
|
50
|
+
| **GitHub Action** | `evo init . --path action` | Automate in CI -- PR comments with risk badges |
|
|
48
51
|
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
Start with the CLI. Graduate to hooks when you trust the output. Add the GitHub Action for team-wide coverage. See [QUICKSTART.md](QUICKSTART.md) for the full walkthrough.
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Path 1: CLI Explorer (start here)
|
|
56
|
+
evo analyze . # Run the full pipeline
|
|
57
|
+
evo report . --open # Visual HTML report
|
|
58
|
+
evo status # Detected adapters and run info
|
|
51
59
|
|
|
52
|
-
#
|
|
53
|
-
evo
|
|
60
|
+
# Path 2: Git Hooks (automate locally)
|
|
61
|
+
evo init . --path hooks # Install post-commit hook
|
|
62
|
+
evo watch . # Or poll for commits continuously
|
|
63
|
+
|
|
64
|
+
# Path 3: GitHub Action (CI)
|
|
65
|
+
evo init . --path action # Generate workflow file, then push
|
|
66
|
+
|
|
67
|
+
# All paths at once
|
|
68
|
+
evo init . --path all
|
|
54
69
|
```
|
|
55
70
|
|
|
71
|
+
Free tier gets all three paths. Pro adds AI investigation, fix suggestions, and inline PR review comments.
|
|
72
|
+
|
|
56
73
|
### From Source
|
|
57
74
|
|
|
58
75
|
```bash
|
|
@@ -62,7 +79,7 @@ python -m venv .venv
|
|
|
62
79
|
source .venv/bin/activate
|
|
63
80
|
pip install -e .
|
|
64
81
|
|
|
65
|
-
# Run the test suite (
|
|
82
|
+
# Run the test suite (840+ tests)
|
|
66
83
|
python -m pytest tests/ -v
|
|
67
84
|
```
|
|
68
85
|
|
|
@@ -121,25 +138,65 @@ The **Git History Walker** extracts dependency, schema, and config files from gi
|
|
|
121
138
|
## CLI Commands
|
|
122
139
|
|
|
123
140
|
```bash
|
|
124
|
-
# Core
|
|
141
|
+
# Core Analysis
|
|
125
142
|
evo analyze [path] # Detect adapters, run full pipeline
|
|
126
143
|
evo analyze . --families git,ci # Override auto-detection
|
|
127
144
|
evo report [path] # Generate HTML report from last run
|
|
128
145
|
evo status # Show detected adapters and event counts
|
|
146
|
+
evo investigate [path] # AI root cause analysis (Pro)
|
|
147
|
+
evo fix [path] # AI fix-verify loop (Pro)
|
|
148
|
+
evo fix [path] --residual # Iteration-aware prompt (current vs previous)
|
|
149
|
+
evo verify <advisory> # Compare current state to a previous advisory
|
|
150
|
+
|
|
151
|
+
# Setup & Integration
|
|
152
|
+
evo init [path] # Detect environment and suggest integration path
|
|
153
|
+
evo init . --path hooks # Install git hooks for auto-analysis
|
|
154
|
+
evo init . --path action # Generate GitHub Action workflow
|
|
155
|
+
evo init . --path all # Set up all integration paths
|
|
156
|
+
evo setup [path] # Interactive configuration wizard
|
|
157
|
+
evo setup --ui # Browser-based settings page
|
|
158
|
+
evo watch [path] # Watch for commits and auto-analyze
|
|
159
|
+
evo watch . --daemon # Run watcher in background
|
|
160
|
+
evo hooks install [path] # Install git hooks
|
|
161
|
+
evo hooks uninstall [path] # Remove git hooks
|
|
162
|
+
evo hooks status [path] # Show hook status
|
|
129
163
|
|
|
130
164
|
# Patterns & Knowledge Base
|
|
131
165
|
evo patterns list # Show discovered patterns
|
|
166
|
+
evo patterns pull [path] # Fetch community patterns from registry
|
|
167
|
+
evo patterns push [path] # Share anonymized patterns (requires privacy_level >= 1)
|
|
132
168
|
evo patterns export # Export anonymized pattern digests
|
|
133
169
|
evo patterns import <file> # Import community patterns
|
|
134
|
-
evo patterns
|
|
170
|
+
evo patterns packages # List pattern packages + cache status
|
|
171
|
+
evo patterns new <name> # Scaffold a pattern package
|
|
172
|
+
evo patterns validate <path> # Validate a pattern package
|
|
173
|
+
evo patterns publish <path> # Publish pattern package to PyPI
|
|
174
|
+
evo patterns add <package> # Subscribe to a pattern package
|
|
175
|
+
evo patterns remove <package> # Unsubscribe from a pattern package
|
|
176
|
+
evo patterns block <name> # Block a pattern package
|
|
177
|
+
evo patterns unblock <name> # Unblock a pattern package
|
|
135
178
|
|
|
136
179
|
# Adapter Ecosystem
|
|
137
|
-
evo adapter list # Show detected
|
|
180
|
+
evo adapter list # Show detected adapters with trust badges
|
|
181
|
+
evo adapter discover [path] # Find available adapters for your tools
|
|
138
182
|
evo adapter validate <class> # Run 13-check certification
|
|
183
|
+
evo adapter validate <class> --security # + security scan
|
|
184
|
+
evo adapter security-check <mod> # Standalone security scan
|
|
139
185
|
evo adapter guide # How to build an adapter
|
|
140
186
|
evo adapter new <name> --family ci # Scaffold a pip-installable package
|
|
141
187
|
evo adapter prompt <name> --family ci # Generate AI prompt for building
|
|
142
188
|
evo adapter request <description> # Request an adapter from the community
|
|
189
|
+
evo adapter block <name> -r "reason" # Block an adapter locally
|
|
190
|
+
evo adapter unblock <name> # Unblock a blocked adapter
|
|
191
|
+
evo adapter check-updates # Check PyPI for plugin updates
|
|
192
|
+
evo adapter report <name> # Report a broken/malicious adapter
|
|
193
|
+
|
|
194
|
+
# Configuration & History
|
|
195
|
+
evo config list # Show all settings
|
|
196
|
+
evo config set <key> <val> # Update a setting
|
|
197
|
+
evo license status # Check license tier
|
|
198
|
+
evo history list [path] # Show run history
|
|
199
|
+
evo history diff [r1 r2] # Compare two runs
|
|
143
200
|
```
|
|
144
201
|
|
|
145
202
|
---
|
|
@@ -168,7 +225,7 @@ pip install -e .
|
|
|
168
225
|
evo adapter validate evo_jenkins.JenkinsAdapter
|
|
169
226
|
```
|
|
170
227
|
|
|
171
|
-
|
|
228
|
+
Adapters pass 13 structural checks + security scanning before certification.
|
|
172
229
|
|
|
173
230
|
### Learn More
|
|
174
231
|
|
|
@@ -186,9 +243,38 @@ The Evolution Engine discovers cross-family patterns automatically:
|
|
|
186
243
|
- **Lift-based co-occurrence**: deviations co-occur more than chance (lift >= 1.5)
|
|
187
244
|
- **Presence-based**: metric distributions differ when events co-occur (Cohen's d >= 0.2)
|
|
188
245
|
|
|
189
|
-
Patterns progress through scopes: **local** (this repo) -> **community** (shared anonymously) -> **confirmed** (local + community match)
|
|
246
|
+
Patterns progress through scopes: **local** (this repo) -> **community** (shared anonymously) -> **confirmed** (local + community match).
|
|
247
|
+
|
|
248
|
+
Community patterns are distributed through two redundant channels:
|
|
249
|
+
- **Registry** (real-time) — patterns pushed by users are immediately available via `codequal.dev/api`
|
|
250
|
+
- **PyPI packages** (durable) — periodic snapshots published as [`evo-patterns-community`](https://pypi.org/project/evo-patterns-community/), auto-fetched without `pip install`
|
|
190
251
|
|
|
191
|
-
|
|
252
|
+
If the registry is unavailable, PyPI packages still work. Both are checked automatically on `evo analyze`.
|
|
253
|
+
|
|
254
|
+
### Pattern Distribution
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# Auto-fetch happens on every `evo analyze` — no manual install needed
|
|
258
|
+
evo analyze .
|
|
259
|
+
# Imported 25 pattern(s) from community registry
|
|
260
|
+
# Imported 25 pattern(s) from community packages
|
|
261
|
+
|
|
262
|
+
# Pull/push patterns from the community registry
|
|
263
|
+
evo patterns pull .
|
|
264
|
+
evo patterns push . # requires: evo config set sync.privacy_level 2
|
|
265
|
+
|
|
266
|
+
# Add a third-party pattern package to your sources
|
|
267
|
+
evo patterns add evo-patterns-web-security
|
|
268
|
+
|
|
269
|
+
# Block an unwanted package
|
|
270
|
+
evo patterns block evo-patterns-untrusted
|
|
271
|
+
|
|
272
|
+
# Build and publish your own pattern package
|
|
273
|
+
evo patterns new my-patterns
|
|
274
|
+
# ... edit patterns.json ...
|
|
275
|
+
evo patterns validate evo-patterns-my-patterns
|
|
276
|
+
evo patterns publish evo-patterns-my-patterns
|
|
277
|
+
```
|
|
192
278
|
|
|
193
279
|
---
|
|
194
280
|
|
|
@@ -209,6 +295,9 @@ evolution-engine/
|
|
|
209
295
|
│ ├── knowledge_store.py # SQLite knowledge base
|
|
210
296
|
│ ├── kb_export.py # Anonymized pattern export/import
|
|
211
297
|
│ ├── kb_security.py # Import validation (XSS, injection, traversal)
|
|
298
|
+
│ ├── pattern_registry.py # Auto-fetch pattern packages from PyPI
|
|
299
|
+
│ ├── pattern_validator.py # Pattern package validation
|
|
300
|
+
│ ├── pattern_scaffold.py # Pattern package scaffolding
|
|
212
301
|
│ ├── report_generator.py # Standalone HTML report generator
|
|
213
302
|
│ ├── adapter_validator.py # 13-check adapter certification
|
|
214
303
|
│ ├── adapter_scaffold.py # Package scaffolding + AI prompt gen
|
|
@@ -217,7 +306,9 @@ evolution-engine/
|
|
|
217
306
|
│ ├── llm_anthropic.py # Anthropic LLM client
|
|
218
307
|
│ ├── validation_gate.py # LLM output validation
|
|
219
308
|
│ ├── data/
|
|
220
|
-
│ │
|
|
309
|
+
│ │ ├── universal_patterns.json # Bundled universal patterns
|
|
310
|
+
│ │ ├── pattern_index.json # Known pattern packages
|
|
311
|
+
│ │ └── pattern_blocklist.json # Blocked pattern packages
|
|
221
312
|
│ └── adapters/
|
|
222
313
|
│ ├── git/ # Version Control (+ Git History Walker)
|
|
223
314
|
│ ├── ci/ # CI / Build Pipeline (GitHub Actions)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.0"
|