Skip to content

fix: [ECCVM] accumulator propagation across "no-op" rows in MSM table.#20357

Open
notnotraju wants to merge 1 commit intonextfrom
rk/eccvm-external-audit-1-msm-no-op
Open

fix: [ECCVM] accumulator propagation across "no-op" rows in MSM table.#20357
notnotraju wants to merge 1 commit intonextfrom
rk/eccvm-external-audit-1-msm-no-op

Conversation

@notnotraju
Copy link
Contributor

@notnotraju notnotraju commented Feb 10, 2026

If phase selectors are all 0 in the MSM table, make sure that the accumulator propagates.

Added corruption/failure tests.

@notnotraju notnotraju self-assigned this Feb 10, 2026
@notnotraju notnotraju added ci-full Run all master checks. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure ci-barretenberg-full Run all barretenberg checks. and removed ci-full Run all master checks. labels Feb 10, 2026
// accumulator one past the last MSM row and then not turn off the constraint when `msm_transition == 1`.)
// - lagrange_first = 1 (row 0): the first row of the trace is zero-padded and the next row
// starts a fresh MSM whose accumulator is initialized via first_add, not by continuity.
auto no_op_selector =
Copy link
Contributor

Choose a reason for hiding this comment

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

likely also need to gate the hiding row

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hm, I don't think so -- the hiding op-code is q_eq = 1 and q_reset = 1, while the MSM table is only populated when q_mul = 1 (plus some non-triviality conditions). In other words, the second row of the MSM table (i.e., row-index 1) should already be active/meaningful.

* @brief Compute random Fiat-Shamir challenges and derived polynomials (logderivative inverse, grand product)
* needed to check ECCVMSetRelation and ECCVMLookupRelation.
*/
RelationParameters<FF> compute_full_relation_params(ProverPolynomials& polynomials)
Copy link
Contributor

Choose a reason for hiding this comment

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

i think there's a custom method for this in RelationParameters

Copy link
Contributor

Choose a reason for hiding this comment

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

worth checking at least

Copy link
Contributor

@iakovenkos iakovenkos left a comment

Choose a reason for hiding this comment

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

lgtm! thanks for adding the tests

@notnotraju notnotraju changed the base branch from merge-train/barretenberg to next February 15, 2026 23:05
@notnotraju notnotraju enabled auto-merge February 15, 2026 23:06
@notnotraju notnotraju removed the ci-barretenberg-full Run all barretenberg checks. label Feb 15, 2026
@notnotraju notnotraju disabled auto-merge February 15, 2026 23:14
@notnotraju notnotraju enabled auto-merge February 15, 2026 23:16
This commit ensures proper accumulator propagation when the MSM table
contains "no-op" rows (rows where no operation is being performed).
Added failure tests to verify the fix.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@notnotraju notnotraju force-pushed the rk/eccvm-external-audit-1-msm-no-op branch from 8c0224b to 0cebefc Compare February 15, 2026 23:20
@notnotraju notnotraju added this pull request to the merge queue Feb 15, 2026
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Feb 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants