ci(monitoring): scheduled protocol drift report - #17
Draft
92Infinitus92 wants to merge 5 commits into
Draft
92Infinitus92 wants to merge 5 commits into
92Infinitus92 wants to merge 5 commits into
Conversation
92Infinitus92
force-pushed
the
feat/scenarios/monitoring
branch
from
September 21, 2026 10:13
a5417bf to
96d21b2
Compare
92Infinitus92
marked this pull request as draft
September 21, 2026 11:41
Collaborator
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Milestone 3.3. Twice a day a workflow checks whether the protocols we integrate still look the way our templates assume, and commits a Markdown report to the
scenarios/monitoringbranch underscenarios/monitoring/reports/<timestamp>/. Published IDLs that differ from the committed ones land next to it underidls/, together with the diff.Two files: a bash script that calls the tools a person would use, and the workflow that runs it.
What a run does
cargo nextest run --features integration-tests --no-fail-fast.monitor.shchecks three things against mainnet:solana program showfor every program a template names (addressinidl.json) plus the PMM programs listed at the top of the script. A changed deploy slot or upgrade authority since the previous run is drift.anchor idl fetch(legacy ones go throughanchor idl convert), thenjqcompares the accounts, types and, where we commit them, instructions. Any entry we ship that the program no longer publishes identically is drift; entries only upstream has are listed as additions.getSignaturesForAddress. No transaction ever is drift, none in three days is a warning.What it shows today
14 of 17 committed IDLs differ from what the programs publish, listed by entry (for Kamino:
types/Obligation,types/LendingMarket,types/ReserveConfig, ...; for Jupiter:accounts/TokenLedgerand its instructions). 30 offered addresses have not seen a transaction in three days. All 21 programs are on their first observation until the cache holds a run.Verified locally
Three consecutive runs against the public endpoint: first observation, then all 21 programs unchanged, then a corrupted slot in the snapshot reported as changed with old and new values. 111 markets checked without RPC errors. A real nextest log renders into the tests section. The report contains no RPC URL.
Not verified yet: the run on GitHub itself. One
workflow_dispatchon this branch settles it.SURFPOOL_TEST_RPC_URLis optional; without it the public endpoint is used and Pump's surfnet-backed tests time out.The PR appears safe to merge; no outstanding previous findings or actionable new regressions remain.
Summary
Adds scheduled protocol monitoring and report publication, with the latest revision expanding IDL drift detection to compare complete committed account, type, and instruction entries.
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart TD S[Scheduled or manual run] --> M[Read-only monitor job] M --> C[Restore previous snapshot] C --> T[Run integration suites] T --> D[Check programs, IDLs, and markets] D --> R[Render report and verdict] R --> A[Upload report artifact] D --> N[Save next snapshot] A --> P[Write-enabled publish job] P --> B[Commit report to scenarios/monitoring branch] B --> F{Clean verdict and suites passed?} F -->|Yes| OK[Workflow succeeds] F -->|No| FAIL[Workflow fails after publication]Reviews (8) · Last reviewed commit: "ci(monitoring): compare IDL entries stru..."