Skip to content

Commit 524bd7a

Browse files
author
Senior Dev Rotation
committed
chore(devforge-cli): add misc, license, docs, CI workflow, build config
Automated batch commit. Files changed: M .gitignore M LICENSE M README.md M pyproject.toml ?? .github/workflows/release-audit.yml ?? Makefile ?? _cowork_ops/
1 parent acd6bb2 commit 524bd7a

7 files changed

Lines changed: 195 additions & 94 deletions

File tree

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: release-audit
2+
3+
on:
4+
pull_request:
5+
branches: [main, master]
6+
push:
7+
branches: [main, master]
8+
workflow_dispatch:
9+
10+
jobs:
11+
audit:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 (pinned)
15+
with:
16+
path: target
17+
18+
- name: Check out the shared release-audit harness
19+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 (pinned)
20+
with:
21+
repository: Coding-Dev-Tools/release-audit
22+
path: harness
23+
# Pin to a tag once a stable release is published; main is fine
24+
# for now since the harness is small and self-contained.
25+
ref: main
26+
27+
- name: Set up Python
28+
uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 (pinned)
29+
with:
30+
python-version: "3.11"
31+
32+
- name: Run the 8-angle release audit
33+
working-directory: harness
34+
env:
35+
GITHUB_WORKSPACE: ${{ github.workspace }}
36+
run: |
37+
python audit.py "$GITHUB_WORKSPACE/target" --out-dir scorecard
38+
python3 - <<'PY'
39+
import json, os, pathlib
40+
repo = pathlib.Path(os.environ["GITHUB_WORKSPACE"], "target").name
41+
data = json.loads(pathlib.Path("scorecard", f"{repo}.json").read_text())
42+
print("## Release Audit (8 angles)")
43+
print()
44+
print(f"**Overall grade: {data['overall_grade']}** ({data['angles_passing']}/{data['angles_total']} angles passing)")
45+
print()
46+
print("| Angle | Grade |")
47+
print("|-------|-------|")
48+
for a in data["angles"]:
49+
print(f"| {a['angle']} | {a['grade']} |")
50+
PY
51+
52+
- name: Fail on blockers
53+
working-directory: harness
54+
env:
55+
GITHUB_WORKSPACE: ${{ github.workspace }}
56+
run: |
57+
python3 - <<'PY'
58+
import json, os, pathlib, sys
59+
repo = pathlib.Path(os.environ["GITHUB_WORKSPACE"], "target").name
60+
data = json.loads(pathlib.Path("scorecard", f"{repo}.json").read_text())
61+
if data["blockers"] > 0:
62+
print(f"::error::{data['blockers']} release-blocker angle(s) — see audit output above")
63+
sys.exit(1)
64+
PY

.gitignore

