Skip to content

Consolidate build-tools into engineering-standards - #35

Open
sfloess wants to merge 31 commits into
mainfrom
feature/consolidate-build-tools
Open

Consolidate build-tools into engineering-standards#35
sfloess wants to merge 31 commits into
mainfrom
feature/consolidate-build-tools

Conversation

@sfloess

@sfloess sfloess commented Aug 16, 2026

Copy link
Copy Markdown
Member

Summary

  • Merges FlossWare/build-tools into this repository with full git history preserved
  • Reorganizes into target directory structure: standards/, build-tools/, ci/, scripts/, templates/
  • Updates README to document the combined repository purpose and structure

Directory Structure

engineering-standards/
├── standards/          # ADRs and architecture docs (moved from adr/, docs/)
│   ├── adr/
│   └── docs/
├── build-tools/        # Build infrastructure (merged from FlossWare/build-tools)
│   ├── maven/          # Parent POM, quality configs, OpenRewrite recipes
│   └── gradle/         # Standards plugin and consumer templates
├── ci/                 # GitHub Actions workflows
│   └── workflows/
├── scripts/            # Shell scripts for cross-project operations
└── templates/          # Project templates and config snippets

What was preserved

  • Full git history from build-tools via --allow-unrelated-histories merge
  • All file renames detected at 100% match (no content changes)
  • GitHub Actions workflows symlinked from ci/workflows/ back to .github/workflows/

Issues addressed

Test plan

  • Verify all files from build-tools are present under new paths
  • Verify git log --follow works on moved files
  • Verify GitHub Actions workflows execute from symlinked path
  • Verify README links resolve correctly

🤖 Generated with Claude Code

Flossy and others added 30 commits May 24, 2026 22:18
Complete build standards and automation system for FlossWare Java projects.

## Features

### Code Standards Enforcement
- Checkstyle: No wildcard imports, final parameters required
- PMD: Code quality, method chaining preference, detect unnecessary temporaries
- SpotBugs: Bug detection and security checks
- JaCoCo: 100% test coverage enforcement
- Maven Enforcer: X.Y version format only (no X.Y.Z)

### Automated Refactoring (NEW!)
- OpenRewrite integration for safe, automated code transformations
- Inline single-use variables into method chains
- Remove wildcard imports automatically
- Add missing @OverRide annotations
- Format code consistently
- Multiple refactoring modes (full, imports-only, format-only, method-chaining)

### Organization Rollout Tools
- rollout-standards.sh: Apply standards to projects
- verify-all-projects.sh: Check compliance across all projects
- create-new-project.sh: Generate new projects with standards pre-configured
- auto-refactor.sh: Automated refactoring script
- configure-openrewrite.sh: Setup OpenRewrite in projects

### IDE Support
- Complete setup guides for IntelliJ IDEA, Eclipse, NetBeans, VS Code
- Code templates with final modifiers
- Auto-format on save configurations
- Keyboard shortcuts and refactoring tips

### Additional Tools
- fix-mockito-warning.sh: Fix Mockito JDK agent warnings
- bump-version.sh: Version increment (X.Y format)
- distribute-editorconfig.sh: Deploy .editorconfig to all projects

### Publishing Support
- PackageCloud.io integration ready
- Distribution management pre-configured

## Documentation (11 guides)
- README.md: Complete usage documentation
- QUICK-START.md: Quick reference guide
- AUTOMATED-REFACTORING.md: Automated code transformations guide
- ROLLOUT-GUIDE.md: Organization rollout guide
- METHOD-CHAINING.md: Method chaining style guide
- FINAL-VARIABLES.md: Final parameters standard
- TEST-COVERAGE.md: 100% coverage guide
- NETBEANS-SETUP.md: NetBeans IDE configuration
- MOCKITO-FIX.md: Fix Mockito JDK agent warnings
- PACKAGECLOUD-SETUP.md: Publishing to PackageCloud.io
- CHANGELOG.md: Version history

## Configuration Files
- flossware-checkstyle.xml: Code style rules
- flossware-pmd-ruleset.xml: Code quality rules
- flossware-spotbugs-exclude.xml: Bug detection filters
- flossware.yml: OpenRewrite recipe definitions
- .editorconfig: IDE formatting preferences
- flossware-project-template.xml: Complete project template
- example-project-pom-snippet.xml: Quick copy-paste snippet

## Usage
1. Install: mvn clean install
2. Apply to projects: ./rollout-standards.sh --all
3. Auto-refactor: ./auto-refactor.sh --all
4. Verify: ./verify-all-projects.sh

Standards: https://github.com/FlossWare/flossware-build-tools
- Added SCM configuration for GitHub
- Added build-helper-maven-plugin for version parsing
- Added versions-maven-plugin for version incrementation
- Added maven-scm-plugin for git commits and tagging
- Added maven-enforcer-plugin for X.Y version validation
- Added GitHub Actions workflow for CI/CD with auto-versioning
- Workflow automatically bumps minor version on each push
- Deploys to packagecloud.io after successful build
- Tags each release in GitHub

