Skip to content

feat(server): report renewal targets dropped by an identity change - #423

Open
TarikGul wants to merge 1 commit into
mainfrom
tg/report-pruned-renewal-targets
Open

feat(server): report renewal targets dropped by an identity change#423
TarikGul wants to merge 1 commit into
mainfrom
tg/report-pruned-renewal-targets

Conversation

@TarikGul

Copy link
Copy Markdown
Member

A renewal pass silently discarded targets promised by a previous identity. It counted them in a log line and returned only the survivors, so a host saw a target stop appearing in outcomes with nothing saying why. Raw Account targets are exactly the ones that do not survive a rotation, and the surface has no way to list the ledger, so there was no way to notice or recover.

StatementRenewalReport carries the labels it dropped. The information was already in hand at the pruning site; only the count reached the caller, so this is one additive field rather than new API surface.

Labels come from one function shared with resolve_target, so a pruned entry reads the same as a renewed one, and it derives without an active session because pruning is decided before the ledger is resolved against entropy.

The CLI reports each dropped target with the reason and what to do about it. Both host READMEs now point at report.pruned instead of telling hosts a pruned entry is undetectable.

Scope

Raised twice in review on #417. A reader and an untrack are still missing and are tracked separately: those need decisions this does not, and the report may reduce how much a reader is worth.

Verification

Live through the CLI: /renew against the People chain, period 20682, three targets renewed. The two pruning tests now assert the reported labels, not just that entries were dropped.

A pass silently discarded targets promised by a previous identity. It counted
them in a log line and returned only the survivors, so a host saw a target stop
appearing in `outcomes` with nothing saying why. Raw account targets are exactly
the ones that do not survive a rotation, and the surface has no way to list the
ledger, so there was no way to notice or recover.

`StatementRenewalReport` now carries the labels it dropped. The information was
already in hand at the pruning site; only the count reached the caller.

Labels come from one function shared with `resolve_target`, so a pruned entry
reads the same as a renewed one, and it derives without an active session
because pruning is decided before the ledger is resolved.

Reviewed twice on #417 as a gap this leaves open. A reader and an untrack are
still missing, tracked separately: those need design decisions this does not.
@TarikGul
TarikGul requested a review from a team August 17, 2026 03:42
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.

2 participants