Skip to content

feat(dx): Epic 6 - Developer Experience Improvements#54

Closed
arcaven wants to merge 2 commits intoBOHICA-LABS:mainfrom
arcaven:main
Closed

feat(dx): Epic 6 - Developer Experience Improvements#54
arcaven wants to merge 2 commits intoBOHICA-LABS:mainfrom
arcaven:main

Conversation

@arcaven
Copy link
Copy Markdown
Contributor

@arcaven arcaven commented Mar 16, 2026

After sorting merge conflicts, there are no changes left over!
Huzzah!

Found this dirty diff laying about, fall out from the manual import.
I'm not committed to these, but most of them are cleanups, some are substantial.
It's for you to decide if it's directionality aligned. If you don't want them for any reason, that's fine too, I was just planning on sync-or-delete and didn't want to toss it out or keep maintaining it for no reason.


This pull request introduces several improvements to the project’s development workflow, CI/CD automation, and issue tracking, with a focus on enhancing developer experience, automation, and project maintainability. The most important changes are grouped below by theme.

Development Environment & Automation:

  • Added .devcontainer/devcontainer.json for a standardized development container setup, including Python 3.12, GitHub CLI, pre-commit hooks, and recommended VS Code extensions and settings.
  • Updated .pre-commit-config.yaml to improve mypy configuration by ignoring missing imports and adding type stubs for PyYAML.

Continuous Integration Enhancements:

  • Improved .github/workflows/ci.yml by adding pre-commit checks, dependency review for pull requests, expanding test matrix to include Python 3.11, and optimizing spaCy model caching for faster CI runs. [1] [2] [3]
  • Added .github/workflows/codeql.yml to enable automated CodeQL security and quality analysis for Python code on pushes, pull requests, and a weekly schedule.

Issue & PR Management:

  • Added GitHub issue templates for bug reports and feature requests, as well as a config file to enable blank issues and direct users to Discussions for questions. [1] [2] [3]
  • Introduced a pull request template to standardize PR submissions and ensure adherence to project guidelines.
  • Added .github/dependabot.yml to automate dependency updates for Python and GitHub Actions, with grouping and commit message customization to reduce noise.

These changes collectively streamline onboarding, automate quality checks, and improve issue tracking and dependency management for the project.* feat(dx): implement Epic 6 developer experience and security

Epic 6 implements 7 stories improving developer onboarding and security:

Story 6.1 - Fix Installation Issues:

  • Add scikit-learn>=1.3.0 to core dependencies
  • Add pre-commit>=3.5.0 to dev dependencies

Story 6.2 - Developer Environment Setup:

  • Add Justfile with common dev commands
  • Add devcontainer with venv-based Python setup
  • Add environment-aware integration tests

Story 6.3 - README Requirements and Troubleshooting:

  • Add Requirements section (Python, RAM, disk)
  • Add comprehensive Troubleshooting section

Story 6.4 - CI Pipeline Improvements:

  • Add pip and spaCy model caching
  • Add Python 3.11 to test matrix
  • Add CodeQL security scanning workflow

Story 6.5 - Dependabot and Security Settings:

  • Add dependabot.yml for pip and GitHub Actions
  • Add SECURITY.md with vulnerability reporting instructions

Story 6.6 - README Status Badges:

  • Reorganize badges into logical groups
  • Add CI, CodeQL, coverage, security badges

Story 6.7 - Contributor Experience:

  • Add CODE_OF_CONDUCT.md (Contributor Covenant v2.1)
  • Add GitHub issue templates (bug report, feature request)
  • Add PR template with checklist
  • Add ggshield setup documentation to CONTRIBUTING.md

Refs: Epic 6

  • docs(prd): add Story 6.8 mypy type compliance to Epic 6
  • Add Story 6.8 to PRD with acceptance criteria
  • Create detailed story file with error analysis (176 errors, 35 files)
  • Categorize errors by type and file for prioritized fixes

Refs: Epic 6

  • fix(types): achieve mypy type compliance across codebase

Story 6.8: Fix all 176 mypy type errors to enable pre-commit hook without SKIP=mypy.

Changes:

  • Add explicit type annotations for Optional parameters
  • Use Union types for polymorphic variables
  • Add type assertions for Optional type narrowing
  • Cast numpy scalars to float for return type compliance
  • Add Dict[str, Any] annotations for mixed-value dictionaries
  • Add types-PyYAML to dev dependencies and pre-commit config
  • Update pre-commit mypy to use --ignore-missing-imports

Validation:

  • mypy: 0 errors in 57 source files
  • Backward compatibility: 11/11 tests pass
  • CLI modes: 17/17 tests pass
  • Base compatibility: 26/26 tests pass
  • CLI smoke test: passes

Note: 4 test failures in test_dual_score_calculator.py are pre-existing upstream issues (verified on main branch).

Refs: Story 6.8

  • ci: retrigger CI after enabling dependency graph

  • style: fix trailing whitespace and end-of-file issues

  • Run pre-commit hooks to fix trailing whitespace across all files
  • Add missing newlines at end of files
  • Add Story 6.9 for CI pipeline fixes
  • style: apply ruff-format and fix CI pre-commit
  • Run ruff-format --all-files to fix formatting issues
  • Skip ggshield in CI (upstream lacks GitGuardian API key)
  • Fix unused variable warnings in generate_validation_corpus.py
  • Add uv.lock to .gitignore (library, not application)

Description

Brief description of the changes in this PR.

Related Issue

Closes #(issue number)

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Refactoring (no functional changes)

Checklist

  • All tests pass (just test or pytest)
  • Linting passes (just lint)
  • My commits follow conventional commit format
  • I have read the CONTRIBUTING guidelines
  • I have updated documentation (if applicable)

* feat(dx): implement Epic 6 developer experience and security

Epic 6 implements 7 stories improving developer onboarding and security:

Story 6.1 - Fix Installation Issues:
- Add scikit-learn>=1.3.0 to core dependencies
- Add pre-commit>=3.5.0 to dev dependencies

Story 6.2 - Developer Environment Setup:
- Add Justfile with common dev commands
- Add devcontainer with venv-based Python setup
- Add environment-aware integration tests

Story 6.3 - README Requirements and Troubleshooting:
- Add Requirements section (Python, RAM, disk)
- Add comprehensive Troubleshooting section

Story 6.4 - CI Pipeline Improvements:
- Add pip and spaCy model caching
- Add Python 3.11 to test matrix
- Add CodeQL security scanning workflow

Story 6.5 - Dependabot and Security Settings:
- Add dependabot.yml for pip and GitHub Actions
- Add SECURITY.md with vulnerability reporting instructions

Story 6.6 - README Status Badges:
- Reorganize badges into logical groups
- Add CI, CodeQL, coverage, security badges

Story 6.7 - Contributor Experience:
- Add CODE_OF_CONDUCT.md (Contributor Covenant v2.1)
- Add GitHub issue templates (bug report, feature request)
- Add PR template with checklist
- Add ggshield setup documentation to CONTRIBUTING.md

Refs: Epic 6

* docs(prd): add Story 6.8 mypy type compliance to Epic 6

- Add Story 6.8 to PRD with acceptance criteria
- Create detailed story file with error analysis (176 errors, 35 files)
- Categorize errors by type and file for prioritized fixes

Refs: Epic 6

* fix(types): achieve mypy type compliance across codebase

Story 6.8: Fix all 176 mypy type errors to enable pre-commit hook
without SKIP=mypy.

Changes:
- Add explicit type annotations for Optional parameters
- Use Union types for polymorphic variables
- Add type assertions for Optional type narrowing
- Cast numpy scalars to float for return type compliance
- Add Dict[str, Any] annotations for mixed-value dictionaries
- Add types-PyYAML to dev dependencies and pre-commit config
- Update pre-commit mypy to use --ignore-missing-imports

Validation:
- mypy: 0 errors in 57 source files
- Backward compatibility: 11/11 tests pass
- CLI modes: 17/17 tests pass
- Base compatibility: 26/26 tests pass
- CLI smoke test: passes

Note: 4 test failures in test_dual_score_calculator.py are
pre-existing upstream issues (verified on main branch).

Refs: Story 6.8

* ci: retrigger CI after enabling dependency graph

* style: fix trailing whitespace and end-of-file issues

- Run pre-commit hooks to fix trailing whitespace across all files
- Add missing newlines at end of files
- Add Story 6.9 for CI pipeline fixes

* style: apply ruff-format and fix CI pre-commit

- Run ruff-format --all-files to fix formatting issues
- Skip ggshield in CI (upstream lacks GitGuardian API key)
- Fix unused variable warnings in generate_validation_corpus.py
- Add uv.lock to .gitignore (library, not application)
@arcaven arcaven requested a review from drbothen as a code owner March 16, 2026 06:05
@arcaven arcaven marked this pull request as draft March 16, 2026 06:07
Resolve all merge conflicts by taking upstream's versions.
The fork's Epic 6 DX work was already merged upstream via PR BOHICA-LABS#8;
conflicts arose from upstream's subsequent evolution (energy dimension,
config system, uv migration, threshold recalibrations, bug fixes).

Delete docs/CODEBASE-ANALYSIS.md and docs/architecture.md which
upstream removed in favor of sharded architecture docs.
@arcaven arcaven closed this Mar 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant