Skip to content

Conversation

@neekolas
Copy link
Contributor

@neekolas neekolas commented Jun 3, 2025

Macroscope is automatically generating a summary of this pull request...

_Macroscope is automatically generating a summary of this pull request..._

Summary by CodeRabbit

  • New Features
    • Added support for updating payer report submission status with controlled status transitions.
    • Improved event handling to parse and store payer report submissions using contract domain data.
  • Bug Fixes
    • Enhanced error handling and idempotency in storing and updating payer report states.
  • Refactor
    • Changed database dependency injection to use raw database connections for report management.
    • Extended internal interfaces and methods for consistent report storage and submission status updates.
  • Tests
    • Expanded tests to cover payer report submission event processing and idempotency.
    • Added helpers for constructing detailed event logs in tests.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jun 3, 2025

Walkthrough

This change introduces a new mechanism to update the submission_status field for payer reports in the database, including SQL queries, Go methods, and interface updates. It refactors contract and storer constructors to accept a database handle, adds new store and mock methods for report submission status, and updates related tests for consistency.

Changes

File(s) Change Summary
pkg/db/queries/payerReports.sql.go, pkg/db/sqlc/payerReports.sql Added SQL and Go methods to update submission_status for payer reports, mirroring existing attestation logic.
pkg/payerreport/interface.go, pkg/payerreport/store.go, pkg/mocks/payerreport/mock_IPayerReportStore.go Extended IPayerReportStore interface and store implementation with StoreReport and SetReportSubmissionStatus methods; added mocks.
pkg/indexer/settlement_chain/contracts/payer_report_manager.go, pkg/indexer/settlement_chain/contracts/payer_report_manager_storer.go Refactored constructors to use *sql.DB instead of queries; enhanced storer to handle submission events and status updates.
pkg/indexer/settlement_chain/contracts/payer_report_manager_storer_test.go, pkg/indexer/settlement_chain/settlement_chain.go Updated test and contract setup to match new constructor signatures using *sql.DB.
pkg/payerreport/store_test.go, pkg/payerreport/workers/attestation_test.go Updated tests to use value-based ReportID handling and new StoreReport signature.
pkg/testutils/contracts.go Added helper to build PayerReportSubmitted event logs for testing.

Sequence Diagram(s)

sequenceDiagram
    participant Contract as PayerReportManager (contract)
    participant Storer as PayerReportManagerStorer
    participant Store as IPayerReportStore/Store
    participant DB as Database

    Contract->>Storer: Emit PayerReportSubmitted event
    Storer->>Storer: Parse event, build ReportID
    Storer->>Store: StoreReport(ctx, report)
    Store->>DB: INSERT INTO payer_reports ...
    Store-->>Storer: error or success
    Storer->>Store: SetReportSubmissionStatus(ctx, reportID, [Pending], Submitted)
    Store->>DB: UPDATE payer_reports SET submission_status=... WHERE id=... AND submission_status IN (...)
    Store-->>Storer: error or success
    Storer-->>Contract: Return (with error handling)
Loading

Suggested reviewers

  • mkysel

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (1.64.8)

Error: you are using a configuration file for golangci-lint v2 with golangci-lint v1: please use golangci-lint v2
Failed executing command with error: you are using a configuration file for golangci-lint v2 with golangci-lint v1: please use golangci-lint v2


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c14e4fe and 36c895d.

📒 Files selected for processing (12)
  • pkg/db/queries/payerReports.sql.go (1 hunks)
  • pkg/db/sqlc/payerReports.sql (1 hunks)
  • pkg/indexer/settlement_chain/contracts/payer_report_manager.go (3 hunks)
  • pkg/indexer/settlement_chain/contracts/payer_report_manager_storer.go (4 hunks)
  • pkg/indexer/settlement_chain/contracts/payer_report_manager_storer_test.go (4 hunks)
  • pkg/indexer/settlement_chain/settlement_chain.go (1 hunks)
  • pkg/mocks/payerreport/mock_IPayerReportStore.go (1 hunks)
  • pkg/payerreport/interface.go (2 hunks)
  • pkg/payerreport/store.go (2 hunks)
  • pkg/payerreport/store_test.go (13 hunks)
  • pkg/payerreport/workers/attestation_test.go (1 hunks)
  • pkg/testutils/contracts.go (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (12)
  • pkg/payerreport/workers/attestation_test.go
  • pkg/indexer/settlement_chain/settlement_chain.go
  • pkg/db/sqlc/payerReports.sql
  • pkg/payerreport/interface.go
  • pkg/payerreport/store_test.go
  • pkg/indexer/settlement_chain/contracts/payer_report_manager.go
  • pkg/testutils/contracts.go
  • pkg/payerreport/store.go
  • pkg/db/queries/payerReports.sql.go
  • pkg/indexer/settlement_chain/contracts/payer_report_manager_storer_test.go
  • pkg/indexer/settlement_chain/contracts/payer_report_manager_storer.go
  • pkg/mocks/payerreport/mock_IPayerReportStore.go
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor Author

neekolas commented Jun 3, 2025

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • Queue - adds this PR to the back of the merge queue
  • Hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@neekolas neekolas mentioned this pull request Jun 3, 2025
@macroscopeapp
Copy link

macroscopeapp bot commented Jun 3, 2025

Add log storer by persisting PayerReportSubmitted events to the database and transitioning submission_status from Pending to Submitted via contracts.PayerReportManagerStorer.StoreLog

📍Where to Start

Start with contracts.PayerReportManagerStorer.StoreLog in payer_report_manager_storer.go, then review setReportSubmitted and the new DB queries in payerReports.sql.go.


Macroscope summarized 66af1da.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
pkg/indexer/settlement_chain/contracts/payer_report_manager_storer.go (1)

128-130: Address the TODO: Add end_minutes_since_epoch to the contract

The EndMinuteSinceEpoch field is hardcoded to 0, which may affect report processing accuracy.

Would you like me to create an issue to track adding the end_minutes_since_epoch field to the smart contract?

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 739e5f2 and 1ab94ed.

📒 Files selected for processing (11)
  • pkg/db/queries/payerReports.sql.go (1 hunks)
  • pkg/db/sqlc/payerReports.sql (1 hunks)
  • pkg/indexer/settlement_chain/contracts/payer_report_manager.go (3 hunks)
  • pkg/indexer/settlement_chain/contracts/payer_report_manager_storer.go (4 hunks)
  • pkg/indexer/settlement_chain/contracts/payer_report_manager_storer_test.go (1 hunks)
  • pkg/indexer/settlement_chain/settlement_chain.go (1 hunks)
  • pkg/mocks/payerreport/mock_IPayerReportStore.go (1 hunks)
  • pkg/payerreport/interface.go (2 hunks)
  • pkg/payerreport/store.go (2 hunks)
  • pkg/payerreport/store_test.go (13 hunks)
  • pkg/payerreport/workers/attestation_test.go (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
pkg/indexer/settlement_chain/contracts/payer_report_manager_storer.go (1)
Learnt from: fbac
PR: xmtp/xmtpd#847
File: pkg/indexer/settlement_chain/contracts/payer_registry_storer.go:67-81
Timestamp: 2025-05-26T10:52:06.726Z
Learning: In pkg/indexer/settlement_chain/contracts/payer_registry_storer.go, the StoreLog method currently only logs events without storing them in the database. The actual database storage implementation is planned for a future PR, so this is intentionally incomplete as a placeholder.
🧬 Code Graph Analysis (6)
pkg/payerreport/interface.go (2)
pkg/payerreport/report.go (3)
  • PayerReport (69-83)
  • ReportID (63-63)
  • SubmissionStatus (47-47)
pkg/db/queries/models.go (1)
  • PayerReport (65-76)
pkg/indexer/settlement_chain/contracts/payer_report_manager.go (2)
pkg/db/queries/db.go (1)
  • New (19-21)
pkg/indexer/settlement_chain/contracts/payer_report_manager_storer.go (1)
  • NewPayerReportManagerStorer (40-64)
pkg/db/queries/payerReports.sql.go (2)
pkg/payerreport/report.go (1)
  • ReportID (63-63)
pkg/db/queries/db.go (1)
  • Queries (23-25)
pkg/payerreport/store.go (3)
pkg/payerreport/report.go (3)
  • PayerReport (69-83)
  • ReportID (63-63)
  • SubmissionStatus (47-47)
pkg/db/queries/models.go (1)
  • PayerReport (65-76)
pkg/db/queries/payerReports.sql.go (1)
  • SetReportSubmissionStatusParams (518-522)
pkg/mocks/payerreport/mock_IPayerReportStore.go (1)
pkg/payerreport/report.go (3)
  • ReportID (63-63)
  • SubmissionStatus (47-47)
  • PayerReport (69-83)
pkg/indexer/settlement_chain/contracts/payer_report_manager_storer.go (6)
pkg/payerreport/interface.go (1)
  • IPayerReportStore (37-75)
pkg/indexer/common/interface.go (1)
  • ILogStorer (13-15)
pkg/payerreport/store.go (1)
  • NewStore (38-44)
pkg/abi/payerreportmanager/PayerReportManager.go (1)
  • PayerReportManagerPayerReportSubmitted (1143-1152)
pkg/errors/errors.go (3)
  • NewNonRecoverableError (27-29)
  • RetryableError (5-8)
  • NewRecoverableError (48-50)
pkg/payerreport/report.go (3)
  • ReportID (63-63)
  • BuildPayerReportID (141-170)
  • SubmissionStatus (47-47)
⏰ Context from checks skipped due to timeout of 90000ms (5)
  • GitHub Check: Push Docker Images to GitHub Packages (xmtpd)
  • GitHub Check: Push Docker Images to GitHub Packages (xmtpd-cli)
  • GitHub Check: Test (Node)
  • GitHub Check: Upgrade Tests
  • GitHub Check: Code Review
🔇 Additional comments (12)
pkg/indexer/settlement_chain/settlement_chain.go (1)

76-76: LGTM: Improved abstraction by passing raw database handle.

The change from querier to db aligns with the constructor signature update for NewPayerReportManager. This allows the manager to handle its own query instantiation internally, providing better abstraction.

pkg/payerreport/workers/attestation_test.go (1)

52-54: LGTM: Simplified method signature reduces unnecessary return values.

The changes reflect the updated StoreReport method signature that now returns only an error instead of (*ReportID, error). Since the report ID is already available in report.ID, there's no need to return it from the store method, which simplifies the API.

pkg/indexer/settlement_chain/contracts/payer_report_manager_storer_test.go (1)

99-99: LGTM: Test updated to match new constructor signature.

The change correctly updates the test setup to pass the raw database handle db directly to NewPayerReportManagerStorer, aligning with the constructor refactor that now accepts *sql.DB instead of *queries.Queries.

pkg/db/sqlc/payerReports.sql (1)

151-155: LGTM: Well-structured query follows established patterns.

The new SetReportSubmissionStatus query correctly mirrors the existing SetReportAttestationStatus pattern and implements good practices:

  • Uses conditional updates with IN (sqlc.slice(prev_status)) to ensure safe state transitions
  • Follows consistent naming and parameter binding conventions
  • Prevents invalid state changes through the WHERE clause condition

This addition properly supports the new submission status tracking functionality.

pkg/payerreport/interface.go (1)

38-38: LGTM! Well-designed interface changes.

The interface updates are well-structured:

  1. StoreReport signature simplification makes sense since the PayerReport already contains its ID field
  2. SetReportSubmissionStatus follows the established pattern of SetReportAttestationStatus, maintaining consistency in the interface design

Also applies to: 68-73

pkg/indexer/settlement_chain/contracts/payer_report_manager.go (1)

35-44: LGTM! Constructor refactoring is well-implemented.

The changes appropriately refactor the constructor to accept a raw *sql.DB instead of *queries.Queries, providing more flexibility while maintaining existing functionality by creating the querier internally. The change to pass the database handle to NewPayerReportManagerStorer maintains consistency with the broader refactoring.

Also applies to: 69-69

pkg/payerreport/store_test.go (1)

31-43: LGTM! Test updates correctly reflect the interface changes.

The test modifications properly adapt to the new StoreReport method signature:

  1. Tests now explicitly create ReportID values using ReportID(randomBytes32())
  2. StoreReport calls no longer expect a return value for the report ID
  3. Report fetching uses the report ID directly instead of dereferencing pointers
  4. The pattern is applied consistently across all affected test functions

The changes maintain test coverage while properly adapting to the simplified interface.

Also applies to: 133-138, 156-170, 267-280, 293-293, 335-355, 402-414, 487-499

pkg/payerreport/store.go (2)

47-58: LGTM! StoreReport simplification is well-implemented.

The method signature change is appropriate since the PayerReport already contains its ID field, eliminating the need to return it. The implementation correctly maintains all validation and storage logic while simplifying the return signature.


128-144: LGTM! SetReportSubmissionStatus follows established patterns.

The new method implementation correctly mirrors the existing SetReportAttestationStatus pattern:

  1. Converts SubmissionStatus enum values to int16 array for database compatibility
  2. Uses the same parameter structure and query pattern
  3. Maintains consistency with the existing codebase design

The implementation is clean and follows established conventions.

pkg/indexer/settlement_chain/contracts/payer_report_manager_storer.go (2)

40-64: LGTM! Constructor refactoring improves separation of concerns

The refactoring to accept *sql.DB and instantiate the store internally provides better encapsulation. The domain separator retrieval is correctly handled with appropriate error propagation.


105-148: Well-structured event processing with proper error handling

The setReportSubmitted method correctly:

  • Builds the report ID with domain separator validation
  • Distinguishes between recoverable and non-recoverable errors
  • Implements idempotent status updates (no-op if already settled)
pkg/mocks/payerreport/mock_IPayerReportStore.go (1)

354-448: LGTM! Mock implementations correctly reflect new interface methods

The generated mock methods for SetReportSubmissionStatus and StoreReport properly implement the new interface requirements and follow standard mockery patterns.

@neekolas neekolas force-pushed the 06-03-add_log_storer branch 2 times, most recently from c14e4fe to 36c895d Compare June 3, 2025 15:29
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🛑 Comments failed to post (1)
pkg/testutils/contracts.go (1)

125-169: 💡 Verification agent

🧩 Analysis chain

Fix the duplicate parameter in data packing.

The function looks well-structured and follows the established pattern, but there's an issue in the data packing where activeNodeIDs is passed twice to nonIndexed.Pack().

Apply this diff to fix the duplicate parameter:

-	data, err := nonIndexed.Pack(
-		startSequenceID,
-		payersMerkleRoot,
-		activeNodeIDs,
-		activeNodeIDs,
-	)
+	data, err := nonIndexed.Pack(
+		startSequenceID,
+		payersMerkleRoot,
+		activeNodeIDs,
+	)

Please verify the correct parameters for the PayerReportSubmitted event by checking the ABI definition:


🏁 Script executed:

#!/bin/bash
# Description: Check the PayerReportSubmitted event ABI definition to verify correct non-indexed parameters.

# Search for PayerReportSubmitted event definition in ABI files
fd -e go -e json . --exec grep -l "PayerReportSubmitted" {} \; | head -5 | xargs grep -A 10 -B 2 "PayerReportSubmitted"

# Also search for the ABI definition in Solidity files if available
fd -e sol . --exec grep -l "PayerReportSubmitted" {} \; | head -3 | xargs grep -A 5 -B 2 "event PayerReportSubmitted"

Length of output: 14616


Remove duplicate parameter in data packing

The PayerReportSubmitted event defines only three non-indexed parameters (startSequenceID, payersMerkleRoot and activeNodeIDs), but the pack call erroneously supplies activeNodeIDs twice.

pkg/testutils/contracts.go (around lines 125–169)

-   data, err := nonIndexed.Pack(
-       startSequenceID,
-       payersMerkleRoot,
-       activeNodeIDs,
-       activeNodeIDs,
-   )
+   data, err := nonIndexed.Pack(
+       startSequenceID,
+       payersMerkleRoot,
+       activeNodeIDs,
+   )

This change brings the test utility in line with the actual ABI.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

    data, err := nonIndexed.Pack(
        startSequenceID,
        payersMerkleRoot,
        activeNodeIDs,
    )
    require.NoError(t, err)
🤖 Prompt for AI Agents
In pkg/testutils/contracts.go around lines 125 to 169, the call to
nonIndexed.Pack incorrectly passes the activeNodeIDs parameter twice. To fix
this, remove the duplicate activeNodeIDs argument so that only startSequenceID,
payersMerkleRoot, and activeNodeIDs are passed to the Pack function, matching
the actual event ABI definition.

@neekolas neekolas force-pushed the 06-03-add_log_storer branch from 36c895d to eb323e4 Compare June 17, 2025 08:41
@neekolas neekolas force-pushed the 05-15-add_domain_separator_for_proper_signatures branch from 739e5f2 to 92d617c Compare June 17, 2025 08:41
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from eb323e4 to dd27e70 Compare June 17, 2025 08:43
@neekolas neekolas force-pushed the 05-15-add_domain_separator_for_proper_signatures branch 2 times, most recently from bba174a to 8b6917a Compare June 17, 2025 08:51
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from dd27e70 to 557fe72 Compare June 17, 2025 08:51
@neekolas neekolas force-pushed the 05-15-add_domain_separator_for_proper_signatures branch from 8b6917a to c3aab44 Compare June 17, 2025 08:56
@neekolas neekolas force-pushed the 06-03-add_log_storer branch 2 times, most recently from 133a20d to 91b8c18 Compare June 17, 2025 08:57
@neekolas neekolas force-pushed the 05-15-add_domain_separator_for_proper_signatures branch 2 times, most recently from 0817ab1 to 9dabc61 Compare June 17, 2025 09:19
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from 91b8c18 to 5b5616f Compare June 17, 2025 09:19
@neekolas neekolas force-pushed the 05-15-add_domain_separator_for_proper_signatures branch from 9dabc61 to 759bca9 Compare June 17, 2025 09:20
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from 5b5616f to 3329b62 Compare June 17, 2025 09:20
@neekolas neekolas force-pushed the 05-15-add_domain_separator_for_proper_signatures branch from 759bca9 to 539133d Compare June 17, 2025 12:10
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from 3329b62 to 084593a Compare June 17, 2025 12:10
@graphite-app graphite-app bot changed the base branch from 05-15-add_domain_separator_for_proper_signatures to graphite-base/863 June 17, 2025 12:23
@neekolas neekolas force-pushed the graphite-base/863 branch from 539133d to 522d05f Compare June 17, 2025 13:15
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from 084593a to 8be596b Compare June 17, 2025 13:15
@neekolas neekolas changed the base branch from graphite-base/863 to main June 17, 2025 13:15
@neekolas neekolas marked this pull request as ready for review June 17, 2025 13:17
@neekolas neekolas requested a review from a team as a code owner June 17, 2025 13:17
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from 8be596b to 9e82e2e Compare August 6, 2025 04:27
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from 9e82e2e to 44b1618 Compare August 27, 2025 21:52
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from 44b1618 to bdc2c75 Compare September 2, 2025 13:18
@neekolas neekolas changed the base branch from main to graphite-base/863 September 2, 2025 13:24
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from bdc2c75 to 1c36abd Compare September 2, 2025 13:24
@neekolas neekolas changed the base branch from graphite-base/863 to 09-02-upgrade_tools_dependencies September 2, 2025 13:24
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from 1c36abd to edd1eb2 Compare September 2, 2025 13:37
@neekolas neekolas force-pushed the 06-03-add_log_storer branch from edd1eb2 to 66af1da Compare September 2, 2025 14:05
@neekolas neekolas force-pushed the 09-02-upgrade_tools_dependencies branch from 13a6e2c to 0a2f8ac Compare September 2, 2025 14:05
@graphite-app
Copy link

graphite-app bot commented Sep 2, 2025

Merge activity

  • Sep 2, 7:14 PM UTC: neekolas added this pull request to the Graphite merge queue.
  • Sep 2, 7:14 PM UTC: CI is running for this pull request on a draft pull request (#1085) due to your merge queue CI optimization settings.
  • Sep 2, 7:22 PM UTC: Merged by the Graphite merge queue via draft PR: #1085.

graphite-app bot pushed a commit that referenced this pull request Sep 2, 2025
_Macroscope is automatically generating a summary of this pull request..._

<img src="https://prasso.ai/static/prassoai-pr-loader-small-light-no-text.gif" alt="_Macroscope is automatically generating a summary of this pull request..._">

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
    - Added support for updating payer report submission status with controlled status transitions.
    - Improved event handling to parse and store payer report submissions using contract domain data.
- **Bug Fixes**
    - Enhanced error handling and idempotency in storing and updating payer report states.
- **Refactor**
    - Changed database dependency injection to use raw database connections for report management.
    - Extended internal interfaces and methods for consistent report storage and submission status updates.
- **Tests**
    - Expanded tests to cover payer report submission event processing and idempotency.
    - Added helpers for constructing detailed event logs in tests.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@graphite-app graphite-app bot closed this Sep 2, 2025
@graphite-app graphite-app bot deleted the 06-03-add_log_storer branch September 2, 2025 19:22
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.

3 participants