Create top 5 priority issues for next release with comprehensive specifications#7785
Create top 5 priority issues for next release with comprehensive specifications#7785
Conversation
Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
|
|
|
|
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Snapshot WarningsEnsure that dependencies are being submitted on PR branches and consider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice. Scanned FilesNone |
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
There was a problem hiding this comment.
Pull Request Overview
This PR creates a comprehensive framework for preparing the next release by identifying and documenting 5 high-priority issues with complete specifications, automated creation tooling, and strategic prioritization methodology. The analysis is based on the repository's SWOT analysis, technology EOL strategy, and current project status.
Key Changes:
- Added strategic prioritization framework with scoring methodology (Impact × 2 + Urgency + Effort Bonus)
- Created automation script for GitHub issue creation using GitHub CLI
- Documented 5 priority issues: Jetty 12 upgrade, Drools test coverage, PostgreSQL 16 documentation, security dependency audit, and database performance optimization
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| scripts/create-next-release-issues.sh | Bash script that automates creation of 5 priority issues using GitHub CLI with validation checks and appropriate labels |
| scripts/README.md | Comprehensive guide with manual and automated workflows for creating issues, including detailed specifications and implementation order |
| NEXT_RELEASE_PRIORITIES.md | Strategic analysis document outlining the 5 priority issues with scoring methodology, background, and alignment with project SWOT findings |
| set -e | ||
|
|
||
| REPO="Hack23/cia" | ||
| ISSUE_DIR="/tmp" |
There was a problem hiding this comment.
Hardcoding /tmp as the issue directory creates a fragile dependency on external files that are not part of the repository. This makes the script non-portable and difficult to use, as users must first obtain or create the issue files in /tmp. Consider either: (1) embedding the issue content directly in the script, (2) storing issue templates in the repository under scripts/templates/, or (3) making ISSUE_DIR configurable via environment variable with a sensible default like ${ISSUE_DIR:-./scripts/templates}.
| ISSUE_DIR="/tmp" | |
| ISSUE_DIR="${ISSUE_DIR:-./scripts/templates}" |
There was a problem hiding this comment.
Fixed in commit 7bfd681. The script now uses SCRIPT_DIR to locate templates relative to the script location, with ISSUE_DIR configurable via environment variable: ISSUE_DIR="${ISSUE_DIR:-$SCRIPT_DIR/issue-templates}". All issue templates are now included in the repository at scripts/issue-templates/.
scripts/README.md
Outdated
|
|
||
| ## 📁 Files in This Directory | ||
|
|
||
| - **Issue Specifications**: `/tmp/issue{1-5}.md` - Complete issue descriptions |
There was a problem hiding this comment.
The documentation references issue specification files in /tmp/ that are not included in the repository. This creates confusion as users cannot access these files to review or create issues manually. The issue specifications should either be: (1) included in the repository (e.g., in scripts/templates/), (2) embedded in the script itself, or (3) clearly documented as files that need to be generated separately. The documentation should clarify where these files come from and how to obtain them.
There was a problem hiding this comment.
Fixed in commit 7bfd681. All issue specifications are now included in the repository at scripts/issue-templates/ with descriptive filenames (issue1-jetty-upgrade.md, issue2-drools-tests.md, etc.). Documentation updated to reference these repository paths.
scripts/README.md
Outdated
|
|
||
| 2. **Run Creation Script** | ||
| ```bash | ||
| cd /home/runner/work/cia/cia |
There was a problem hiding this comment.
The hardcoded path /home/runner/work/cia/cia is specific to GitHub Actions runners and will not work for local development or other CI environments. This should be a relative path or use repository-relative navigation (e.g., cd \"$(git rev-parse --show-toplevel)\" or simply cd /path/to/your/repo). Alternatively, remove this line if users are expected to run the script from the repository root.
| cd /home/runner/work/cia/cia | |
| cd "$(git rev-parse --show-toplevel)" |
There was a problem hiding this comment.
Fixed in commit 7bfd681. Changed from hardcoded path to cd "$(git rev-parse --show-toplevel)" which resolves to the repository root in any environment.
NEXT_RELEASE_PRIORITIES.md
Outdated
| See: `/tmp/issue1.md` | ||
|
|
There was a problem hiding this comment.
References to issue specifications in /tmp/issue1.md through /tmp/issue5.md point to files outside the repository that are not version controlled or accessible to users. These files should either be included in the repository or the documentation should explain how these files are generated. Consider storing the full issue specifications directly in this document or in separate markdown files within the repository (e.g., scripts/issue-templates/).
| See: `/tmp/issue1.md` | |
| _Full issue specification previously referenced as `/tmp/issue1.md` should be included here. If the specification is lengthy, create a file such as `docs/issue-specs/issue1.md` in the repository and reference it with a relative path. For now, please insert the full text of the issue specification below or update this section to point to a repository-tracked file._ |
There was a problem hiding this comment.
Fixed in commit 7bfd681. All issue specifications are now stored in the repository at scripts/issue-templates/ and NEXT_RELEASE_PRIORITIES.md links to them using repository-relative paths like [scripts/issue-templates/issue1-jetty-upgrade.md](scripts/issue-templates/issue1-jetty-upgrade.md).
| echo "" | ||
|
|
||
| echo "================================================" | ||
| echo "Summary: All 5 Issues Created Successfully!" |
There was a problem hiding this comment.
The success message is displayed unconditionally even if some or all issue files were not found (lines 49, 64, 79, 94, 109 show 'File not found' messages). The script should track whether all issues were created successfully and only display this message if all 5 issues were actually created. Consider adding a counter to track successful creations and adjust the summary message accordingly.
There was a problem hiding this comment.
Fixed in commit 7bfd681. Added CREATED_COUNT variable that increments only when issues are successfully created. The summary message now shows "X out of 5 Issues Created" when templates are missing, and only displays "All 5 Issues Created Successfully!" when CREATED_COUNT equals 5.
|
@copilot apply changes based on the comments in this thread |
scripts/README.md
Outdated
| - **Issue Specifications**: `/tmp/issue{1-5}.md` - Complete issue descriptions | ||
| - **Creation Script**: `scripts/create-next-release-issues.sh` - Automated issue creation | ||
| - **Summary Document**: `NEXT_RELEASE_PRIORITIES.md` - Analysis and priorities | ||
| - **This Guide**: `scripts/README.md` - Instructions | ||
|
|
||
| ## 🚀 Quick Start | ||
|
|
||
| ### Option 1: Manual Creation (Recommended for Review) | ||
|
|
||
| 1. **Review Issue Specifications** |
There was a problem hiding this comment.
The documentation references issue specification files in /tmp/ directory, but these files are not included in the PR and /tmp/ is typically ephemeral storage. Users following these instructions won't find the referenced files. Consider either including these files in the repository (e.g., in scripts/issues/ or docs/issues/) or clarifying that these files need to be generated or obtained separately.
| - **Issue Specifications**: `/tmp/issue{1-5}.md` - Complete issue descriptions | |
| - **Creation Script**: `scripts/create-next-release-issues.sh` - Automated issue creation | |
| - **Summary Document**: `NEXT_RELEASE_PRIORITIES.md` - Analysis and priorities | |
| - **This Guide**: `scripts/README.md` - Instructions | |
| ## 🚀 Quick Start | |
| ### Option 1: Manual Creation (Recommended for Review) | |
| 1. **Review Issue Specifications** | |
| - **Issue Specifications**: `/tmp/issue{1-5}.md` - Complete issue descriptions (generated by the creation script; not included in the repository) | |
| - **Creation Script**: `scripts/create-next-release-issues.sh` - Automated issue creation | |
| - **Summary Document**: `NEXT_RELEASE_PRIORITIES.md` - Analysis and priorities | |
| - **This Guide**: `scripts/README.md` - Instructions | |
| ## 🚀 Quick Start | |
| > **Note:** The issue specification files (`/tmp/issue1.md` through `/tmp/issue5.md`) are generated by the `scripts/create-next-release-issues.sh` script. Please run this script before attempting to access or review the issue files. | |
| ### Option 1: Manual Creation (Recommended for Review) | |
| 1. **Review Issue Specifications** | |
| > **Make sure you have run `./scripts/create-next-release-issues.sh` to generate the following files:** |
NEXT_RELEASE_PRIORITIES.md
Outdated
| `testing`, `enhancement`, `political-analysis`, `analytics` | ||
|
|
||
| ### Full Specification | ||
| See: `/tmp/issue2.md` |
There was a problem hiding this comment.
Multiple references to issue specification files in /tmp/ directory, but these files are not included in the repository. The /tmp/ directory is ephemeral and these files won't persist across system reboots or be available to other users. Consider moving these files to a permanent location within the repository or documenting how to generate/obtain them.
| See: `/tmp/issue2.md` | |
| See: `docs/issues/issue2.md` |
NEXT_RELEASE_PRIORITIES.md
Outdated
| `documentation`, `database`, `enhancement` | ||
|
|
||
| ### Full Specification | ||
| See: `/tmp/issue3.md` |
There was a problem hiding this comment.
Multiple references to issue specification files in /tmp/ directory, but these files are not included in the repository. The /tmp/ directory is ephemeral and these files won't persist across system reboots or be available to other users. Consider moving these files to a permanent location within the repository or documenting how to generate/obtain them.
| See: `/tmp/issue3.md` | |
| See: [`docs/issue3.md`](docs/issue3.md) |
NEXT_RELEASE_PRIORITIES.md
Outdated
| `security`, `dependencies`, `enhancement` | ||
|
|
||
| ### Full Specification | ||
| See: `/tmp/issue4.md` |
There was a problem hiding this comment.
Multiple references to issue specification files in /tmp/ directory, but these files are not included in the repository. The /tmp/ directory is ephemeral and these files won't persist across system reboots or be available to other users. Consider moving these files to a permanent location within the repository or documenting how to generate/obtain them.
| See: `/tmp/issue4.md` | |
| See: `docs/issue4.md` |
NEXT_RELEASE_PRIORITIES.md
Outdated
| `performance`, `database`, `enhancement`, `optimization` | ||
|
|
||
| ### Full Specification | ||
| See: `/tmp/issue5.md` |
There was a problem hiding this comment.
Multiple references to issue specification files in /tmp/ directory, but these files are not included in the repository. The /tmp/ directory is ephemeral and these files won't persist across system reboots or be available to other users. Consider moving these files to a permanent location within the repository or documenting how to generate/obtain them.
NEXT_RELEASE_PRIORITIES.md
Outdated
|
|
||
| To create these issues in GitHub: | ||
|
|
||
| 1. Copy issue specifications from `/tmp/issue{1-5}.md` |
There was a problem hiding this comment.
Multiple references to issue specification files in /tmp/ directory, but these files are not included in the repository. The /tmp/ directory is ephemeral and these files won't persist across system reboots or be available to other users. Consider moving these files to a permanent location within the repository or documenting how to generate/obtain them.
| 1. Copy issue specifications from `/tmp/issue{1-5}.md` | |
| 1. Copy issue specifications from `issue-specs/issue{1-5}.md` (ensure these files exist in the repository; create or update as needed) |
- Move issue templates from /tmp to scripts/issue-templates/ directory - Update script to use configurable ISSUE_DIR with repository-relative default - Add success counter to track actually created issues - Update all documentation references from /tmp/ to scripts/issue-templates/ - Fix hardcoded path in README.md to use git rev-parse --show-toplevel - Script now properly reports partial success when some templates missing Addresses PR review comments: - Comment 2516217190: Make ISSUE_DIR configurable with sensible default - Comment 2516217202: Include issue templates in repository - Comment 2516217208: Use repository-relative paths instead of hardcoded - Comment 2516217218: Templates now in repository at scripts/issue-templates/ - Comment 2516217224: Track success count and report accurate status Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
| ISSUE1_URL="[NOT CREATED]" | ||
| fi | ||
| echo "" | ||
| sleep 2 |
There was a problem hiding this comment.
[nitpick] The hardcoded 2-second sleep delays between issue creation may be unnecessary with the GitHub CLI and could slow down the script execution. Consider reducing to 1 second or making this configurable via an environment variable like ISSUE_CREATION_DELAY=${ISSUE_CREATION_DELAY:-1} to allow users to adjust based on their needs.
| CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_vote_politician_id | ||
| ON vote(politician_id); | ||
|
|
||
| CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_vote_ballot_id | ||
| ON vote(ballot_id); | ||
|
|
||
| CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_document_politician_id | ||
| ON document(politician_id); |
There was a problem hiding this comment.
The SQL examples use CREATE INDEX CONCURRENTLY without mentioning that this cannot be run inside a transaction block. Since these are presented as migration scripts (V100__add_performance_indexes.sql), they would typically be executed by Flyway/Liquibase which wraps migrations in transactions by default. Add a comment or note explaining that these indexes should either be created outside of transactional migrations or use regular CREATE INDEX statements instead.
| @RunWith(SpringJUnit4ClassRunner.class) | ||
| @ContextConfiguration(locations = {"classpath:META-INF/cia-service-impl.xml"}) | ||
| public class PoliticianRulesTest { | ||
|
|
||
| @Autowired | ||
| private RulesEngine rulesEngine; | ||
|
|
||
| @Test | ||
| public void testPoliticianLazyRule() { |
There was a problem hiding this comment.
The test example uses JUnit 4 (@RunWith(SpringJUnit4ClassRunner.class)) while the project uses Java 25 (src 21). Consider updating the example to use JUnit 5 with @ExtendWith(SpringExtension.class) or @SpringBootTest to align with modern Spring testing practices and avoid suggesting deprecated testing patterns.
| @RunWith(SpringJUnit4ClassRunner.class) | |
| @ContextConfiguration(locations = {"classpath:META-INF/cia-service-impl.xml"}) | |
| public class PoliticianRulesTest { | |
| @Autowired | |
| private RulesEngine rulesEngine; | |
| @Test | |
| public void testPoliticianLazyRule() { | |
| @ExtendWith(SpringExtension.class) | |
| import org.springframework.test.context.ContextConfiguration; | |
| import org.springframework.test.context.junit.jupiter.SpringExtension; | |
| @ExtendWith(SpringExtension.class) | |
| @ContextConfiguration(locations = {"classpath:META-INF/cia-service-impl.xml"}) | |
| class PoliticianRulesTest { | |
| @Autowired | |
| private RulesEngine rulesEngine; | |
| @org.junit.jupiter.api.Test | |
| void testPoliticianLazyRule() { |
| ```markdown | ||
| ## Security Updates - Release X.X.X | ||
|
|
||
| ### Updated Dependencies |
There was a problem hiding this comment.
[nitpick] The documentation template shows version upgrades using 'XX' placeholders (e.g., '5.8.XX', '1.XX'). While these are meant as examples, consider adding a note explaining that these should be replaced with actual version numbers discovered during the security audit, as the placeholder format might be unclear to contributors.
| ### Updated Dependencies | |
| ### Updated Dependencies | |
| <!-- | |
| NOTE: Replace 'XX' in version numbers below with the actual version numbers discovered and applied during the security audit. | |
| --> |
|



