Skip to content

Windows headless miner retries a rejected header every poll and hides the server diagnostic #7368

@lazyGPT07

Description

@lazyGPT07

Summary

The Windows headless miner retries the same rejected signed header every 10 seconds for the entire eligible slot, while its console output only reports FAIL and omits the response diagnostic stored in last_header_error.

Steps to reproduce

  1. Run miners/windows/rustchain_windows_miner.py --headless against a node where the wallet becomes eligible but signed-header ingestion rejects the request.
  2. Wait for an eligible slot.
  3. Observe the process log and incoming requests until the slot changes.

Live reproduction on June 11, 2026:

  • Eligibility returned eligible: true, slot 27455.
  • POST /headers/ingest_signed returned HTTP 403: {"error":"no pubkey registered for miner","ok":false}.
  • The miner submitted 108 rejected headers for that same slot at ten-second intervals.
  • Headless output showed only increasing submitted counts and FAIL, without the HTTP 403 reason.

Expected behavior

A miner should attempt a given slot at most once, whether the node accepts or rejects the header. A failed headless event should include the safe response diagnostic so an operator can fix registration or node configuration.

Actual behavior

Deduplication uses _last_submitted_slot, which is updated only after success. Rejections therefore remain eligible for another attempt on every polling cycle. _format_headless_event() also discards last_header_error.

Impact

This creates unnecessary request load during a failed eligible slot and obscures the actionable cause from operators. The observed failure generated 108 redundant submissions before the slot rotated.

A focused fix with regression coverage is ready on lazyGPT07:fix/windows-header-attempt-diagnostics.

Metadata

Metadata

Assignees

No one assigned

    Labels

    triagedReviewed and categorized

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions