Skip to content

Fix logical address scanning and preserve failure history - #49

Merged
randomblocker merged 2 commits into
mainfrom
agent/indexer-address-history
Jul 28, 2026
Merged

Fix logical address scanning and preserve failure history#49
randomblocker merged 2 commits into
mainfrom
agent/indexer-address-history

Conversation

@randomblocker

@randomblocker randomblocker commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

What changed

  • require an exact 40-hex boundary when passively extracting Demos native storage locators
  • refuse to truncate 64-hex DACS-5 logical bundle addresses into invented native addresses
  • persist the first observation of each failed locator in a separate history table
  • keep active dead letters chain-scoped while preserving historical first-seen timestamps across rebuilds

Why

The scanner previously matched the first 40 hex characters inside a 64-hex logical bundle address. It then queried that fabricated locator and produced misleading STORAGE_UNREADABLE dead letters. Chain replacement cleanup also deleted the only copy of firstSeenAt, making old failures look newly discovered after every rebuild.

This change separates native-locator discovery from logical bundle resolution and separates active retry state from historical operator telemetry.

Follow-up

Persistent failure history needs a retention ceiling because arbitrary chain transactions can advertise fabricated locators. This non-blocking follow-up is tracked in #51.

Closes #45.
Closes #46.

Validation

  • npm run typecheck
  • npm test — 131/131
  • npm run build
  • focused scanner, dead-letter, and chain-reset regression tests

Keep both new store tables: artifact_failure_history (this PR, survives
chain resets) and listing_rejections (#57, cleared on reset).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@randomblocker
randomblocker merged commit 66ca9d4 into main Jul 28, 2026
1 check passed
@randomblocker
randomblocker deleted the agent/indexer-address-history branch July 28, 2026 16:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant