Skip to content

Create top 5 priority issues for next release with comprehensive specifications#7785

Closed
Copilot wants to merge 4 commits intomasterfrom
copilot/prepare-next-release-priorities
Closed

Create top 5 priority issues for next release with comprehensive specifications#7785
Copilot wants to merge 4 commits intomasterfrom
copilot/prepare-next-release-priorities

Conversation

Copy link
Contributor

Copilot AI commented Nov 11, 2025

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:

  1. Jetty 12 Upgrade - Extends platform EOL from 2026 to 2028 while maintaining javax.servlet compatibility
  2. Drools Test Coverage - Quality assurance for recently added risk assessment rules (PR Add comprehensive risk assessment rules for politician, party, ministry, and committee behavior analysis #7770)
  3. PostgreSQL 16 Documentation - Validation and troubleshooting for complex SSL/prepared transactions setup
  4. Security Dependency Audit - Pre-release updates for Spring Security, Bouncy Castle, Logback
  5. Database Performance Optimization - Strategic indexing and N+1 query elimination for dashboard responsiveness

Deliverables:

  • Issue templates: scripts/issue-templates/*.md (included in repository, 4-9KB each with objectives, acceptance criteria, implementation guidance)
  • Analysis document: NEXT_RELEASE_PRIORITIES.md (priority scoring methodology, strategic alignment)
  • Automation script: scripts/create-next-release-issues.sh (GitHub CLI-based issue creation with configurable paths and success tracking)
  • Implementation guide: scripts/README.md (manual and automated workflows)

Prioritization Formula:

Priority Score = (Impact × 2) + Urgency + Effort Bonus
- Impact (1-5): Business/technical value
- Urgency (1-5): Time sensitivity  
- Effort Bonus: Small=+3, Medium=+2, Large=+1

Improvements from Review Feedback:

  • All issue templates now included in repository at scripts/issue-templates/
  • Script uses repository-relative paths with configurable ISSUE_DIR environment variable
  • Portable path resolution using $(git rev-parse --show-toplevel)
  • Success counter tracks actual issue creation status
  • Accurate reporting: "X out of 5 Issues Created" when templates missing

Type of Change

Primary Changes

  • 📝 Documentation

Technical Changes

  • 📝 Documentation
    • Technical Documentation

Impact Analysis

Political Analysis Impact

  • Impact on data quality: No direct impact - infrastructure and quality improvements
  • Impact on analysis accuracy: Enhanced test coverage improves Drools risk assessment reliability
  • Impact on transparency features: Performance optimizations enable faster dashboard analytics

Technical Impact

Testing

  • Political data validation completed - Analysis based on DATA_MODEL.md, SWOT.md, End-of-Life-Strategy.md
  • Security compliance verified - Aligned with OpenSSF Scorecard 7.2/10, CII Best Practices

Documentation

  • README updated - Created scripts/README.md with implementation guide
  • Package/module documentation updated - Added NEXT_RELEASE_PRIORITIES.md with comprehensive analysis
  • Political analysis documentation updated - Issue Create Sankey diagrams  #2 references DROOLS_RISK_RULES.md
  • Technical Documentation - Added 5 issue templates in scripts/issue-templates/ directory

Related Issues

Related to #6943 - Comprehensive career analysis dashboard (references existing issue)
Related to #6885 - Extended compliance rules (references existing issue)

Checklist

  • Code follows project coding standards
  • Comments are clear and helpful
  • Documentation is updated
  • Security compliance is maintained
  • Performance impact is acceptable
  • Changes are backward compatible

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:

  1. Security Audit (Issue Add a Codacy badge to README.md #4) - Release-critical, 2-4 hours
  2. Jetty Upgrade (Issue Improve look and feel #1) - Foundation for extended support, 1-2 days
  3. Drools Tests (Issue Create Sankey diagrams  #2) - Quality assurance, 4-8 hours
  4. PostgreSQL Docs (Issue User actions and gamification. #3) - Developer experience, 2-4 hours
  5. Performance (Issue Fix aws inspector findings cloudformation setup #5) - User experience, 1-2 days

Most issues parallelizable; minimal dependencies between them.

Usage:

# Manual: Review scripts/issue-templates/*.md, create via GitHub UI
# Automated (from repo root): 
cd "$(git rev-parse --show-toplevel)"
./scripts/create-next-release-issues.sh

# Custom template location:
ISSUE_DIR=/path/to/templates ./scripts/create-next-release-issues.sh

Script Portability:

  • Uses SCRIPT_DIR to locate templates relative to script location
  • Configurable via ISSUE_DIR environment variable
  • Works in any environment (local development, CI/CD, GitHub Actions)
  • Tracks success count and reports accurate status

Security Considerations

  • No sensitive data exposed
  • Security best practices followed
  • Compliance requirements met

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).

Custom agent used: task-agent
Expert in repository analysis and task decomposition, creating prioritized, small, mergeable GitHub issues from architecture, code, and documentation analysis

Original prompt

create top 5 top priority issues to prepare next release.

Custom agent used: task-agent
Expert in repository analysis and task decomposition, creating prioritized, small, mergeable GitHub issues from architecture, code, and documentation analysis


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
@CLAassistant
Copy link

CLAassistant commented Nov 11, 2025

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ pethers
❌ Copilot
You have signed the CLA already but the status is still pending? Let us recheck it.

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Copilot AI changed the title [WIP] Create top 5 priority issues for next release Create top 5 priority issues for next release with comprehensive specifications Nov 11, 2025
Copilot AI requested a review from pethers November 11, 2025 23:50
@pethers pethers requested a review from Copilot November 11, 2025 23:52
@github-actions
Copy link

github-actions bot commented Nov 11, 2025

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Snapshot Warnings

⚠️: No snapshots were found for the head SHA 3e49779.
Ensure 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 Files

None

@github-actions
Copy link

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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"
Copy link

Copilot AI Nov 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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}.

Suggested change
ISSUE_DIR="/tmp"
ISSUE_DIR="${ISSUE_DIR:-./scripts/templates}"

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/.


## 📁 Files in This Directory

- **Issue Specifications**: `/tmp/issue{1-5}.md` - Complete issue descriptions
Copy link

Copilot AI Nov 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.


2. **Run Creation Script**
```bash
cd /home/runner/work/cia/cia
Copy link

Copilot AI Nov 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
cd /home/runner/work/cia/cia
cd "$(git rev-parse --show-toplevel)"

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 7bfd681. Changed from hardcoded path to cd "$(git rev-parse --show-toplevel)" which resolves to the repository root in any environment.

Comment on lines 46 to 47
See: `/tmp/issue1.md`

Copy link

Copilot AI Nov 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/).

Suggested change
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._

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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!"
Copy link

Copilot AI Nov 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@pethers
Copy link
Member

pethers commented Nov 11, 2025

@copilot apply changes based on the comments in this thread

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.

Comment on lines 17 to 26
- **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**
Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
- **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:**

Copilot uses AI. Check for mistakes.
`testing`, `enhancement`, `political-analysis`, `analytics`

### Full Specification
See: `/tmp/issue2.md`
Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
See: `/tmp/issue2.md`
See: `docs/issues/issue2.md`

Copilot uses AI. Check for mistakes.
`documentation`, `database`, `enhancement`

### Full Specification
See: `/tmp/issue3.md`
Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
See: `/tmp/issue3.md`
See: [`docs/issue3.md`](docs/issue3.md)

Copilot uses AI. Check for mistakes.
`security`, `dependencies`, `enhancement`

### Full Specification
See: `/tmp/issue4.md`
Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
See: `/tmp/issue4.md`
See: `docs/issue4.md`

Copilot uses AI. Check for mistakes.
`performance`, `database`, `enhancement`, `optimization`

### Full Specification
See: `/tmp/issue5.md`
Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.

To create these issues in GitHub:

1. Copy issue specifications from `/tmp/issue{1-5}.md`
Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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)

Copilot uses AI. Check for mistakes.
- 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>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

ISSUE1_URL="[NOT CREATED]"
fi
echo ""
sleep 2
Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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.

Copilot uses AI. Check for mistakes.
Comment on lines +141 to +148
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);
Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +59 to +67
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:META-INF/cia-service-impl.xml"})
public class PoliticianRulesTest {

@Autowired
private RulesEngine rulesEngine;

@Test
public void testPoliticianLazyRule() {
Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
@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() {

Copilot uses AI. Check for mistakes.
```markdown
## Security Updates - Release X.X.X

### Updated Dependencies
Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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.

Suggested change
### Updated Dependencies
### Updated Dependencies
<!--
NOTE: Replace 'XX' in version numbers below with the actual version numbers discovered and applied during the security audit.
-->

Copilot uses AI. Check for mistakes.
@sonarqubecloud
Copy link

@pethers pethers closed this Nov 13, 2025
@pethers pethers deleted the copilot/prepare-next-release-priorities branch November 13, 2025 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants