Skip to content

Conversation

@jwilger
Copy link
Owner

@jwilger jwilger commented Dec 29, 2025

Summary

  • Create ADR-027: Projector Poll and Retry Configuration

    • Captures the still-valid poll config and event retry config from ADR-024
    • Documents two separate configuration concerns with clear rationale
    • References ADR-026 for coordination (no heartbeat needed)
  • Mark ADR-024 as fully superseded

    • Superseded by ADR-027 (configuration) and ADR-026 (coordination)
    • Retained for historical context only
  • Remove stale heartbeat references from projection.rs doc comments

  • Add .github-project configuration file

This properly separates the still-valid configuration guidance (ADR-027) from the superseded heartbeat/liveness detection (handled by ADR-026's session-scoped advisory locks on dedicated connections).

Related Issues Updated (outside this PR):

Test plan

  • cargo fmt --all passes
  • cargo clippy --all-targets --all-features -- -D warnings passes
  • cargo nextest run --workspace passes (150 tests)

Closes #237 partially (documentation alignment only)

Copy link

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Documentation changes are correct for the lines modified, but ADR-024 needs more comprehensive updates.

The PR correctly marks the Heartbeat Configuration section as superseded, but ADR-024 contains extensive heartbeat discussion throughout the Rationale and Alternatives sections (lines 130-236) that remains unmarked. This creates confusion: readers see "superseded by ADR-026" in one section, then encounter multiple sections explaining heartbeat design decisions as current guidance.

Specific stale content still present:

  • Line 140: Table row for "Heartbeat interval"
  • Lines 148, 150: Examples with heartbeat_interval parameters
  • Lines 156-170: Two sections explaining heartbeat design rationale
  • Lines 185, 192: Consequences mentioning heartbeat
  • Line 204: Constraint about heartbeat mechanism
  • Lines 210, 220-236: Alternatives discussing heartbeat approaches

Recommendation: Either strike through these sections with supersession notes, or move them to a "Historical Context" appendix. ADR documents should preserve history, but make it clear what's current vs superseded.

- Create ADR-027 for Projector Poll and Retry Configuration
  - Captures the still-valid poll config and event retry config from ADR-024
  - Documents two separate configuration concerns with clear rationale
  - References ADR-026 for coordination (no heartbeat needed)

- Mark ADR-024 as fully superseded
  - Superseded by ADR-027 (configuration) and ADR-026 (coordination)
  - Retained for historical context only

- Remove stale heartbeat references from projection.rs doc comments

This properly separates the still-valid configuration guidance (ADR-027)
from the superseded heartbeat/liveness detection (handled by ADR-026's
session-scoped advisory locks on dedicated connections).
@jwilger jwilger force-pushed the fix/237-align-issues-with-architecture branch from 1b7f4ad to 91bf43d Compare December 29, 2025 23:47
claude[bot]
claude bot previously requested changes Dec 29, 2025
Copy link

@claude claude bot left a comment

Choose a reason for hiding this comment

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

ADR-024 body still contains extensive heartbeat content (lines 104-111, 140-142, 150, 158-170, 187, 194, 222-238) presenting it as current guidance, contradicting the supersession note. This creates confusion: header says heartbeat was eliminated by ADR-026, but body explains heartbeat design in detail.

Recommendation: Strike through these sections with inline supersession notes, or move them to a "Historical Context" appendix. ADR-027 correctly extracts the still-valid content, but ADR-024 needs cleanup to match its superseded status.

@jwilger
Copy link
Owner Author

jwilger commented Dec 29, 2025

ADR-024 body still contains extensive heartbeat content (lines 104-111, 140-142, 150, 158-170, 187, 194, 222-238) presenting it as current guidance, contradicting the supersession note. This creates confusion: header says heartbeat was eliminated by ADR-026, but body explains heartbeat design in detail.

Recommendation: Strike through these sections with inline supersession notes, or move them to a "Historical Context" appendix. ADR-027 correctly extracts the still-valid content, but ADR-024 needs cleanup to match its superseded status.

No, that's not how ADRs work. If it says it's superseded, then it's superseded. We don't cross out the whole damned document.

@jwilger jwilger dismissed claude[bot]’s stale review December 29, 2025 23:50

Invalid reasoning. Misunderstanding of ADR process.

@jwilger jwilger merged commit c25fba4 into main Dec 29, 2025
20 checks passed
@jwilger jwilger deleted the fix/237-align-issues-with-architecture branch December 29, 2025 23:52
@jwilger jwilger mentioned this pull request Dec 29, 2025
jwilger added a commit that referenced this pull request Dec 31, 2025
## 🤖 New release

* `eventcore-macros`: 0.4.0 -> 0.5.0
* `eventcore-types`: 0.4.0 -> 0.5.0 (✓ API compatible changes)
* `eventcore-postgres`: 0.4.0 -> 0.5.0 (✓ API compatible changes)
* `eventcore`: 0.4.0 -> 0.5.0 (⚠ API breaking changes)
* `eventcore-memory`: 0.4.0 -> 0.5.0 (✓ API compatible changes)
* `eventcore-testing`: 0.4.0 -> 0.5.0 (✓ API compatible changes)

### ⚠ `eventcore` breaking changes

```text
--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.45.0/src/lints/enum_variant_added.ron

Failed in:
  variant ProjectionError:LeadershipError in /tmp/.tmpKfk26o/eventcore/eventcore/src/projection.rs:532
```

<details><summary><i><b>Changelog</b></i></summary><p>

## `eventcore-macros`

<blockquote>

##
[0.3.0](eventcore-macros-v0.2.0...eventcore-macros-v0.3.0)
- 2025-12-27

### Refactoring

- *(release)* switch to workspace version inheritance for full lockstep
versioning ([#221](#221))
</blockquote>

## `eventcore-types`

<blockquote>

##
[0.5.0](eventcore-types-v0.4.0...eventcore-types-v0.5.0)
- 2025-12-31

### Features

- add ProjectorCoordinator trait and PostgreSQL advisory lock
implementation ([#259](#259))
- implement run_projection free function (ADR-029)
([#263](#263))
</blockquote>

## `eventcore-postgres`

<blockquote>

##
[0.5.0](eventcore-postgres-v0.4.0...eventcore-postgres-v0.5.0)
- 2025-12-31

### Features

- add ProjectorCoordinator trait and PostgreSQL advisory lock
implementation ([#259](#259))
- implement run_projection free function (ADR-029)
([#263](#263))
</blockquote>

## `eventcore`

<blockquote>

##
[0.5.0](eventcore-v0.4.0...eventcore-v0.5.0)
- 2025-12-31

### Documentation

- align issues and ADRs with ARCHITECTURE.md guidance
([#256](#256))

### Features

- implement run_projection free function (ADR-029)
([#263](#263))
</blockquote>

## `eventcore-memory`

<blockquote>

##
[0.5.0](eventcore-memory-v0.4.0...eventcore-memory-v0.5.0)
- 2025-12-31

### Features

- add ProjectorCoordinator trait and PostgreSQL advisory lock
implementation ([#259](#259))
- implement run_projection free function (ADR-029)
([#263](#263))
</blockquote>

## `eventcore-testing`

<blockquote>

##
[0.5.0](eventcore-testing-v0.4.0...eventcore-testing-v0.5.0)
- 2025-12-31

### Features

- add ProjectorCoordinator trait and PostgreSQL advisory lock
implementation ([#259](#259))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).
@jwilger jwilger mentioned this pull request Jan 2, 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.

Poll-Based Projector System

2 participants