hackathon/docs/tracking/SPRINT_PLANNING.md
Christoph Wagner a489c15cf5 feat: Add complete HSP implementation with integration tests passing
Initial implementation of HTTP Sender Plugin following TDD methodology
  with hexagonal architecture. All 313 tests passing (0 failures).

  This commit adds:
  - Complete domain model and port interfaces
  - All adapter implementations (HTTP, gRPC, file logging, config)
  - Application services (data collection, transmission, backpressure)
  - Comprehensive test suite with 18 integration tests

  Test fixes applied during implementation:
  - Fix base64 encoding validation in DataCollectionServiceIntegrationTest
  - Fix exception type handling in IConfigurationPortTest
  - Fix CompletionException unwrapping in IHttpPollingPortTest
  - Fix sequential batching in DataTransmissionServiceIntegrationTest
  - Add test adapter failure simulation for reconnection tests
  - Use adapter counters for gRPC verification

  Files added:
  - pom.xml with all dependencies (JUnit 5, Mockito, WireMock, gRPC, Jackson)
  - src/main/java: Domain model, ports, adapters, application services
  - src/test/java: Unit tests, integration tests, test utilities
2025-11-20 22:38:55 +01:00

19 KiB

HSP Sprint Planning Board

Project: HTTP Sender Plugin (HSP) Version: 1.0 Last Updated: 2025-11-20 Sprint Duration: 2 weeks Total Sprints: 6 Team Velocity: TBD (will be calculated after Sprint 1)


Sprint Overview

Sprint Duration Story Points Status Start Date End Date Completed Velocity
Sprint 1 Weeks 1-2 38 🎯 Ready TBD TBD 0 -
Sprint 2 Weeks 3-4 42 Pending TBD TBD 0 -
Sprint 3 Weeks 5-6 40 Pending TBD TBD 0 -
Sprint 4 Week 7 35 Pending TBD TBD 0 -
Sprint 5 Week 8 42 Pending TBD TBD 0 -
Sprint 6 Weeks 9-10 35 Pending TBD TBD 0 -

Total Story Points: 232 Target Velocity: 35-40 points per sprint


Sprint 1: Foundation & Quick Wins (Weeks 1-2)

Sprint Goal: Establish project foundation, implement architectural enhancements, and set up TDD workflow

Status: 🎯 Ready to Start Story Points: 38 Team Size: 3-4 developers Planned Velocity: 38 points Actual Velocity: -

User Stories

US-1.1: Implement Rate Limiting

Story Points: 3 Priority: High Status: Not Started Assigned: -

Description: As a system architect, I want to implement rate limiting for HTTP polling so that we don't overwhelm endpoints with requests.

Acceptance Criteria:

  • RateLimitedHttpPollingAdapter decorator created
  • Configurable requests-per-second limit
  • Tests written BEFORE implementation (TDD RED)
  • Implementation passes tests (TDD GREEN)
  • Code refactored for quality (TDD REFACTOR)
  • 95% test coverage achieved
  • Configuration schema updated
  • Integration tests with HttpPollingAdapter

Technical Tasks:

  1. Write failing test for rate limiter (RED)
  2. Implement RateLimitedHttpPollingAdapter (GREEN)
  3. Write tests for configuration loading
  4. Refactor for clarity (REFACTOR)
  5. Add integration tests

Dependencies: None Estimated Effort: 1 day


US-1.2: Implement Backpressure Controller

Story Points: 5 Priority: High Status: Not Started Assigned: -

Description: As a developer, I want backpressure handling so that the system can slow down when the buffer is full.

Acceptance Criteria:

  • BackpressureController class created
  • Buffer monitoring every 100ms
  • Backpressure signal at 80% threshold
  • HTTP polling skip logic implemented
  • Tests written BEFORE implementation (TDD RED)
  • All tests pass (TDD GREEN)
  • 95% test coverage
  • Integration tests with BufferManager

Technical Tasks:

  1. Write failing tests for backpressure detection (RED)
  2. Implement BackpressureController (GREEN)
  3. Write tests for buffer monitoring
  4. Implement polling skip logic
  5. Integration tests with DataCollectionService
  6. Refactor for performance

Dependencies: BufferManager interface defined Estimated Effort: 2 days


US-1.3: Achieve 95%/90% Test Coverage

Story Points: 8 Priority: High Status: Not Started Assigned: QA Engineer + Developers

Description: As a QA engineer, I want to establish comprehensive test coverage so that we meet EN 50716 compliance requirements.

Acceptance Criteria:

  • JaCoCo configured with 95% line, 90% branch thresholds
  • PIT mutation testing configured
  • Maven build fails on coverage threshold violation
  • CI/CD pipeline includes coverage checks
  • MC/DC tests for safety-critical components
  • Coverage reports generated and published
  • Gap analysis document created

Technical Tasks:

  1. Configure JaCoCo plugin in Maven POM
  2. Set up coverage thresholds
  3. Configure PIT mutation testing
  4. Create CI/CD coverage job
  5. Analyze existing coverage gaps
  6. Write missing unit tests
  7. Add MC/DC tests for critical paths
  8. Generate coverage reports

Dependencies: Maven project setup Estimated Effort: 3-5 days


US-1.4: Set Up Maven Project

Story Points: 3 Priority: High Status: Not Started Assigned: Build Engineer

Description: As a build engineer, I want to set up the Maven project structure so that developers can start implementing components.

Acceptance Criteria:

  • Multi-module Maven structure created
  • All dependencies configured (gRPC, Jackson, etc.)
  • JaCoCo configured with thresholds
  • Fat JAR packaging configured
  • Test framework configured (JUnit 5, Mockito, WireMock)
  • Project builds successfully
  • README with build instructions created

Technical Tasks:

  1. Create root pom.xml
  2. Define module structure
  3. Configure dependencies
  4. Configure JaCoCo plugin
  5. Configure maven-assembly-plugin for fat JAR
  6. Set up test dependencies
  7. Create .gitignore
  8. Write README.md

Dependencies: None Estimated Effort: 1 day


US-1.5: Define All Port Interfaces

Story Points: 8 Priority: High Status: Not Started Assigned: Architect + Senior Developer

Description: As an architect, I want to define all port interfaces so that developers can implement adapters independently.

Acceptance Criteria:

  • 8 port interfaces created (3 primary, 5 secondary)
  • Javadoc with requirement traceability
  • Interface contracts defined (method signatures, exceptions)
  • Tests written for each interface contract (TDD)
  • 100% requirement traceability annotations
  • Architecture review approved

Port Interfaces:

  1. Primary Ports:

    • IConfigurationPort
    • IHealthCheckPort
    • ILifecyclePort
  2. Secondary Ports:

    • IHttpPollingPort
    • IGrpcStreamPort
    • ILoggingPort
    • IBufferPort
    • IStatisticsPort

Technical Tasks:

  1. Design interface contracts (workshops)
  2. Write contract tests (TDD RED)
  3. Create interface definitions
  4. Add comprehensive Javadoc
  5. Add @RequirementTrace annotations
  6. Architecture review
  7. Update traceability matrix

Dependencies: None Estimated Effort: 2 days


US-1.6: Implement Domain Models

Story Points: 5 Priority: High Status: Not Started Assigned: Domain Expert + Developer

Description: As a developer, I want immutable domain models so that I can safely share data across threads.

Acceptance Criteria:

  • 4 domain models created (immutable value objects)
  • Tests written BEFORE implementation (TDD RED)
  • JSON serialization supported (Jackson)
  • Base64 encoding implemented (DiagnosticData)
  • 100% test coverage
  • Thread-safety verified

Domain Models:

  1. DiagnosticData (value object)

    • url: String
    • file_data: byte[]
    • timestamp: Instant
    • JSON serialization with Base64
  2. Configuration (value object)

    • collectorSenderCoreAddress: String
    • httpEndpoints: List
    • bufferSize: int
    • All validation rules
  3. HealthCheckResponse (value object)

    • status: String
    • timestamp: Instant
    • endpoints_total: int
    • endpoints_successful: int
    • buffer_usage: int
    • dependencies: List
  4. BufferStatistics (value object)

    • totalPolls: AtomicLong
    • totalErrors: AtomicLong
    • last30sMetrics: Queue

Technical Tasks:

  1. Write tests for immutability (TDD RED)
  2. Write tests for JSON serialization (TDD RED)
  3. Implement DiagnosticData
  4. Implement Configuration
  5. Implement HealthCheckResponse
  6. Implement BufferStatistics
  7. Add Jackson annotations
  8. Write thread-safety tests
  9. Refactor for clarity

Dependencies: None Estimated Effort: 2 days


US-1.7: TDD Training Workshop

Story Points: 3 Priority: High Status: Not Started Assigned: Tech Lead + Architect

Description: As a team lead, I want to train the team on TDD so that everyone follows the RED-GREEN-REFACTOR workflow.

Acceptance Criteria:

  • 4-hour workshop completed
  • TDD principles explained (RED-GREEN-REFACTOR)
  • Live TDD demonstration performed
  • Team practice session completed
  • Git workflow for TDD documented
  • Code review checklist for TDD created
  • All team members certified

Workshop Agenda:

  1. Introduction (30 min)

    • Why TDD?
    • RED-GREEN-REFACTOR cycle
    • Benefits and challenges
  2. Live Demo (60 min)

    • Implement a simple component with TDD
    • Show commit patterns
    • Show test-first workflow
  3. Practice Session (90 min)

    • Pair programming exercise
    • Implement BufferManager with TDD
    • Code review of practice work
  4. Q&A and Best Practices (30 min)

    • Common pitfalls
    • TDD in CI/CD
    • Code review for TDD compliance
  5. Setup and Tools (30 min)

    • IDE test runners
    • Coverage visualization
    • Git workflow

Deliverables:

  • TDD training slides
  • Practice exercise
  • Code review checklist
  • TDD best practices document

Dependencies: None Estimated Effort: 0.5 days (4 hours)


US-1.8: Environment Setup

Story Points: 3 Priority: High Status: Not Started Assigned: All team members

Description: As a developer, I want my development environment set up so that I can start coding.

Acceptance Criteria:

  • JDK 25 installed and verified
  • Maven 3.9+ installed
  • IDE configured (IntelliJ/Eclipse)
  • IDE plugins installed (TDD tools, coverage)
  • Gitea repository cloned
  • Git configured (user, email)
  • CI/CD access verified
  • Build verified locally
  • TDD workflow tested

Setup Checklist:

  1. Software Installation:

    • Install JDK 25 (OpenJDK/Temurin)
    • Install Maven 3.9+
    • Install Git 2.40+
    • Install IDE with Java 25 support
  2. IDE Configuration:

    • Install JUnit runner plugin
    • Install coverage visualization plugin
    • Configure code formatter
    • Configure live test runner
  3. Repository Setup:

    • Clone from Gitea
    • Configure Git user/email
    • Set up SSH keys
    • Verify build: mvn clean compile
  4. TDD Workflow Test:

    • Write simple test (RED)
    • Make test pass (GREEN)
    • Refactor (REFACTOR)
    • Commit with proper message
  5. CI/CD Access:

    • Verify Gitea access
    • Test push to feature branch
    • Verify CI pipeline runs

Dependencies: Gitea repository created Estimated Effort: 1 day (per team member)


Sprint 1 Burndown Chart

Story Points Remaining
38 |█
   |█
36 |█
   |█
32 |█
   |█
28 |█
   |█
24 |█
   |█
20 |█
   |█
16 |█
   |█
12 |█
   |█
8  |█
   |█
4  |█
   |█
0  |█
   +------------------
   Day 1 3 5 7 9 10

Status: Will be updated daily


Sprint 1 Daily Standup Tracking

Day Date Stories In Progress Blockers Completed Today Notes
Day 1 TBD - - - Sprint kickoff
Day 2 TBD - - - -
Day 3 TBD - - - -
Day 4 TBD - - - -
Day 5 TBD - - - -
Day 6 TBD - - - -
Day 7 TBD - - - -
Day 8 TBD - - - -
Day 9 TBD - - - -
Day 10 TBD - - - Sprint review

Sprint 1 Success Criteria

  • All enhancements implemented (rate limiting, backpressure)
  • Maven project builds successfully
  • All port interfaces defined
  • All domain models implemented
  • Test coverage at 95%/90%
  • Zero compilation errors
  • Team trained in TDD
  • All environments set up

Sprint 2: Core Services (Weeks 3-4)

Sprint Goal: Implement business logic and orchestration services

Status: Pending Story Points: 42 Planned Velocity: 38-42 points

User Stories

US-2.1: Implement ConfigurationManager

Story Points: 8 Priority: High Status: Pending Dependencies: IConfigurationPort, Configuration domain model

Acceptance Criteria:

  • Load configuration from JSON file
  • Validate all parameters
  • Terminate on validation failure (exit 1)
  • Log validation errors
  • Tests written first (TDD)
  • 95% test coverage

US-2.2: Implement BufferManager

Story Points: 8 Priority: High Status: Pending Dependencies: IBufferPort defined

Acceptance Criteria:

  • Thread-safe circular buffer (ArrayBlockingQueue)
  • FIFO overflow handling
  • Atomic statistics tracking
  • Tests written first (TDD)
  • Concurrent stress tests pass
  • 95% test coverage

US-2.3: Implement CollectionStatistics

Story Points: 3 Priority: Medium Status: Pending Dependencies: BufferStatistics domain model

Acceptance Criteria:

  • Atomic counters (totalPolls, totalErrors)
  • Time-windowed queue (30s metrics)
  • Thread-safe implementation
  • Tests written first (TDD)
  • 95% test coverage

US-2.4: Implement DataCollectionService

Story Points: 13 Priority: High Status: Pending Dependencies: IHttpPollingPort, IBufferPort, ILoggingPort

Acceptance Criteria:

  • HTTP endpoint polling orchestration
  • Virtual thread pool for concurrent polling
  • Data validation (size limits)
  • JSON serialization with Base64
  • Statistics tracking
  • Tests written first (TDD)
  • Unit tests with mocks pass
  • Integration tests with WireMock pass
  • 95% test coverage

US-2.5: Implement DataTransmissionService

Story Points: 13 Priority: High Status: Pending Dependencies: IGrpcStreamPort, IBufferPort

Acceptance Criteria:

  • Single consumer thread
  • Batch accumulation (4MB or 1s limits)
  • gRPC stream management
  • Reconnection logic (5s retry)
  • receiver_id = 99
  • Tests written first (TDD)
  • Unit tests with mock gRPC pass
  • Integration tests with gRPC test server pass
  • 95% test coverage

Sprint 3: Secondary Adapters (Weeks 5-6)

Sprint Goal: Implement infrastructure adapters for HTTP and logging

Status: Pending Story Points: 40

User Stories Summary

  • US-3.1: Implement HttpPollingAdapter (13 points)
  • US-3.2: Implement ExponentialBackoffAdapter (5 points)
  • US-3.3: Implement FileLoggingAdapter (3 points)
  • US-3.4: Implement GrpcStreamAdapter (13 points)
  • US-3.5: Integration testing (8 points)

Sprint 4: Primary Adapters & Application (Week 7)

Sprint Goal: Complete application entry point and primary adapters

Status: Pending Story Points: 35

User Stories Summary

  • US-4.1: Implement ConfigurationFileAdapter (5 points)
  • US-4.2: Implement HealthCheckController (8 points)
  • US-4.3: Implement HspApplication main (13 points)
  • US-4.4: End-to-end startup tests (13 points)

Sprint 5: Testing & Validation (Week 8)

Sprint Goal: Comprehensive testing and validation

Status: Pending Story Points: 42

User Stories Summary

  • US-5.1: Complete integration test suite (8 points)
  • US-5.2: Execute performance tests (13 points)
  • US-5.3: Execute reliability tests (8 points)
  • US-5.4: Execute compliance tests (5 points)
  • US-5.5: Validate coverage targets (8 points)

Sprint 6: Integration & Deployment (Weeks 9-10)

Sprint Goal: End-to-end integration and deployment preparation

Status: Pending Story Points: 35

User Stories Summary

  • US-6.1: Execute E2E test scenarios (13 points)
  • US-6.2: Finalize documentation (8 points)
  • US-6.3: Create deployable artifacts (5 points)
  • US-6.4: Validate in staging environment (13 points)

Story Point Estimation Guide

Points Complexity Effort Examples
1 Trivial 1-2 hours Simple configuration change
2 Simple 2-4 hours Simple utility class
3 Small 4-8 hours Domain model, simple adapter
5 Medium 1-2 days Complex adapter, service with dependencies
8 Large 2-3 days Core service, complex integration
13 Very Large 3-5 days Major component, multiple dependencies
21 Epic 5+ days Should be broken down into smaller stories

Definition of Done (DoD)

Code Complete

  • Tests written BEFORE implementation (TDD RED)
  • All tests pass (TDD GREEN)
  • Code refactored for quality (TDD REFACTOR)
  • 95% line coverage, 90% branch coverage
  • Zero critical bugs
  • Code follows style guide
  • Javadoc complete with @RequirementTrace

Review Complete

  • Code review approved (2 approvers)
  • TDD workflow verified in commits
  • Architecture review passed (if applicable)
  • Security review passed (if applicable)

Integration Complete

  • Merged to develop branch
  • CI/CD pipeline passes
  • No merge conflicts
  • Integration tests pass

Documentation Complete

  • Javadoc updated
  • README updated (if applicable)
  • Traceability matrix updated
  • User documentation updated (if applicable)

Retrospective Template

What Went Well

  • TBD after Sprint 1

What Could Be Improved

  • TBD after Sprint 1

Action Items

  • TBD after Sprint 1

Velocity Tracking

Sprint Planned Points Completed Points Velocity Trend
Sprint 1 38 - - -
Sprint 2 42 - - -
Sprint 3 40 - - -
Sprint 4 35 - - -
Sprint 5 42 - - -
Sprint 6 35 - - -

Target Average Velocity: 35-40 points per sprint


Risk Register (Sprint Level)

Risk Sprint Probability Impact Mitigation
TDD adoption resistance Sprint 1 Medium High Mandatory training, pair programming
Coverage targets not met Sprint 1 Medium High Start early, allocate time, QA support
gRPC complexity Sprint 3 Medium High Early prototype, expert on team
Performance issues Sprint 5 Low High Early benchmarking, profiling tools

Notes

  • Sprint planning happens on Day 1 of each sprint
  • Daily standups at 9:00 AM (15 minutes)
  • Sprint review on last day of sprint (2 hours)
  • Sprint retrospective after review (1 hour)
  • TDD compliance is mandatory (enforced in code review)
  • Burndown charts updated daily
  • Velocity calculated after each sprint

Last Update: 2025-11-20 Next Sprint Planning: Sprint 1 Kickoff