Skip to content

Commit bb6f22e

Browse files
authored
Merge pull request #1 from buildrr89/codex/slice-32-report-diff
Slices #32-#36: report diff, SVG badges, axe-core, PyPI packaging
2 parents d565aab + ccfd9bd commit bb6f22e

193 files changed

Lines changed: 11774 additions & 11507 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cursorrules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# RADE Cursor Rules
2-
© 2026 RADE Project. All Rights Reserved.
2+
Copyright (c) 2026 Buildrr89. Licensed under AGPL-3.0-only.
33

44
- Read truth in this order: `README.md`, `PRD.md`, `docs/TRUTH_HIERARCHY.md`, `docs/APP_SCOPE.md`, `docs/HARD_RISKS.md`, `docs/ARCHITECTURE.md`, `docs/BUILD_SHEET.md`, `AGENTS.md`, `.cursor/rules.md`.
55
- Prioritize semantic accessibility nodes over screen coordinates.

.github/FUNDING.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
github: buildrr89

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
11
blank_issues_enabled: false
2+
contact_links:
3+
- name: Security vulnerability report
4+
url: https://github.com/buildrr89/rade-engine/security/advisories/new
5+
about: Report security issues privately (do not open a public issue).

.github/workflows/codeql.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: CodeQL
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
branches:
9+
- main
10+
schedule:
11+
- cron: "0 6 * * 1"
12+
13+
permissions:
14+
actions: read
15+
contents: read
16+
security-events: write
17+
18+
concurrency:
19+
group: codeql-${{ github.workflow }}-${{ github.ref }}
20+
cancel-in-progress: true
21+
22+
jobs:
23+
analyze:
24+
name: Analyze (${{ matrix.language }})
25+
runs-on: ubuntu-latest
26+
timeout-minutes: 45
27+
strategy:
28+
fail-fast: false
29+
matrix:
30+
language: [python, javascript]
31+
32+
steps:
33+
- name: Checkout
34+
uses: actions/checkout@v4
35+
36+
- name: Initialize CodeQL
37+
uses: github/codeql-action/init@v3
38+
with:
39+
languages: ${{ matrix.language }}
40+
41+
- name: Autobuild
42+
uses: github/codeql-action/autobuild@v3
43+
44+
- name: Perform CodeQL Analysis
45+
uses: github/codeql-action/analyze@v3

.github/workflows/deploy-pages.yml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: Deploy example report to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- "examples/**"
8+
- "src/**"
9+
- "pyproject.toml"
10+
- ".github/workflows/deploy-pages.yml"
11+
workflow_dispatch: {}
12+
13+
permissions:
14+
contents: read
15+
pages: write
16+
id-token: write
17+
18+
concurrency:
19+
group: pages-${{ github.ref }}
20+
cancel-in-progress: true
21+
22+
jobs:
23+
build:
24+
runs-on: ubuntu-latest
25+
timeout-minutes: 10
26+
steps:
27+
- uses: actions/checkout@v4
28+
29+
- name: Install uv
30+
uses: astral-sh/setup-uv@v5
31+
with:
32+
enable-cache: true
33+
34+
- name: Set up Python
35+
run: uv python install 3.12
36+
37+
- name: Build site directory
38+
run: |
39+
set -euxo pipefail
40+
mkdir -p public
41+
uv run --python 3.12 python -m src.core.cli analyze \
42+
--input examples/python_org_homepage.json \
43+
--app-id org.python.www \
44+
--html-output public/index.html \
45+
--json-output public/report.json \
46+
--md-output public/report.md
47+
uv run --python 3.12 python -m src.core.cli badge \
48+
--report public/report.json \
49+
--metric reusability \
50+
--svg-output public/reusability.svg \
51+
--endpoint-output public/reusability.shields.json
52+
uv run --python 3.12 python -m src.core.cli badge \
53+
--report public/report.json \
54+
--metric accessibility_risk \
55+
--svg-output public/accessibility_risk.svg \
56+
--endpoint-output public/accessibility_risk.shields.json
57+
58+
- uses: actions/upload-pages-artifact@v3
59+
with:
60+
path: public
61+
62+
deploy:
63+
needs: build
64+
runs-on: ubuntu-latest
65+
timeout-minutes: 10
66+
environment:
67+
name: github-pages
68+
url: ${{ steps.deployment.outputs.page_url }}
69+
steps:
70+
- name: Deploy to GitHub Pages
71+
id: deployment
72+
uses: actions/deploy-pages@v4
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: PR Score Diff
2+
3+
on:
4+
pull_request:
5+
types: [opened, reopened, synchronize]
6+
7+
permissions:
8+
contents: read
9+
pull-requests: write
10+
11+
jobs:
12+
rade-pr-score-diff:
13+
runs-on: ubuntu-latest
14+
env:
15+
PR_NUMBER: ${{ github.event.pull_request.number }}
16+
BASE_SHA: ${{ github.event.pull_request.base.sha }}
17+
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
18+
steps:
19+
- name: Checkout
20+
uses: actions/checkout@v4
21+
with:
22+
fetch-depth: 0
23+
24+
- name: RADE score diff comment
25+
id: rade_score_diff
26+
uses: ./
27+
with:
28+
github-token: ${{ secrets.GITHUB_TOKEN }}
29+
pr-number: ${{ env.PR_NUMBER }}
30+
base-sha: ${{ env.BASE_SHA }}
31+
head-sha: ${{ env.HEAD_SHA }}
32+
input-path: examples/sample_ios_output.json
33+
app-id: com.example.legacyapp
34+
35+
- name: Publish RADE score summary
36+
shell: bash
37+
run: |
38+
{
39+
echo "## RADE score diff"
40+
echo ""
41+
echo "- Gate status: \`${{ steps.rade_score_diff.outputs.gate-status }}\`"
42+
echo "- Should fail: \`${{ steps.rade_score_diff.outputs.should-fail }}\`"
43+
echo "- Reusability delta: \`${{ steps.rade_score_diff.outputs.reusability-delta }}\`"
44+
echo "- Accessibility risk delta: \`${{ steps.rade_score_diff.outputs.accessibility-risk-delta }}\`"
45+
echo "- Regression reason: \`${{ steps.rade_score_diff.outputs.regression-reason }}\`"
46+
echo "- Regression detected: \`${{ steps.rade_score_diff.outputs.regression-detected }}\`"
47+
} >> "$GITHUB_STEP_SUMMARY"

.github/workflows/proof.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ jobs:
5959
--input examples/sample_ios_output.json \
6060
--app-id com.example.legacyapp \
6161
--json-output output/modernization_report.json \
62-
--md-output output/modernization_report.md | tee proof-output.txt
62+
--md-output output/modernization_report.md \
63+
--html-output output/modernization_report.html | tee proof-output.txt
6364
6465
- name: Publish proof summary
6566
run: |

.github/workflows/publish-pypi.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Publish rade-engine to PyPI
2+
3+
on:
4+
release:
5+
types: [published]
6+
workflow_dispatch:
7+
inputs:
8+
dry_run:
9+
description: "Build only (do not publish)"
10+
required: false
11+
default: "false"
12+
13+
permissions:
14+
contents: read
15+
id-token: write
16+
17+
concurrency:
18+
group: publish-pypi-${{ github.ref }}
19+
cancel-in-progress: false
20+
21+
jobs:
22+
build:
23+
runs-on: ubuntu-latest
24+
timeout-minutes: 10
25+
steps:
26+
- uses: actions/checkout@v4
27+
with:
28+
fetch-depth: 0
29+
30+
- name: Install uv
31+
uses: astral-sh/setup-uv@v5
32+
with:
33+
enable-cache: true
34+
35+
- name: Set up Python
36+
run: uv python install 3.12
37+
38+
- name: Run tests
39+
run: uv run --python 3.12 pytest -q
40+
41+
- name: Build distributions
42+
run: uv build
43+
44+
- name: Verify build metadata
45+
run: uv run --python 3.12 --with twine twine check dist/*
46+
47+
- uses: actions/upload-artifact@v4
48+
with:
49+
name: rade-engine-dist
50+
path: dist/
51+
52+
publish:
53+
needs: build
54+
runs-on: ubuntu-latest
55+
timeout-minutes: 10
56+
if: github.event_name == 'release' || inputs.dry_run != 'true'
57+
environment:
58+
name: pypi
59+
url: https://pypi.org/project/rade-engine/
60+
steps:
61+
- uses: actions/download-artifact@v4
62+
with:
63+
name: rade-engine-dist
64+
path: dist/
65+
66+
- name: Publish to PyPI via OIDC
67+
uses: pypa/gh-action-pypi-publish@release/v1
68+
with:
69+
packages-dir: dist/
70+
skip-existing: true

.gitignore

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,24 @@ __pycache__/
66
.ruff_cache/
77
.coverage
88
.DS_Store
9+
.env
10+
.env.*
11+
!.env.example
12+
.claude/
13+
.cursor/
914
node_modules/
1015
web/.next/
1116
web/dist/
1217
.uv-cache/
18+
logs/
19+
rade-repo/
20+
tmp_*/
21+
CONTINUATION_PROMPT.md
1322
output/*
1423
!output/.gitkeep
24+
*.figma_bridge_v0_manifest.json
25+
.private/
26+
dist/
27+
build/
28+
*.egg-info/
29+
public/

CODE_OF_CONDUCT.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Code of Conduct
2+
3+
## Our standard
4+
5+
This project expects respectful, professional, and evidence-based collaboration.
6+
7+
## Expected behavior
8+
9+
- Be respectful in language and feedback.
10+
- Focus on technical facts and reproducible evidence.
11+
- Assume good intent and ask clarifying questions before escalating.
12+
- Keep discussions in scope of the repository and its proof rules.
13+
14+
## Unacceptable behavior
15+
16+
- Harassment, abuse, or discriminatory language.
17+
- Personal attacks or intimidation.
18+
- Sharing private or sensitive data without consent.
19+
- Deliberate disruption of collaboration workflows.
20+
21+
## Reporting
22+
23+
For conduct concerns, open a private GitHub communication to the maintainers.
24+
For security issues, use [SECURITY.md](SECURITY.md) instead of public issues.
25+
26+
## Enforcement
27+
28+
Maintainers may remove comments, close discussions, or block contributors for violations.

0 commit comments

Comments
 (0)