HarperFast / HarperFast/harper-pro

Replication observability: produce-side pending — distinguish "nothing-to-send" (idle) vs "cannot-send" (peer waiting/backpressured)

Open
#597 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
3
Forks
0
Avg merge
1d 21h
Merged PRs (30d)
80

Description

**Fold-in from Chris Nelson's replication-monitoring wishlist (item #1, 2026-07-15).** Promoted out of the #532 coverage-map comment into a tracked sub-issue of #437 (W8) so it can't be skipped when the Tier-1 checklist is worked.

## Problem
Receive-side timestamps conflate **idle** with **broken** — a link with nothing to send looks the same as a link that has txns queued but cannot deliver them, so we can never alert on lag alone. Core is the only layer that knows whether txns are actually *waiting for a peer*. Chris called this the single most valuable observability item.

## Ask
Expose a first-class **produce-side** signal per link that distinguishes:
- **nothing-to-send** — nothing queued, link legitimately idle, and
- **cannot-send** — txns queued/pending and blocked on the peer (peer waiting / backpressured / down).

This is the produce-side complement to #437 Tier-1 "Audit/transaction-log backlog depth (pending between cursor and head)" — backlog depth answers *how much*, this answers *why it isn't draining*.

## Acceptance criteria
- An operator (and a scrapable metric under #437 Tier 2 / harper#1636) can tell "link idle" apart from "link has pending txns it cannot send" **without** inferring from receive-side timestamps.

---
🤖 Filed by KrAIs on behalf of Kris.

Contributor guide

Open the contributing guide

Research direction

Start by reading the linked Tier-1 checklist in #437 and the referenced coverage-map discussion in #532 to understand the replication-link model and existing backlog signals. Identify the core produce-side state that can distinguish an idle link from queued transactions blocked on a peer. Done means operators can distinguish those states without receive-side timestamps; the issue also references a scrapable metric under #437 Tier 2 / harper#1636.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, nodejs
Domain
observability
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.