# Developer Commit Guide

This guide explains exactly what to commit to source control for this repository, and what to keep out. It also includes a suggested commit message and safe commands to stage changes.

## Commit these files

### Core framework (source)
- `ecu_framework/config.py`
- `ecu_framework/lin/base.py`
- `ecu_framework/lin/mock.py`
- `ecu_framework/lin/babylin.py`
- `ecu_framework/flashing/hex_flasher.py`

### Pytest plugin and config
- `conftest_plugin.py`  
  Generates HTML columns, requirements coverage JSON, and CI summary
- `pytest.ini`
- `requirements.txt`

### Tests and fixtures
- `tests/conftest.py`
- `tests/test_smoke_mock.py`
- `tests/test_babylin_hardware_smoke.py` (if present)
- `tests/test_hardware_placeholder.py` (if present)

### Documentation
- `README.md`
- `TESTING_FRAMEWORK_GUIDE.md`
- `docs/README.md`
- `docs/01_run_sequence.md`
- `docs/02_configuration_resolution.md`
- `docs/03_reporting_and_metadata.md`
- `docs/04_lin_interface_call_flow.md`
- `docs/05_architecture_overview.md`
- `docs/06_requirement_traceability.md`
- `docs/07_flash_sequence.md`
- `docs/08_babylin_internals.md`

### Vendor guidance (no binaries)
- `vendor/README.md`
- Any headers in `vendor/` (if added per SDK)

### Housekeeping
- `.gitignore`  
  Ignores reports and vendor binaries
- `reports/.gitkeep`  
  Retains folder structure without committing artifacts

## Do NOT commit (ignored or should be excluded)

- Virtual environments: `.venv/`, `venv/`, etc.
- Generated test artifacts:  
  `reports/report.html`, `reports/junit.xml`, `reports/summary.md`, `reports/requirements_coverage.json`
<!-- - Vendor binaries: anything under `vendor/**` with `.dll`, `.lib`, `.pdb` keep them for now -->
- Python caches: `__pycache__/`, `.pytest_cache/`
- Local env files: `.env`

## Safe commit commands (PowerShell)

```powershell
# Stage everything except what .gitignore already excludes
git add -A

# Commit with a helpful message
git commit -m "ECU framework: docs, reporting plugin (HTML metadata + requirements JSON + CI summary), .gitignore updates"
```

## Notes

<!-- - Do not commit BabyLin DLLs or proprietary binaries. Keep only the placement/readme and headers. Keep them for now -->
- The plugin writes CI-friendly artifacts into `reports/`; they’re ignored by default but published in CI.
