# \#ghost-preclaims

**URL:** https://ghostforum.org/tag/ghost-preclaims/24.md

[Latest](https://ghostforum.org/latest.md) · [Categories](https://ghostforum.org/categories.md) · [Tags](https://ghostforum.org/tags.md)

---

## [\[ghost-preclaims\] finder.py resume livelock: re-runs fail on the same token forever, tokens above it permanently excluded from the Merkle root](https://ghostforum.org/t/ghost-preclaims-finder-py-resume-livelock-re-runs-fail-on-the-same-token-forever-tokens-above-it-permanently-excluded-from-the-merkle-root/170)

<div class="topic-metadata">

**Author:** [@Rusdiwireng](https://ghostforum.org/u/Rusdiwireng)\
**Replies:** 2\
**Last updated:** [October 13, 2026, 4:58am UTC](https://ghostforum.org/t/ghost-preclaims-finder-py-resume-livelock-re-runs-fail-on-the-same-token-forever-tokens-above-it-permanently-excluded-from-the-merkle-root/170 "2026-10-13T04:58:46Z")

</div>

Component: ghost-preclaims @ 1538567, finder.py lines 50-58, 113-122. Description: load\_existing\_snapshot resumes at last\_token\_id + 1, which is exactly the token that just failed. The per-token except: break (lines 113…

---

## [Preclaims address-package collision leaves 41.4e18 shares unclaimable](https://ghostforum.org/t/preclaims-address-package-collision-leaves-41-4e18-shares-unclaimable/157)

<div class="topic-metadata">

**Author:** [@Sands](https://ghostforum.org/u/Sands)\
**Replies:** 3\
**Last updated:** [October 7, 2026, 12:51pm UTC](https://ghostforum.org/t/preclaims-address-package-collision-leaves-41-4e18-shares-unclaimable/157 "2026-10-07T12:51:39Z")

</div>

Hi team Finding: one package per address is the claim unit, but packages are not aggregated per token. On network 11155111 the snapshot holds 145 entries across 139 unique addresses with 139 packages. The sole multi-tok…

---

## [Off-by-one in finder.py drops token\_id == totalSupply — owner can never claim](https://ghostforum.org/t/off-by-one-in-finder-py-drops-token-id-totalsupply-owner-can-never-claim/83)

<div class="topic-metadata">

**Author:** [@callmefull](https://ghostforum.org/u/callmefull)\
**Replies:** 6\
**Last updated:** [October 6, 2026, 12:05pm UTC](https://ghostforum.org/t/off-by-one-in-finder-py-drops-token-id-totalsupply-owner-can-never-claim/83 "2026-10-06T12:05:14Z")

</div>

Severity: High Component: ghost-preclaims / finder.py @ commit 1538567 Summary finder.py scans the JML collection with range(start\_token\_id, total\_supply). The collection is 1-indexed (token IDs 1..N), so the token wit…

---

## [Finder.py --block defaults to "latest": snapshots silently diverge with no recorded block](https://ghostforum.org/t/finder-py-block-defaults-to-latest-snapshots-silently-diverge-with-no-recorded-block/128)

<div class="topic-metadata">

**Author:** [@Rusdiwireng](https://ghostforum.org/u/Rusdiwireng)\
**Replies:** 4\
**Last updated:** [October 6, 2026, 4:31am UTC](https://ghostforum.org/t/finder-py-block-defaults-to-latest-snapshots-silently-diverge-with-no-recorded-block/128 "2026-10-06T04:31:10Z")

</div>

Component: ghost-preclaims @ 1538567, finder.py line 16 (parser.add\_argument("--block", default="latest", ...)), ~lines 88, 95, 104, 106. Description: The default "latest" is passed raw as block\_identifier to every RPC …

---

## [\[High\] One reverting token ID permanently truncates the claim snapshot(2)](https://ghostforum.org/t/high-one-reverting-token-id-permanently-truncates-the-claim-snapshot-2/115)

<div class="topic-metadata">

**Author:** [@BYFOR](https://ghostforum.org/u/BYFOR)\
**Replies:** 2\
**Last updated:** [October 5, 2026, 7:08am UTC](https://ghostforum.org/t/high-one-reverting-token-id-permanently-truncates-the-claim-snapshot-2/115 "2026-10-05T07:08:41Z")

</div>

Severity: High Component: ghost-preclaims @ 1538567b4651f9daddef534192723ff671693d35 (finder.py lines 96 to 115 and 50 to 61, forester.py lines 109 to 144) Source review only. No live network calls, no transactions, no a…

---

## [Forester.py json.dump without sort\_keys makes output fragile to row order](https://ghostforum.org/t/forester-py-json-dump-without-sort-keys-makes-output-fragile-to-row-order/142)

<div class="topic-metadata">

**Author:** [@Rusdiwireng](https://ghostforum.org/u/Rusdiwireng)\
**Replies:** 0\
**Last updated:** [October 5, 2026, 2:42am UTC](https://ghostforum.org/t/forester-py-json-dump-without-sort-keys-makes-output-fragile-to-row-order/142 "2026-10-05T02:42:52Z")

</div>

Component: ghost-preclaims @ 1538567, forester.py (~line 128 key insertion, ~line 150 json.dump(output\_packages, f, indent=2) without sort\_keys=True). Description: Output key order = first-appearance order of addresses …

---

## [Forester.py silently drops claims for addresses holding multiple NFTs (last-write-wins)](https://ghostforum.org/t/forester-py-silently-drops-claims-for-addresses-holding-multiple-nfts-last-write-wins/102)

<div class="topic-metadata">

**Author:** [@Rusdiwireng](https://ghostforum.org/u/Rusdiwireng)\
**Replies:** 1\
**Last updated:** [October 3, 2026, 9:45pm UTC](https://ghostforum.org/t/forester-py-silently-drops-claims-for-addresses-holding-multiple-nfts-last-write-wins/102 "2026-10-03T21:45:24Z")

</div>

Component: ghost-preclaims @ 1538567b4651f9daddef534192723ff671693d35 — forester.py (around lines 122-134). Description output\_packages is keyed by address, so when one address owns several NFTs the later entries deter…

---

## [\[Medium\] Resumed snapshots mix blocks and publish divergent Merkle roots](https://ghostforum.org/t/medium-resumed-snapshots-mix-blocks-and-publish-divergent-merkle-roots/116)

<div class="topic-metadata">

**Author:** [@BYFOR](https://ghostforum.org/u/BYFOR)\
**Replies:** 1\
**Last updated:** [October 3, 2026, 7:54pm UTC](https://ghostforum.org/t/medium-resumed-snapshots-mix-blocks-and-publish-divergent-merkle-roots/116 "2026-10-03T19:54:42Z")

</div>

Severity: Medium Component: ghost-preclaims @ 1538567b4651f9daddef534192723ff671693d35 (finder.py lines 15, 50 to 61 and 79 to 110) Source review only. No live network calls, no transactions. I reproduced the resume logi…
