MF-L02: docs(protocol): qualify enforcement guarantee for intent-specific execution paths#737
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThis PR refines protocol enforcement documentation across three specification files, clarifying that state submission requires valid execution path validation, restricting OPERATE-intent states from depending on unconfirmed prior DEPOSITs, and requiring parties to enforce intermediate states before discarding them. ChangesEnforcement Rule Clarifications
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. 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. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
docs/protocol/enforcement.md (1)
72-72: ⚖️ Poor tradeoffAlign scope with security-and-limitations.md and clarify "unconfirmed."
Line 72 states the OPERATE-on-unconfirmed-DEPOSIT restriction applies only to channel creation: "cannot be used to create a channel." However, security-and-limitations.md line 45 states this restriction applies to both creation and advancement: "cannot be used to create or advance a channel on-chain."
The broader scope is technically correct because OPERATE requires zero user net flow delta relative to the last enforced state—this constraint applies to all enforcement operations, not just creation. The same sentence's later phrase "before advancing to subsequent OPERATE states" also implies the restriction extends beyond creation.
Additionally, "unconfirmed" could be clearer. Consider "unenforced," "not yet checkpointed," or "off-chain-only" to explicitly indicate the DEPOSIT has not been submitted on-chain.
Suggested alignment
-An OPERATE state that carries accumulated user net flow from an unconfirmed prior DEPOSIT state cannot be used to create a channel — parties MUST enforce the DEPOSIT state on-chain before advancing to subsequent OPERATE states that depend on it. +An OPERATE state that carries accumulated user net flow from an unenforced prior DEPOSIT state cannot be used to create or checkpoint a channel — parties MUST enforce the DEPOSIT state on-chain before advancing to subsequent OPERATE states that depend on it.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/protocol/enforcement.md` at line 72, The sentence beginning "An OPERATE state that carries accumulated user net flow from an unconfirmed prior DEPOSIT state cannot be used to create a channel" should be broadened and clarified: change the scope to "create or advance a channel on-chain" (so it applies to both creation and advancement) and replace "unconfirmed" with a clearer term such as "unenforced (not yet submitted on-chain)" or "off-chain-only" to indicate the DEPOSIT was not enforced on-chain; update the sentence fragment "An OPERATE state that carries accumulated user net flow..." and the phrase "cannot be used to create a channel" accordingly so the text reads that OPERATE states depending on an unenforced prior DEPOSIT cannot be used to create or advance a channel on-chain.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@docs/protocol/enforcement.md`:
- Line 72: The sentence beginning "An OPERATE state that carries accumulated
user net flow from an unconfirmed prior DEPOSIT state cannot be used to create a
channel" should be broadened and clarified: change the scope to "create or
advance a channel on-chain" (so it applies to both creation and advancement) and
replace "unconfirmed" with a clearer term such as "unenforced (not yet submitted
on-chain)" or "off-chain-only" to indicate the DEPOSIT was not enforced
on-chain; update the sentence fragment "An OPERATE state that carries
accumulated user net flow..." and the phrase "cannot be used to create a
channel" accordingly so the text reads that OPERATE states depending on an
unenforced prior DEPOSIT cannot be used to create or advance a channel on-chain.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 3c015f5f-b779-4b51-b1c3-ee1ed2b384f9
📒 Files selected for processing (3)
docs/protocol/enforcement.mddocs/protocol/overview.mddocs/protocol/security-and-limitations.md
ihsraham
left a comment
There was a problem hiding this comment.
approved, this now closes L-02 with the enforcement-path caveat documented in the right places.
- MF-L01: fix(contracts/ChannelHub): cap ERC20 transfer returndata copy to 32 bytes (#726) - MF-H01: fix(nitronode): paginate get_last_key_states endpoints (#724) - MF-I01-I02: fix(contracts): address security audit findings I-01 and I-02 (#728) - MF-C01: rpc: cap inbound WebSocket frame size and rate-limit per connection (#723) - MF-L02: docs(protocol): qualify enforcement guarantee for intent-specific execution paths (#737) - MF-L02-I03-I04_I05: fix(contracts): add more Node trust assumptions and requirements (#738) - MF-M01: backfill state user_sig from on-chain events (#731) - MF-M02: fix(rpc): release Serve wait group on processSink overflow (#732) - Fix SDK acknowledgement before home channel creation (#734) - MF-I06: fix(nitronode): gate escrow transitions on home channel onchain materialization (#730) - MF-M05: fix(nitronode): enforce TLS by default for Postgres (#733) - MF-M07: Unblock receiver states after finalized escrow operations (#735) - MF-M04: feat: provide tooling for and enhance docs on ValidatorRegistered event (#744) - MF-L04: fix(contracts): reject redundant native value (#741) - MF-H02: bind session key registration to a single owner per kind (#739) - MF-I07: fix(contracts): enforce max challenge duration (#752) - MF-M08: fix(rpc): replace Origin label with application_id on connection gauge (#745) - MF-C02: fix(core): add ChannelStatusClosing to gate post-finalize state transitions (#746) - MF-L06: fix(contracts): clear stale challengeExpireAt on cooperative escrow finalization (#754) - MF-I08: docs: document ChannelClosed event orientation ambiguity during abandoned migration (#755) - MF-M09: fix(nitronode): auto-challenge home channel on withheld escrow finalize (#753) - MF-L09: fix(nitronode): validate parsed app session nonce (#751) - MF-L05: docs(contracts): document informational events not guaranteed to emit (#756) - MF-L08: fix(nitronode/api): default get_last_key_states to active-only with include_inactive opt-in (#749) - MF-L10: fix: emit escrowIds array in EscrowDepositsPurged event and handle it in Nitronode (#757)
Qualifies the enforcement guarantee across three protocol docs.
The blanket statement "Any party MAY submit the latest signed state at any time" is not fully accurate: an OPERATE state with non-zero user net flow delta cannot be used to create or checkpoint a channel from VOID status, because OPERATE requires zero user net flow change relative to the last enforced state.
Changes:
docs/protocol/security-and-limitations.md: rewrite Enforcement Guarantees section — adds intent-path qualifier and a new bullet requiring parties to retain intermediate states (e.g. DEPOSIT) before discarding themdocs/protocol/enforcement.md: qualify the Enforcement Model bullet; add caveat in Channel Creation section about OPERATE intent not being usable when user net flow was accumulated from an unconfirmed DEPOSIT statedocs/protocol/overview.md: qualify the State Enforcement paragraphSummary by CodeRabbit
Documentation