development-engine-vector 0.3.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.
- development_engine_vector-0.3.0/.flake8 +5 -0
- development_engine_vector-0.3.0/.gitignore +6 -0
- development_engine_vector-0.3.0/PKG-INFO +252 -0
- development_engine_vector-0.3.0/changelog.md +65 -0
- development_engine_vector-0.3.0/contributing.md +174 -0
- development_engine_vector-0.3.0/dev/__init__.py +3 -0
- development_engine_vector-0.3.0/dev/__main__.py +5 -0
- development_engine_vector-0.3.0/dev/cli/__init__.py +0 -0
- development_engine_vector-0.3.0/dev/cli/cli.py +674 -0
- development_engine_vector-0.3.0/dev/kernel/__init__.py +0 -0
- development_engine_vector-0.3.0/dev/kernel/config.py +46 -0
- development_engine_vector-0.3.0/dev/kernel/db.py +129 -0
- development_engine_vector-0.3.0/dev/kernel/paths.py +85 -0
- development_engine_vector-0.3.0/dev/kernel/pmf_kernel.py +432 -0
- development_engine_vector-0.3.0/dev/kernel/selfcheck.py +137 -0
- development_engine_vector-0.3.0/dev/ui/__init__.py +0 -0
- development_engine_vector-0.3.0/dev/ui/actions.py +47 -0
- development_engine_vector-0.3.0/dev/ui/db/__init__.py +26 -0
- development_engine_vector-0.3.0/dev/ui/db/base.py +75 -0
- development_engine_vector-0.3.0/dev/ui/db/checks.py +16 -0
- development_engine_vector-0.3.0/dev/ui/db/events.py +18 -0
- development_engine_vector-0.3.0/dev/ui/db/health.py +34 -0
- development_engine_vector-0.3.0/dev/ui/db/identity.py +12 -0
- development_engine_vector-0.3.0/dev/ui/db/manifest.py +35 -0
- development_engine_vector-0.3.0/dev/ui/db/overview.py +47 -0
- development_engine_vector-0.3.0/dev/ui/db/runs.py +47 -0
- development_engine_vector-0.3.0/dev/ui/routes.py +114 -0
- development_engine_vector-0.3.0/dev/ui/static/__init__.py +0 -0
- development_engine_vector-0.3.0/dev/ui/static/web.css +722 -0
- development_engine_vector-0.3.0/dev/ui/static/web.js +528 -0
- development_engine_vector-0.3.0/dev/ui/templates.py +231 -0
- development_engine_vector-0.3.0/dev/ui/web.py +28 -0
- development_engine_vector-0.3.0/dev/utils.py +93 -0
- development_engine_vector-0.3.0/dev/vcs/__init__.py +0 -0
- development_engine_vector-0.3.0/dev/vcs/git.py +107 -0
- development_engine_vector-0.3.0/dev/vcs/github.py +77 -0
- development_engine_vector-0.3.0/dev/workflow/__init__.py +0 -0
- development_engine_vector-0.3.0/dev/workflow/cda.py +143 -0
- development_engine_vector-0.3.0/dev/workflow/changelog.py +102 -0
- development_engine_vector-0.3.0/dev/workflow/preflight.py +307 -0
- development_engine_vector-0.3.0/dev/workflow/release.py +217 -0
- development_engine_vector-0.3.0/dev/workflow/versioning.py +87 -0
- development_engine_vector-0.3.0/dev-cli.toml.example +19 -0
- development_engine_vector-0.3.0/docs/architecture.md +192 -0
- development_engine_vector-0.3.0/license +21 -0
- development_engine_vector-0.3.0/pyproject.toml +22 -0
- development_engine_vector-0.3.0/readme.md +241 -0
- development_engine_vector-0.3.0/tests/__init__.py +0 -0
- development_engine_vector-0.3.0/tests/test_cda_preflight.py +231 -0
- development_engine_vector-0.3.0/tests/test_dev_cli.py +125 -0
- development_engine_vector-0.3.0/version +1 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: development-engine-vector
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Development Engine Vector — internal developer workflow CLI.
|
|
5
|
+
Author-email: Ernie Butcher <ernie@fiosii.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Requires-Python: >=3.8
|
|
8
|
+
Requires-Dist: click>=8.1
|
|
9
|
+
Requires-Dist: tomli>=2.0
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
|
|
12
|
+
# Development Engine Vector
|
|
13
|
+
|
|
14
|
+
[](https://www.python.org/downloads/)
|
|
15
|
+
[](https://pypi.org/project/dev-cli)
|
|
16
|
+
[](https://opensource.org/licenses/MIT)
|
|
17
|
+
|
|
18
|
+
**Development Engine Vector** (`dev`) is the developer workflow coordination CLI for goCosmix systems. It provides a consistent, scriptable interface for preflight checks, version management, changelog automation, release orchestration, and git/GitHub operations — usable across every system in the federation.
|
|
19
|
+
|
|
20
|
+
`dev` is designed to be pointed at any goCosmix project directory and immediately useful: it reads project config, validates state, manages versions, and drives releases — without knowing anything specific about what the project does.
|
|
21
|
+
|
|
22
|
+
## ✨ Key Capabilities
|
|
23
|
+
|
|
24
|
+
- **Preflight checks**: version file, changelog entry, git state, dirty tree, sensitive files, pyproject sync
|
|
25
|
+
- **CDA-aware preflight**: extended checks for vscode-ark-specific pipeline and daemon health
|
|
26
|
+
- **Version management**: read, bump (major/minor/patch), sync to `pyproject.toml` and all tracked files
|
|
27
|
+
- **Changelog automation**: structured CHANGELOG management with version section creation and entry validation
|
|
28
|
+
- **Release orchestration**: full release workflow — preflight → version sync → build → git tag → publish
|
|
29
|
+
- **Project bootstrap**: install editable package, requirements, and dev dependencies in one command
|
|
30
|
+
- **Git/GitHub ops**: ensure remotes, create GitHub repos via API, push branches
|
|
31
|
+
- **Self-check**: engine health validation — install path, DB state, tool dependencies, version consistency
|
|
32
|
+
- **Config-driven**: per-project `.dev-cli.toml` for default bump level, skip flags, dry-run mode
|
|
33
|
+
|
|
34
|
+
## 📋 Table of Contents
|
|
35
|
+
|
|
36
|
+
- [Installation](#installation)
|
|
37
|
+
- [Quick Start](#quick-start)
|
|
38
|
+
- [CLI Reference](#cli-reference)
|
|
39
|
+
- [Configuration](#configuration)
|
|
40
|
+
- [Architecture](#architecture)
|
|
41
|
+
- [Development](#development)
|
|
42
|
+
- [Contributing](#contributing)
|
|
43
|
+
- [License](#license)
|
|
44
|
+
|
|
45
|
+
## 🚀 Installation
|
|
46
|
+
|
|
47
|
+
### Prerequisites
|
|
48
|
+
|
|
49
|
+
- Python 3.9+
|
|
50
|
+
|
|
51
|
+
### Install from PyPI
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pip install dev-cli
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
> **macOS / system Python note**: pip installs the `dev` binary to `~/Library/Python/3.x/bin/` which may not be on `PATH` by default.
|
|
58
|
+
>
|
|
59
|
+
> ```bash
|
|
60
|
+
> export PATH="$HOME/Library/Python/3.9/bin:$PATH"
|
|
61
|
+
> ```
|
|
62
|
+
>
|
|
63
|
+
> Add this line to `~/.zprofile` for persistence.
|
|
64
|
+
|
|
65
|
+
### Install from source
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
git clone https://github.com/goCosmix/dev.git
|
|
69
|
+
cd dev/source
|
|
70
|
+
pip install -e .
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Install development dependencies
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pip install -e ".[dev]"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## ⚡ Quick Start
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
pip install dev-cli
|
|
83
|
+
export PATH="$HOME/Library/Python/3.9/bin:$PATH"
|
|
84
|
+
|
|
85
|
+
# Point at any goCosmix project
|
|
86
|
+
dev pf --project /Volumes/intel/systems/cda/source # preflight check
|
|
87
|
+
dev version show --project /Volumes/intel/systems/cda/source
|
|
88
|
+
dev release --project /Volumes/intel/systems/cda/source --dry-run
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## 🔧 CLI Reference
|
|
92
|
+
|
|
93
|
+
### `dev pf` / `dev preflight`
|
|
94
|
+
|
|
95
|
+
Run pre-release preflight checks for a project.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
dev pf --project <path> # standard checks
|
|
99
|
+
dev pf --project <path> --full # full check set (includes CDA-specific)
|
|
100
|
+
dev pf --project <path> --report report.json
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Checks run: version file, changelog entry, git state (clean tree, committed), sensitive file exposure, pyproject.toml version sync.
|
|
104
|
+
|
|
105
|
+
### `dev version`
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
dev version show --project <path> # print current version
|
|
109
|
+
dev version bump --project <path> --level patch # bump major/minor/patch
|
|
110
|
+
dev version sync --project <path> # sync version → pyproject.toml
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### `dev release`
|
|
114
|
+
|
|
115
|
+
Full release workflow: preflight → version bump → sync → build → git tag → publish.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
dev release --project <path>
|
|
119
|
+
dev release --project <path> --bump minor
|
|
120
|
+
dev release --project <path> --version 2.1.0
|
|
121
|
+
dev release --project <path> --skip-publish # build + tag, don't push to PyPI
|
|
122
|
+
dev release --project <path> --dry-run # simulate, no writes
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### `dev build`
|
|
126
|
+
|
|
127
|
+
Build source and wheel distributions.
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
dev build --project <path>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### `dev sync`
|
|
134
|
+
|
|
135
|
+
Bootstrap or re-sync project dependencies.
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
dev sync --project <path>
|
|
139
|
+
dev sync --project <path> --install-dev # also install dev dependencies
|
|
140
|
+
dev sync --project <path> --no-install-editable # skip editable install
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### `dev check`
|
|
144
|
+
|
|
145
|
+
Project health checks: compile validation, lint, optional pytest.
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
dev check --project <path>
|
|
149
|
+
dev check --project <path> --tests # include pytest
|
|
150
|
+
dev check --project <path> --lint # include flake8
|
|
151
|
+
dev check --project <path> --compile # Python compile check
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### `dev selfcheck`
|
|
155
|
+
|
|
156
|
+
Engine self-diagnostics — validates the `dev` installation itself.
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
dev selfcheck
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Checks: version consistency, install path, DB state, required tools on PATH, Python dependencies.
|
|
163
|
+
|
|
164
|
+
### `dev config`
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
dev config show --project <path> # display active config and resolved settings
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## ⚙️ Configuration
|
|
171
|
+
|
|
172
|
+
Add a `.dev-cli.toml` or `dev-cli.toml` at any project root:
|
|
173
|
+
|
|
174
|
+
```toml
|
|
175
|
+
[release]
|
|
176
|
+
default_bump = "minor"
|
|
177
|
+
skip_build = false
|
|
178
|
+
skip_publish = false
|
|
179
|
+
dry_run = false
|
|
180
|
+
|
|
181
|
+
[bootstrap]
|
|
182
|
+
install_editable = true
|
|
183
|
+
install_dependencies = true
|
|
184
|
+
install_dev_dependencies = false
|
|
185
|
+
|
|
186
|
+
[check]
|
|
187
|
+
compile = true
|
|
188
|
+
tests = false
|
|
189
|
+
lint = false
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Override the config file path at runtime:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
dev --config ./custom.dev-cli.toml release --project /Volumes/intel/systems/cda/source
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## 🏗 Architecture
|
|
199
|
+
|
|
200
|
+
`dev` is organized into four layers:
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
dev/
|
|
204
|
+
├── kernel/ — runtime foundation (paths, DB, config, self-check)
|
|
205
|
+
├── workflow/ — business logic (versioning, changelog, preflight, release)
|
|
206
|
+
├── vcs/ — version control ops (git, GitHub API)
|
|
207
|
+
└── cli/ — thin click wrappers
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
See [docs/architecture.md](docs/architecture.md) for the full design.
|
|
211
|
+
|
|
212
|
+
## 🛠 Development
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
cd /Volumes/intel/systems/dev/source
|
|
216
|
+
pip install -e .
|
|
217
|
+
export PATH="$HOME/Library/Python/3.9/bin:$PATH"
|
|
218
|
+
|
|
219
|
+
# Run checks
|
|
220
|
+
python3 -m flake8 dev/
|
|
221
|
+
python3 -m mypy dev/
|
|
222
|
+
python3 -m pytest tests/ -q
|
|
223
|
+
|
|
224
|
+
# Or via the control plane
|
|
225
|
+
python3 ../control/scripts/vet.py
|
|
226
|
+
python3 ../control/cli.py health
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Control plane
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
python3 control/cli.py --help
|
|
233
|
+
|
|
234
|
+
dev-control status # version, paths, DB state
|
|
235
|
+
dev-control vet # run lint + typecheck + tests, write history to DB
|
|
236
|
+
dev-control health # show vet run history
|
|
237
|
+
dev-control health --checks # list defined check definitions
|
|
238
|
+
dev-control push # build + publish to PyPI
|
|
239
|
+
dev-control seed # re-seed control.db
|
|
240
|
+
dev-control selfcheck # engine self-diagnostics
|
|
241
|
+
dev-control runs # show run history from dev.db
|
|
242
|
+
dev-control projects # show registered projects
|
|
243
|
+
dev-control manifest # query file manifest from control.db
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## 🤝 Contributing
|
|
247
|
+
|
|
248
|
+
See [contributing.md](contributing.md).
|
|
249
|
+
|
|
250
|
+
## 📄 License
|
|
251
|
+
|
|
252
|
+
MIT — see [license](license).
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.3.0] - 2026-05-12
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Embedded web UI** — full WSGI dashboard on port 9001 (`dev ui start/stop/status/restart`)
|
|
12
|
+
- Pages: dashboard, runs, health, checks, manifest, identity, events, query
|
|
13
|
+
- Sidebar navigation with indigo accent theme; run detail drawer with 3 tabs (Overview, Output, Raw)
|
|
14
|
+
- Pure Python — zero npm, zero build step; CSS + JS bundled as Python string constants
|
|
15
|
+
- **PMF kernel** (`dev/kernel/pmf_kernel.py`) — embedded process manager for background services
|
|
16
|
+
- `PMFKernel` class: start/stop/restart/status/tail_log with PID file tracking
|
|
17
|
+
- launchd integration: `install_launchd()` / `uninstall_launchd()` write `com.gocosmix.dev.plist` to `~/Library/LaunchAgents/`
|
|
18
|
+
- `wait_for_port_and_open_browser()` — polls server before opening browser
|
|
19
|
+
- **`dev pmf` command group** — `services`, `status`, `start`, `stop`, `restart`, `logs`, `up`, `install`, `uninstall`
|
|
20
|
+
- **`dev setup`** — full onboarding: init dirs → pmf install → ui up → open browser
|
|
21
|
+
- **Self-provisioning** — `ensure_dirs()` fires on any real CLI command; no manual dir creation needed
|
|
22
|
+
- **`tools/dev` home** — DEV_HOME moved to `~/Library/goCosmix/tools/dev` (tools tier, not apps)
|
|
23
|
+
- **New runtime paths** in `paths.py`: `RUN_DIR`, `PMF_DIR`, `PMF_LOG_DIR`, `RUNTIME_FILE`, `UI_PID_FILE`, `DEFAULT_PORT`
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- Port changed from 10002 → **9001** (tools namespace; 9000 reserved for future tool orchestrator)
|
|
27
|
+
- `--version` now reads from package metadata dynamically
|
|
28
|
+
- `.flake8`: added `per-file-ignores` to allow long lines in `dev/ui/templates.py`
|
|
29
|
+
|
|
30
|
+
## [0.2.1] - 2026-05-11
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
- **`check_sensitive_files`** — now uses `git check-ignore` to verify `.env` is gitignored rather than failing on existence alone; eliminates false-positive preflight failures on projects that correctly ignore `.env`
|
|
34
|
+
|
|
35
|
+
## [0.2.0] - 2026-05-11
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- **`create_github_repo()`** — GitHub API repo creation via personal access token loaded from `audit-engine/.env`
|
|
39
|
+
- **`GitOps.ensure_remote()`** — creates GitHub repo and adds `origin` remote if not already configured
|
|
40
|
+
- **`GitOps.push_main()`** — `set_upstream` flag enables `-u origin main` on first push
|
|
41
|
+
- **`_load_github_token()` / `_github_api()`** — shared GitHub API primitives with token-from-env loading
|
|
42
|
+
- **Updated `push_repos.py`** — full 10-repo list with auto-create-remote logic and CLI arg filtering
|
|
43
|
+
|
|
44
|
+
## [0.1.0] - 2026-05-10
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
- Initial release of the Development Engine Vector (`dev-cli`)
|
|
48
|
+
- **4-layer engine architecture**: `kernel/` (paths, DB, config, selfcheck) + `workflow/` (versioning, changelog, preflight, release) + `vcs/` (git, github) + `cli/` (click interface)
|
|
49
|
+
- **`dev pf`** / **`dev preflight`** — pre-release preflight checks: version file, changelog entry, git state, sensitive file exposure, pyproject.toml version sync
|
|
50
|
+
- **`dev version show/bump/sync`** — version management with sync to `pyproject.toml` and tracked files
|
|
51
|
+
- **`dev release`** — full release orchestration: preflight → version sync → build → tag → publish; supports `--bump`, `--version`, `--skip-build`, `--skip-publish`, `--dry-run`
|
|
52
|
+
- **`dev build`** — source and wheel distribution build via `python -m build`
|
|
53
|
+
- **`dev sync`** — project bootstrap: editable install, requirements, dev dependencies
|
|
54
|
+
- **`dev check`** — project health: compile validation, optional lint and pytest
|
|
55
|
+
- **`dev selfcheck`** — engine self-diagnostics: version, install path, DB state, tool dependencies
|
|
56
|
+
- **`dev config show`** — display active config and resolved settings
|
|
57
|
+
- **`CdaPreflightModule`** — extended preflight checks for vscode-ark: pipeline stage validation, watcher state, daemon health, queue depth
|
|
58
|
+
- **`DevConfig`** — TOML-based per-project config (`.dev-cli.toml` / `dev-cli.toml`); falls back gracefully if absent
|
|
59
|
+
- **`VersionManager`** — reads/writes `version` file; bumps semver; syncs to `pyproject.toml`
|
|
60
|
+
- **`ChangelogManager`** — reads, adds version sections, validates changelog entries
|
|
61
|
+
- **`ReleaseOrchestrator`** — coordinates all release steps; records runs to `dev.db`
|
|
62
|
+
- **`GitOps`** — git status, dirty check, tag, push, remote management
|
|
63
|
+
- **`kernel.db`** — WAL-mode SQLite runtime DB: `runs` and `projects` tables
|
|
64
|
+
- **`kernel.paths`** — `DEV_HOME` = `~/Library/goCosmix/apps/dev`; canonical path constants
|
|
65
|
+
- **3-layer repo layout**: `source/` (tracked code) + `local/` (runtime state) + `control/` (management artifacts)
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Contributing to Development Engine Vector
|
|
2
|
+
|
|
3
|
+
We welcome contributions. This document provides guidelines for working on `dev-cli`.
|
|
4
|
+
|
|
5
|
+
## Code of Conduct
|
|
6
|
+
|
|
7
|
+
- Be respectful and constructive
|
|
8
|
+
- Focus on ideas, not personal criticism
|
|
9
|
+
- Support others in the community
|
|
10
|
+
|
|
11
|
+
## Getting Started
|
|
12
|
+
|
|
13
|
+
### Clone and setup
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
git clone https://github.com/goCosmix/dev.git
|
|
17
|
+
cd dev/source
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Setup development environment
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pip install -e ".[dev]"
|
|
24
|
+
export PATH="$HOME/Library/Python/3.9/bin:$PATH"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Create a feature branch
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
git checkout -b feature/your-feature-name
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Development Workflow
|
|
34
|
+
|
|
35
|
+
### Making changes
|
|
36
|
+
|
|
37
|
+
1. Make changes in your feature branch
|
|
38
|
+
2. Add or update tests for new functionality
|
|
39
|
+
3. Ensure all checks pass: `python3 ../control/scripts/vet.py`
|
|
40
|
+
4. Run lint: `python3 -m flake8 dev/`
|
|
41
|
+
5. Run type check: `python3 -m mypy dev/`
|
|
42
|
+
|
|
43
|
+
### Writing tests
|
|
44
|
+
|
|
45
|
+
- Place tests in `tests/` directory
|
|
46
|
+
- Use descriptive names: `test_<feature>_<scenario>()`
|
|
47
|
+
- Mock external dependencies (subprocess, filesystem)
|
|
48
|
+
|
|
49
|
+
Example:
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
def test_version_bump_increments_patch():
|
|
53
|
+
"""Test that patch bump increments the third semver segment."""
|
|
54
|
+
vm = VersionManager(tmp_project_dir)
|
|
55
|
+
vm.write("1.2.3")
|
|
56
|
+
new_version = vm.bump("patch")
|
|
57
|
+
assert new_version == "1.2.4"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Code style
|
|
61
|
+
|
|
62
|
+
- Follow PEP 8; max line length 150 (see `.flake8`)
|
|
63
|
+
- Use `Optional[X]` from `typing` — project targets Python 3.9
|
|
64
|
+
- Use meaningful variable names
|
|
65
|
+
- No docstrings required on private helpers
|
|
66
|
+
|
|
67
|
+
## Commit guidelines
|
|
68
|
+
|
|
69
|
+
- Use present tense: "Add feature" not "Added feature"
|
|
70
|
+
- Keep commits focused and atomic
|
|
71
|
+
- Reference issues when relevant: "Fix #42"
|
|
72
|
+
|
|
73
|
+
## Pull request process
|
|
74
|
+
|
|
75
|
+
1. **Update CHANGELOG** — add entry under the new version section
|
|
76
|
+
2. **Add tests** — new functionality needs test coverage
|
|
77
|
+
3. **Run vet** — `python3 control/scripts/vet.py` must exit 0
|
|
78
|
+
4. **Create PR** — clear description of what changed and why
|
|
79
|
+
5. **Respond to reviews** — address feedback promptly
|
|
80
|
+
|
|
81
|
+
## Project structure
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
dev/
|
|
85
|
+
├── .gitignore
|
|
86
|
+
├── source/ # all tracked code lives here
|
|
87
|
+
│ ├── dev/ # Python package
|
|
88
|
+
│ │ ├── kernel/ # runtime foundation
|
|
89
|
+
│ │ │ ├── paths.py # DEV_HOME, path constants
|
|
90
|
+
│ │ │ ├── db.py # WAL SQLite — runs + projects
|
|
91
|
+
│ │ │ ├── config.py # DevConfig — reads .dev-cli.toml
|
|
92
|
+
│ │ │ └── selfcheck.py # engine self-diagnostics
|
|
93
|
+
│ │ ├── workflow/ # business logic
|
|
94
|
+
│ │ │ ├── versioning.py
|
|
95
|
+
│ │ │ ├── changelog.py
|
|
96
|
+
│ │ │ ├── preflight.py
|
|
97
|
+
│ │ │ ├── cda.py # CDA-specific preflight module
|
|
98
|
+
│ │ │ └── release.py
|
|
99
|
+
│ │ ├── vcs/ # version control
|
|
100
|
+
│ │ │ ├── git.py
|
|
101
|
+
│ │ │ └── github.py
|
|
102
|
+
│ │ └── cli/
|
|
103
|
+
│ │ └── cli.py # click entry point
|
|
104
|
+
│ ├── tests/
|
|
105
|
+
│ ├── docs/
|
|
106
|
+
│ ├── pyproject.toml
|
|
107
|
+
│ ├── changelog.md
|
|
108
|
+
│ ├── readme.md
|
|
109
|
+
│ └── version
|
|
110
|
+
├── local/ # runtime state (gitignored)
|
|
111
|
+
│ ├── data/ # dev.db lives at ~/Library/goCosmix/apps/dev/
|
|
112
|
+
│ └── logs/
|
|
113
|
+
└── control/ # management artifacts (gitignored)
|
|
114
|
+
├── cli.py # dev-control CLI
|
|
115
|
+
├── ops.py # reusable status helpers
|
|
116
|
+
├── data/ # control.db
|
|
117
|
+
├── scripts/ # seed.py, vet.py, push.py
|
|
118
|
+
├── audit/ # audit engine output JSONs
|
|
119
|
+
└── docs/ # control system documentation
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Key components
|
|
123
|
+
|
|
124
|
+
### CLI (`dev/cli/cli.py`)
|
|
125
|
+
Thin click wrappers. All logic delegates to `workflow/` and `vcs/` modules.
|
|
126
|
+
|
|
127
|
+
### Kernel (`dev/kernel/`)
|
|
128
|
+
- `paths.py` — canonical path constants; `DEV_HOME = ~/Library/goCosmix/apps/dev`
|
|
129
|
+
- `db.py` — WAL SQLite; `record_run`, `finish_run`, `upsert_project`, `get_recent_runs`
|
|
130
|
+
- `config.py` — loads `.dev-cli.toml` / `dev-cli.toml` from project root
|
|
131
|
+
- `selfcheck.py` — five checks: version, install path, DB, tools, dependencies
|
|
132
|
+
|
|
133
|
+
### Workflow (`dev/workflow/`)
|
|
134
|
+
- `versioning.py` — `VersionManager`: read, write, bump semver, sync to files
|
|
135
|
+
- `changelog.py` — `ChangelogManager`: add version section, verify entry exists
|
|
136
|
+
- `preflight.py` — `PreflightChecks`: runs all checks, generates optional JSON report
|
|
137
|
+
- `cda.py` — `CdaPreflightModule`: CDA pipeline and daemon-specific checks
|
|
138
|
+
- `release.py` — `ReleaseOrchestrator`: full release workflow, records runs to DB
|
|
139
|
+
|
|
140
|
+
### VCS (`dev/vcs/`)
|
|
141
|
+
- `git.py` — `GitOps`: status, dirty check, commit, tag, push, ensure remote
|
|
142
|
+
- `github.py` — token-based GitHub API: create repo, manage remotes
|
|
143
|
+
|
|
144
|
+
## Testing strategy
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# Run all tests
|
|
148
|
+
python3 -m pytest tests/ -q
|
|
149
|
+
|
|
150
|
+
# Run with coverage
|
|
151
|
+
python3 -m pytest tests/ --cov=dev
|
|
152
|
+
|
|
153
|
+
# Run specific test
|
|
154
|
+
python3 -m pytest tests/test_dev_cli.py::test_version_bump -v
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Release process
|
|
158
|
+
|
|
159
|
+
1. Set version: `dev version bump --level patch --project .`
|
|
160
|
+
2. Update `changelog.md` with release notes
|
|
161
|
+
3. Run vet: `python3 control/scripts/vet.py`
|
|
162
|
+
4. Release: `dev release --project . --dry-run` → then without `--dry-run`
|
|
163
|
+
5. Or via control plane: `python3 control/scripts/push.py`
|
|
164
|
+
|
|
165
|
+
## Additional resources
|
|
166
|
+
|
|
167
|
+
- [Python Style Guide (PEP 8)](https://www.python.org/dev/peps/pep-0008/)
|
|
168
|
+
- [Click Documentation](https://click.palletsprojects.com/)
|
|
169
|
+
- [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
|
170
|
+
- [Semantic Versioning](https://semver.org/)
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
Thank you for contributing to the Development Engine Vector.
|
|
File without changes
|