Skip to content

fix(zeronym): requeue an unknown anchor once, then burn it - #110

Open
hu55a1n1 wants to merge 3 commits into
hub-flush-unanimous-burnfrom
hub-flush-unknown-anchor
Open

hu55a1n1 wants to merge 3 commits into
hub-flush-unanimous-burnfrom
hub-flush-unknown-anchor

Conversation

@hu55a1n1

@hu55a1n1 hu55a1n1 commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Stacked on #108. GitHub retargets this to main when #108 merges.

What

An unknown anchor, in either word order for sprout, sapling, orchard, and ironwood, is Publish::Anchor. Any other bad txns reason stays Rejected.

A unanimous Anchor is recorded with the observed height of that flush and put back. A later unanimous Anchor burns when the tip is fresh and the observed height is above that mark. The stored height is the first one recorded. A stale tip, or the same height, puts the entry back under the attempt cap.

Anchor beside Retryable, Rejected, or AlreadyMined is Retryable and is not recorded. A later Accepted or AlreadyKnown does not clear a mark. A burn does.

An entry with no bundle key uses its payload hash as the mark and the burn key on this path only. A unanimous Rejected or AlreadyMined still burns bundle keys only.

The anchor requeue is a separate call from the transport requeue. It does not trip SELECTIVE HOLD-BACK, and an anchor that expires is logged on its own line.

Tests

cargo test --manifest-path zeronym/hub/Cargo.toml --lib: 182 passed, 1 ignored.

  • Both word orders are Anchor. A non-anchor bad txns reason stays Rejected.
  • [Anchor, Rejected], [Anchor, AlreadyMined], and [Anchor, Retryable] are Retryable.
  • The first unanimous Anchor requeues. Another at the same height requeues. After the observed height rises, on a fresh tip, it burns.
  • A tip aged past TIP_STALE_AFTER requeues.
  • A resend admitted during the recording flush does not clear the mark.
  • A keyless entry records its payload hash and burns once the height has risen. A keyless Rejected does not store that hash.
  • One Accepted and one Anchor in the same flush does not log SELECTIVE HOLD-BACK.

Pending

Made with Cursor

A unanimous unknown anchor is recorded with the observed height of that flush. A later one burns when the tip is fresh and the observed height is above the mark.

Co-authored-by: Cursor <cursoragent@cursor.com>
@blacksmith-sh

blacksmith-sh Bot commented Nov 3, 2026

Copy link
Copy Markdown

Found 1 test failure on Blacksmith runners:

Failure

Test View Logs
this host disagrees with the PUBLISHED hash./
this host disagrees with the PUBLISHED hash.
View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

…nchor

Co-authored-by: Cursor <cursoragent@cursor.com>

This branch has not been deployed

No deployments
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.

1 participant