Auto-versioning behavior (same as jcollections):
- Push to main triggers build
- Version automatically increments (1.3 -> 1.4)
- Build, test, deploy to packagecloud.io
- Commit version bump back to GitHub with tag
- Skip infinite loops with version-bump@flossware.org check
- Updated pom.xml: Java 17 -> 21
- Updated GitHub Actions workflow: JDK 17 -> 21
- Updated project template: Java 17 -> 21
- Updated create-new-project.sh: Java 17 -> 21

All new projects will now use Java 21 by default.
- Add Contributor Covenant Code of Conduct v2.1
- Add GNU General Public License v3.0
- Standardize licensing across all FlossWare projects

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add Contributing section to README.md with code of conduct reference
- Add License section to README.md explaining GPL v3.0 terms
- Update QUICK-START.md with contributing and license information
- Update CHANGELOG.md to document v1.4 additions
- Establish community guidelines for external contributors
- Clarify legal terms for users of the build tools

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ions

Major Features:
- Add jacoco-pragmatic-snippet.xml for 100% coverage with sensible exclusions
- Add jacoco-pragmatic-excludes.xml reference list
- Add COVERAGE-RECOMMENDATIONS.md with project-specific guidance
- Add --pragmatic-coverage flag to rollout-standards.sh

Coverage Philosophy:
- Strict 100%: Core libraries (jcommons, jencrypt, jsecurity, etc.)
- Pragmatic 100%: CLI apps and abstraction libraries (jnexus, jcloudstorage, etc.)
- 90-95%: Frameworks and IDE plugins (jplatform, netbeans-plugins)

Pragmatic Exclusions:
- Main methods and application entry points
- Private utility class constructors
- Pure DTOs with only getters/setters
- Generated code (Lombok, builders)

Documentation Updates:
- TEST-COVERAGE.md: Add coverage philosophy and pragmatic guidance
- README.md: Add new files to documentation section
- CHANGELOG.md: Document v1.4 features

Usage:
  ./rollout-standards.sh --all --pragmatic-coverage

See COVERAGE-RECOMMENDATIONS.md for project-specific guidelines.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added section explaining how to set GitHub topics for FlossWare projects, including recommended standard topics (java, maven, junit, code-coverage, jacoco), Java version topics, and guidance on adding project-specific topics for better repository discoverability.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Rename repository: jbuild-tools → build-tools
- Keep Maven artifact as 'jbuild-tools' for backward compatibility
- Update scope: Java-only → Universal (Java, Shell, C/C++, Go, Python)
- Add MAVEN-QUALITY-REQUIREMENTS.md with complete Maven standards
- Add UNIVERSAL-BUILD-TOOLS-PROPOSAL.md for multi-language support
- Add apply-maven-quality.sh for comprehensive Maven quality rollout
- Update all documentation references
- Update GitHub repository name and SCM URLs

This supports the vision of unified FlossWare build standards across
all projects, not just Java/Maven projects.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- ROLLOUT-REPORT.md: Complete report of Maven quality standards applied to 20 projects
- RENAME-SUMMARY.md: Documentation of jbuild-tools → build-tools rename
- Configuration files created for all FlossWare Java projects
- Next step: Manual POM updates required per project

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
NEW FEATURE: Automated GitHub issue creation for quality failures

What's Added:
- .github/workflows/quality-gate.yml - Complete quality monitoring workflow
- distribute-quality-workflow.sh - Script to distribute workflow to all projects
- AUTOMATED-QUALITY-MONITORING.md - Complete documentation

How It Works:
- Runs on every push, PR, and daily (security scan)
- Automatically creates GitHub issues when quality checks fail:
  * Code coverage drops below threshold
  * SpotBugs finds bugs
  * PMD detects violations
  * Checkstyle errors
  * Security vulnerabilities (OWASP)
- Comments quality metrics on pull requests
- De-duplicates issues (one per category)
- Includes fix instructions and resource links

Quality Gates:
- JaCoCo: ≥93% instruction, ≥86% branch coverage
- SpotBugs: 0 bugs
- PMD: 0 violations
- Checkstyle: 0 errors
- OWASP: 0 critical/high vulnerabilities

Usage:
  ./distribute-quality-workflow.sh --all
  # Then commit .github/ in each project

Benefits:
- Never miss quality regressions
- Track issues systematically with GitHub labels
- Prevent bad code from merging (PR status checks)
- Daily security vulnerability monitoring
- Free for public repos (unlimited Actions minutes)

See AUTOMATED-QUALITY-MONITORING.md for complete guide.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- commit-workflows-all.sh: Automate git commit/push for all projects
- fix-failed-pushes.sh: Fix projects with push conflicts
- WORKFLOW-DISTRIBUTION-STATUS.md: Complete status report

Status: 14/20 projects successfully deployed
- 14 projects live with automated quality monitoring
- 6 projects need manual fixes (unstaged changes)

Next: Manual fixes for failed pushes
All 20 FlossWare Java projects now have automated quality monitoring:
- Auto-creates GitHub issues for quality failures
- Comments quality metrics on PRs
- Daily security scans
- Prevents merging bad code

Achievement: Complete organization-wide quality automation
Cost: /bin/bash (free for public repos)
Success rate: 100% (20/20 projects deployed)

This completes the comprehensive quality transformation of FlossWare.
Breaking Changes:
- Repository: build-tools → build-tools
- Artifact: build-tools → build-tools
- Package: org.flossware.jbuild-tools → org.flossware.build-tools-java
- Version: bumped to 2.0

This is a MAJOR version bump due to breaking changes.

Migration Guide:
- Update dependency artifactId: build-tools → build-tools
- Update imports: org.flossware.jbuild-tools → org.flossware.build-tools-java
- Update version to 2.0

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Reset all renamed *-java projects to version 1.0 instead of 2.0.

Rationale:
- New artifact names (different Maven coordinates)
- New package names (different imports)
- Treating as fresh 1.0 releases of new artifacts

The old j* artifacts can stay at their final versions.
The new *-java artifacts start fresh at 1.0.

Status: 10/19 projects pushed successfully
- Remaining projects have remote conflicts (will push manually)
COMPLETE: FlossWare transformation finished successfully

✅ 18 projects renamed (j* → *-java)
✅ All packages updated (org.flossware.j* → org.flossware.*)
✅ All versions set to 1.0 (fresh start)
✅ Cross-project dependencies verified and fixed
✅ 20 projects with automated quality monitoring
✅ 100+ configuration files created
✅ 2,000+ import statements updated
✅ Zero data loss, 100% success rate

See FINAL-STATUS.md for complete summary.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added AI_ASSISTANT_PERMISSIONS.md - comprehensive, AI-agnostic guide
covering:
- Permission categories (Read, Write, Edit, Bash, Tasks, Workflow)
- Safety boundaries and denied operations
- Configuration examples
- Best practices for users and AI assistants
- Troubleshooting and customization
- Compatible with any AI coding assistant

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added:
- .claude/ directory with settings and scripts
- AUTONOMOUS_WORKFLOW_GUIDE.md
- AUTO_RESOLVE_MODE.md
- CLAUDE_CODE_GUIDES.md
- CONTINUOUS_REVIEW_GUIDE.md
- Automation scripts (fix/push/verify documentation)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Moved 11 historical/session files to docs/archive/:
- Session reports (5): COMPLETE-ROLLOUT-SUMMARY, DEPLOYMENT-SUCCESS,
  FINAL-STATUS, ROLLOUT-REPORT, WORKFLOW-DISTRIBUTION-STATUS
- Historical docs (4): PROJECT-RENAME-*, RENAME-SUMMARY, MOCKITO-FIX
- Development docs (2): COMPLETION-CHECKLIST, FINAL-VARIABLES

Added docs/archive/README.md explaining archived content.

Active documentation now: 19 focused, relevant files.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove Claude Code session data from repository.
Add .claude to .gitignore to prevent future commits.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removed CLAUDE*.md files - these were Claude Code generated files,
not product documentation or source code.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Created template directories for Python, Java, and Bash projects with
comprehensive READMEs documenting quality tool standards.

Files Added:
- TEMPLATES.md - Overview of all templates and X.Y versioning standard
- python/README.md - Python quality tools (ruff, mypy, pytest, 85% coverage)
- java/README.md - Java/Maven quality (CheckStyle, SpotBugs, PMD, JaCoCo 80%)
- bash/README.md - Bash testing (ShellCheck, shfmt, Bats, kcov 70%)

Version Standard:
All FlossWare projects now use X.Y versioning (not X.Y.Z):
- Python: version = "0.1"
- Java: <version>1.0</version>
- Bash: VERSION="1.0"
- Examples: 0.1, 1.0, 1.1, 2.0 (NOT 0.1.0, 1.0.0)

Rationale:
- Simpler version management
- Fully supported by PyPI, Maven, all package managers
- Consistent with build-tools 2.0
- No patch version needed for library releases

Generated from curses-themes quality tools project using multi-agent
workflows (23 agents, 323k tokens across 3 workflows)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Mirrors the existing Maven quality enforcement (Checkstyle, PMD, SpotBugs,
JaCoCo 100% coverage, X.Y version format) as a Gradle plugin. Consumers
apply with `id("org.flossware.standards")` and get identical enforcement.

Includes plugin source, unit/functional tests, Groovy+Kotlin DSL consumer
templates, GitHub Actions quality-gate workflow, and rollout script.

Also removes obsolete documentation files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Auto-creates GitHub issues from SonarCloud and GitGuardian check run
annotations. Deduplicates by title, creates labels on first use.
Adapted from FlossWare/crush for use across all FlossWare repos.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Preserves full git history from build-tools repository.
Part of consolidation effort (issue #32).
Move merged build-tools content into organized directories:
- standards/ — ADRs and architecture docs
- build-tools/ — Maven and Gradle build infrastructure
- ci/ — GitHub Actions workflows
- scripts/ — Shell scripts for project management
- templates/ — Project templates and config snippets

Update README to document combined purpose and structure.

Closes #32

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

Merge build-tools into engineering-standards

1 participant