Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
bf87867
Complete monorepo migration for Python and Go implementations
cprima Oct 11, 2025
010edfa
Refactor README and CONTRIBUTING for clear audience focus
cprima Oct 11, 2025
605ce0b
Add comprehensive CLI implementation instructions with Typer
cprima Oct 11, 2025
57d62ee
Add CLI interface to Python implementation
cprima Oct 11, 2025
a02571f
Add project-level parsing with auto-traversal from project.json entry…
cprima Oct 11, 2025
9f25b41
Refactor CLI to make project.json the default/primary input
cprima Oct 11, 2025
ce151b0
Add production-ready packaging infrastructure
cprima Oct 11, 2025
1823206
Add comprehensive redesign plan pre-refactoring
cprima Oct 11, 2025
3040bf0
Phase 0: Add DTO model definitions
cprima Oct 11, 2025
90ab326
Phase 0: Add JSON Schemas for workflow DTOs
cprima Oct 11, 2025
248b985
Phase 0: Complete architecture documentation
cprima Oct 11, 2025
da376ed
Phase 1: Implement stable ID generation with XML normalization
cprima Oct 11, 2025
3e2035f
Phase 1: Add Activity xml_span field and ordering utilities
cprima Oct 11, 2025
8b947a6
Phase 1: Integrate stable ID generation into XamlParser
cprima Oct 11, 2025
4440240
feat: implement Phase 2 control flow extraction
cprima Oct 11, 2025
2943d12
feat: implement Phase 3 DTO layer and normalization
cprima Oct 11, 2025
4fdf07d
feat: implement Phase 4 emitter architecture
cprima Oct 11, 2025
7198fef
feat: implement Phase 7 CLI integration
cprima Oct 11, 2025
704f29b
feat: Implement Phase 5 - Mermaid diagram emitter
cprima Oct 11, 2025
f2d528d
feat: Implement Phase 6 - Documentation emitter with Jinja2
cprima Oct 11, 2025
25f7b8b
feat: Implement project-first architecture with call graph traversal
cprima Oct 11, 2025
6e6ab5e
Fix Mermaid emitter: handle WorkflowMetadata as dataclass
cprima Oct 11, 2025
f50cf03
Add rpax-corpuses as test corpus submodule
cprima Oct 12, 2025
f4eda55
feat: Add corpus-based test infrastructure
cprima Oct 12, 2025
671d963
chore: Update corpus submodule and regenerate golden baselines
cprima Oct 12, 2025
69eb892
docs: Enhance CLAUDE.md with comprehensive development guidance
cprima Oct 12, 2025
38009f0
Make sorting opt-in: preserve source order by default
cprima Oct 12, 2025
74710c4
Fix mypy errors in ordering.py and parser.py
cprima Oct 12, 2025
e011f56
docs: Fix encoding issues in INSTRUCTIONS-nesting.md
cprima Oct 12, 2025
860e033
docs: Fix INSTRUCTIONS-nesting.md to show call graph traversal
cprima Oct 12, 2025
80dbd3a
fix: Complete mypy type annotation fixes across codebase
cprima Oct 12, 2025
0afbb3e
fix: Complete mypy type annotation fixes across codebase
cprima Oct 12, 2025
ee2c6da
feat: Add Graph module with NetworkX-compatible API
cprima Oct 12, 2025
6a487e3
feat: Add Analyzer and Views modules (Phases 2-3)
cprima Oct 12, 2025
ddc7bb1
feat: Add analyze_project function (Phase 4)
cprima Oct 12, 2025
4d934f2
feat: Add view configuration to EmitterConfig (Phase 5)
cprima Oct 12, 2025
cfd8f3e
feat: Add CLI view support (Phase 6)
cprima Oct 12, 2025
169a2f5
feat: Add integration tests for view-based analysis (Phase 7)
cprima Oct 12, 2025
e85dfc3
fix: Fix workflow annotation rendering in Mermaid emitter
cprima Oct 12, 2025
1433ced
refactor: Reorganize test suite into unit/integration/corpus structure
cprima Oct 12, 2025
8032590
feat: Add comprehensive JSON schemas and consolidate schema directory
cprima Oct 12, 2025
9914388
docs: Add comprehensive post-rewrite analysis and session documentation
cprima Oct 12, 2025
c7946d6
fix: Remove assembly references from dependencies output
cprima Oct 12, 2025
8e972ba
feat: Add project.json dependency extraction to workflow DTOs
cprima Oct 12, 2025
d7e5c76
fix: Resolve all 18 mypy type annotation errors
cprima Oct 12, 2025
4090165
Fix emitter and view test failures
cprima Oct 12, 2025
34df1c6
docs: Add comprehensive analysis of XAML metadata and activity namesp…
cprima Oct 12, 2025
13c0b78
Fix linter errors in conftest.py and models.py
cprima Oct 12, 2025
b437178
Add comprehensive tests for cli.py (0% → 76% coverage)
cprima Oct 12, 2025
ef39951
refactor: Remove spurious expression_language from workflow metadata
cprima Oct 12, 2025
613b5a6
feat: Add ancestry graph generation to devtest output
cprima Oct 12, 2025
0a1cfc6
feat: Add CC-BY provenance metadata to all outputs
cprima Oct 12, 2025
7a35f95
feat: Add depth context to InvokeWorkflowFile activities
cprima Oct 12, 2025
9c61a85
chore: Harmonize all schema versions to 0.4.0
cprima Oct 12, 2025
4b40a55
feat: Add author config and fix TODO items
cprima Oct 12, 2025
593b4d2
fix: Update activity type check to handle namespace prefix
cprima Oct 12, 2025
906118b
test: Add comprehensive XmlUtils test coverage
cprima Oct 12, 2025
04aea52
test: Add comprehensive TextUtils test coverage
cprima Oct 12, 2025
3065744
test: Add comprehensive ValidationUtils test coverage
cprima Oct 12, 2025
a3d2997
test: Add comprehensive DataUtils test coverage
cprima Oct 13, 2025
1db856f
test: Add comprehensive DebugUtils test coverage
cprima Oct 13, 2025
00fdd8d
test: Add comprehensive ActivityUtils test coverage
cprima Oct 13, 2025
3090cd1
refactor: Reorganize test suite and implement logging system
cprima Oct 13, 2025
b0ddee6
feat: Rename package to cpmf-xaml-parser and publish to TestPyPI
cprima Dec 4, 2025
c74eff4
refactor: reorganize package as cpmf-uips-xaml with layered architecture
cprima Feb 17, 2026
a2e3b12
feat: implement v2 record export system with schema contracts
cprima Feb 17, 2026
d260f29
docs: add record export implementation notes and status documents
cprima Feb 17, 2026
ce211ad
chore: normalize line endings, update docs, testdata, schemas/v1, config
cprima Feb 17, 2026
df0d045
fix: update annotations utility and extractors
cprima Feb 17, 2026
c484b7f
chore: add ADRs, plans, default config, schema README, and example co…
cprima Feb 17, 2026
bd1e314
chore: stop tracking test artifact json files
cprima Feb 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"permissions": {
"allow": [
"Bash(uv run pytest:*)"
],
"deny": [],
"ask": []
}
}
10 changes: 10 additions & 0 deletions .cpmf_uips_xaml.json.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"$schema": "https://rpax.io/schemas/xaml-parser-config.json",
"author": "Your Name",
"description": "Configuration file for xaml-parser CC-BY attribution",
"version": "1.0.0",
"settings": {
"default_profile": "mcp",
"sort_output": false
}
}
125 changes: 125 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
name: CI

on:
push:
branches: [main, implementation/*]
pull_request:
branches: [main]

jobs:
test:
name: Test Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"

- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}

- name: Install dependencies
working-directory: python
run: uv sync --all-extras

- name: Run tests with coverage
working-directory: python
run: |
uv run pytest tests/ \
--cov=cpmf_xaml_parser \
--cov-report=term-missing \
--cov-report=xml \
--cov-fail-under=90 \
-v

- name: Upload coverage to Codecov
if: matrix.python-version == '3.12'
uses: codecov/codecov-action@v4
with:
file: ./python/coverage.xml
fail_ci_if_error: false

lint:
name: Lint and Format Check
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"

- name: Set up Python
run: uv python install 3.12

- name: Install dependencies
working-directory: python
run: uv sync --all-extras

- name: Run ruff linting
working-directory: python
run: uv run ruff check cpmf_xaml_parser/ tests/

- name: Run ruff format check
working-directory: python
run: uv run ruff format --check cpmf_xaml_parser/ tests/

type-check:
name: Type Check
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"

- name: Set up Python
run: uv python install 3.12

- name: Install dependencies
working-directory: python
run: uv sync --all-extras

- name: Run mypy
working-directory: python
run: uv run mypy cpmf_xaml_parser/

build:
name: Build Distribution
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"

- name: Set up Python
run: uv python install 3.12

- name: Build package
working-directory: python
run: uv build

- name: Check distribution
working-directory: python
run: |
uv pip install twine
uv run twine check dist/*
71 changes: 71 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
.pytest_cache/
*.egg-info/
dist/
/build/
**/dist/build/
.venv/
venv/
env/
ENV/
*.egg
.coverage
htmlcov/
.tox/
.hypothesis/
.ruff_cache/
.mypy_cache/

# Go
*.exe
*.exe~
*.dll
*.so
*.dylib
*.test
*.out
go.work
vendor/

# IDE
.vscode/
.idea/
*.swp
*.swo
*~
.vs/

# OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Project specific
*.log
.env
.env.local
.secrets
.cpmf_uips_xaml.json

# Test artifacts
.test-artifacts/
*_TEST_RESULTS.md
*_analysis.json
analyze_*.py
process-analysis.json/
test-output-dto.json/
python/coverage.json
python/test_results.txt
python/workflows.json
python/InitAllSettings.json
test_minimal.json
test_output.json
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[submodule "test-corpus"]
path = test-corpus
url = https://github.com/rpapub/rpax-corpuses.git
branch = development
7 changes: 7 additions & 0 deletions .secrets.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
MYGET_FEED=cprima-forge
MYGET_PYPI_USERNAME=cprima
MYGET_PYPI_PASSWORD=myget-access-token
MYGET_NUGET_APIKEY=myget-nuget-api-key
MYGET_PYPI_UPLOAD=https://www.myget.org/F/cprima-forge/python/upload
MYGET_PYPI_INDEX=https://www.myget.org/F/cprima-forge/python/
MYGET_NUGET_PUSH=https://www.myget.org/F/cprima-forge/api/v2/package
Loading
Loading