Lines changed: 75 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,75 @@
1-
# Byte-compiled / optimized / compiled files
2-
__pycache__/
3-
*.py[cod]
4-
*$py.class
5-
6-
# C extensions
7-
*.so
8-
9-
# Distribution / packaging
10-
.Python
11-
build/
12-
develop-eggs/
13-
dist/
14-
downloads/
15-
eggs/
16-
.eggs/
17-
lib/
18-
lib64/
19-
parts/
20-
sdist/
21-
var/
22-
wheels/
23-
*.egg-info/
24-
*.egg
25-
26-
# PyInstaller
27-
*.manifest
28-
*.spec
29-
30-
# Installer logs
31-
pip-log.txt
32-
pip-delete-this-directory.txt
33-
34-
# Unit test / coverage
35-
htmlcov/
36-
.tox/
37-
.nox/
38-
.coverage
39-
.coverage.*
40-
.cache
41-
nosetests.xml
42-
coverage.xml
43-
*.cover
44-
*.py,cover
45-
.hypothesis/
46-
.pytest_cache/
47-
48-
# Translations
49-
*.mo
50-
*.pot
51-
52-
# Environments
53-
.env
54-
.venv
55-
env/
56-
venv/
57-
ENV/
58-
59-
# IDE
60-
.vscode/
61-
.idea/
62-
*.swp
63-
*.swo
64-
*~
65-
66-
# OS
67-
.DS_Store
68-
Thumbs.db
69-
70-
# Project specific
71-
research/
72-
fixtures/generated/
1+
# Byte-compiled / optimized / compiled files
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
6+
# C extensions
7+
*.so
8+
9+
# Distribution / packaging
10+
.Python
11+
build/
12+
develop-eggs/
13+
dist/
14+
downloads/
15+
eggs/
16+
.eggs/
17+
lib/
18+
lib64/
19+
parts/
20+
sdist/
21+
var/
22+
wheels/
23+
*.egg-info/
24+
*.egg
25+
26+
# PyInstaller
27+
*.manifest
28+
*.spec
29+
30+
# Installer logs
31+
pip-log.txt
32+
pip-delete-this-directory.txt
33+
34+
# Unit test / coverage
35+
htmlcov/
36+
.tox/
37+
.nox/
38+
.coverage
39+
.coverage.*
40+
.cache
41+
nosetests.xml
42+
coverage.xml
43+
*.cover
44+
*.py,cover
45+
.hypothesis/
46+
.pytest_cache/
47+
48+
# Translations
49+
*.mo
50+
*.pot
51+
52+
# Environments
53+
.env
54+
.venv
55+
env/
56+
venv/
57+
ENV/
58+
59+
# IDE
60+
.vscode/
61+
.idea/
62+
*.swp
63+
*.swo
64+
*~
65+
66+
# OS
67+
.DS_Store
68+
Thumbs.db
69+
70+
# Project specific
71+
research/
72+
fixtures/generated/
73+
74+
# Added by release-prep
75+
node_modules

LICENSE

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
MIT License
2-
3-
Copyright (c) 2026 Coding Dev Tools
4-
5-
Permission is hereby granted, free of charge, to any person obtaining a copy
6-
of this software and associated documentation files (the "Software"), to deal
7-
in the Software without restriction, including without limitation the rights
8-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9-
copies of the Software, and to permit persons to whom the Software is
10-
furnished to do so, subject to the following conditions:
11-
12-
The above copyright notice and this permission notice shall be included in all
13-
copies or substantial portions of the Software.
14-
15-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21-
SOFTWARE.
1+
MIT License
2+
3+
Copyright (c) 2026 DevForge
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

Makefile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Generated by Agent B — Lint & Type Scripts
2+
.PHONY: lint test format typecheck
3+
4+
lint:
5+
ruff check .
6+
7+
format:
8+
ruff format .
9+
10+
typecheck:
11+
echo "no type-checker"
12+
13+
test:
14+
pytest -q

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,9 @@ devforge deadcode scan src/
110110
## License
111111

112112
MIT — see [LICENSE](LICENSE) for details.
113+
114+
## Test
115+
116+
```bash
117+
pytest -q
118+
```

_cowork_ops/state.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"lock": {
3+
"note": "devforge-cli"
4+
},
5+
"openFindings": [
6+
{
7+
"id": "rotation-stale-fresh-ring",
8+
"ts": "2026-06-16T12:09:03.892192+00:00",
9+
"severity": "medium",
10+
"lane": "repo-improver",
11+
"summary": "Manifest pointer followed directly after last verified blocked slot; write path hit false-positive stale lock channel. No repo mutators re-run this tick."
12+
}
13+
]
14+
}

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ dev = ["pytest>=7.0.0"]
5454
[project.urls]
5555
Homepage = "https://github.com/Coding-Dev-Tools/devforge"
5656
Repository = "https://github.com/Coding-Dev-Tools/devforge"
57-
"Issue Tracker" = "https://github.com/Coding-Dev-Tools/devforge/issues"
57+
Issues = "https://github.com/Coding-Dev-Tools/devforge/issues"
5858

5959
[project.scripts]
6060
devforge = "devforge.cli:app"

0 commit comments

Comments
 (0)