Description
Analyzed repository architecture, SWOT analysis, and technology lifecycle to identify and document 5 high-priority, small-to-medium effort issues for next release preparation. Delivers complete issue specifications with implementation guidance, automated creation tooling, and strategic prioritization framework.
Priority Issues Identified:
Deliverables:
scripts/issue-templates/*.md(included in repository, 4-9KB each with objectives, acceptance criteria, implementation guidance)NEXT_RELEASE_PRIORITIES.md(priority scoring methodology, strategic alignment)scripts/create-next-release-issues.sh(GitHub CLI-based issue creation with configurable paths and success tracking)scripts/README.md(manual and automated workflows)Prioritization Formula:
Improvements from Review Feedback:
scripts/issue-templates/ISSUE_DIRenvironment variable$(git rev-parse --show-toplevel)Type of Change
Primary Changes
Technical Changes
Impact Analysis
Political Analysis Impact
Technical Impact
Testing
Documentation
Related Issues
Related to #6943 - Comprehensive career analysis dashboard (references existing issue)
Related to #6885 - Extended compliance rules (references existing issue)
Checklist
Additional Notes
Strategic Alignment:
Issues address SWOT weaknesses (legacy tech EOL, sparse docs) while leveraging strengths (comprehensive data, modular architecture). Priority scoring favors high-impact, quick-win tasks following Agile/Lean principles.
Implementation Order:
Most issues parallelizable; minimal dependencies between them.
Usage:
Script Portability:
SCRIPT_DIRto locate templates relative to script locationISSUE_DIRenvironment variableSecurity Considerations
Release Notes
Added comprehensive next-release preparation framework: 5 prioritized issues with complete specifications (now included in repository), automated creation tooling with portable paths and success tracking, and strategic analysis aligned with project SWOT findings. Addresses technology EOL (Jetty), quality assurance (Drools tests), deployment experience (PostgreSQL docs), security posture (dependency audit), and performance (database optimization).
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.