Skip to content

draft: testing dips#1319

Draft
MoonBoi9001 wants to merge 6 commits intoindexing-payments-management-audit-fix-reducedfrom
mb9/dips-local-testing-fixes
Draft

draft: testing dips#1319
MoonBoi9001 wants to merge 6 commits intoindexing-payments-management-audit-fix-reducedfrom
mb9/dips-local-testing-fixes

Conversation

@MoonBoi9001
Copy link
Copy Markdown
Member

No description provided.

MoonBoi9001 and others added 3 commits April 13, 2026 13:19
HorizonStaking's constructor extends GraphDirectory, which queries the
Controller for GraphToken, EpochManager, RewardsManager, etc. These are
registered by GraphPeripheryModule. Without an explicit `after` dependency,
Ignition may schedule HorizonStaking before the periphery registrations,
causing the constructor to read address(0) and revert with
GraphDirectoryInvalidZeroAddress.

Every other core module (GraphPayments, PaymentsEscrow, GraphTallyCollector,
RecurringCollector) declares this dependency. HorizonStaking was the only
outlier.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add IRecurringCollector to GraphHorizonContracts interface
- Re-export IRecurringCollector from interfaces main entrypoint
- Add encodeCollectIndexingFeesData() helper for indexing fee collection
- Add decoders: decodeSignedRCA, decodeAcceptIndexingAgreementMetadata,
  decodeIndexingAgreementTermsV1
- Add round-trip tests for all decoders and encoder
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 15, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.86%. Comparing base (0bbb476) to head (dacb4b8).

Additional details and impacted files
@@                               Coverage Diff                               @@
##           indexing-payments-management-audit-fix-reduced    #1319   +/-   ##
===============================================================================
  Coverage                                           90.86%   90.86%           
===============================================================================
  Files                                                  81       81           
  Lines                                                5274     5274           
  Branches                                              949      949           
===============================================================================
  Hits                                                 4792     4792           
  Misses                                                453      453           
  Partials                                               29       29           
Flag Coverage Δ
unittests 90.86% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

MoonBoi9001 and others added 3 commits April 15, 2026 23:29
The audit-branch SubgraphService.sol now depends on four external
libraries (StakeClaims, AllocationHandler, IndexingAgreement,
IndexingAgreementDecoder) and a fifth constructor argument for the
RecurringCollector, but the Ignition deploy module was not updated to
match. Deploys fail at validation time with IGN716 (missing libraries)
and IGN703 (4 args expected 5), blocking any fresh hardhat deployment.

Deploy the four libraries up-front via m.library() and pass them
through deployImplementation's libraries option so the bytecode
placeholders resolve. Thread the RecurringCollector address from the
horizon deployment into the $global patch in deploy.ts, and add a
recurringCollectorAddress placeholder to both the default and
localNetwork protocol configs so Ignition can getParameter() it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ignition's validator walks each deployed library's bytecode, so it is
not enough to link the four libraries into SubgraphService and stop
there. IndexingAgreement calls into IndexingAgreementDecoder, which
calls into IndexingAgreementDecoderRaw, so both transitive links have
to be declared up-front or the deploy aborts on IGN716 while validating
the library futures themselves.

Deploy IndexingAgreementDecoderRaw first, link it into the Decoder,
and link the Decoder into IndexingAgreement. SubgraphService keeps its
existing four links unchanged.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The audit-branch RecurringCollectionAgreement struct added a uint16
conditions field at position 9 (between maxSecondsPerCollection and
nonce). The toolshed decoder tuple was missing it, so decodeSignedRCA
read 10 fields against 11 ABI-encoded fields: nonce read what was
actually conditions, metadata read the wrong offset, decode threw.

The indexer-agent relies on this decoder to read pending RCA proposals
the indexer-service persists. Without the fix, every proposal logs
"Failed to decode pending RCA proposal" and is skipped, so the agent
never calls acceptIndexingAgreement on-chain and DIPs agreements
expire in dipper's DB.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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