Security: extension fee guard is LocalTerra-only with no wallet QA notes documenting that mainnet is intentionally out of scope [SEC-E08] #429
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:implement
agent:implement
agent:open_issues
agent:ready
agent:research
agent:security_audit
agent:verify
architecture
backend
blocker:hybrid
blocker:launch
blocker:limit-orders
blocker:v2
block:log_only
block:security
bug
ci
contracts
correctness
deploy
dev
devops
docs
documentation
duplicate
e2e
enhancement
epic
feature
frontend
functional-completion
gas
good first issue
governance
help wanted
high-risk
hooks
hybrid
indexer
infra
infrastructure
integrators
invalid
launch-blocker
limit-orders
localnet
localterra
low priority
missing-implementation
needs-design
ops
performance
priority
high
priority
medium
product
qa
QA
question
ready
ready
research
scripts
security
security-hardening
smartcontracts
tech-debt
testing
ux
UX
v2
verification
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-dex-terraclassic#429
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
extensionSignedFeeGuard.tsJSDoc states it is "a post-sign fee/gas sanity check for extension wallets on LocalTerra (GitLab #127, #134)." The test at line 84 explicitly asserts the guard returns null forcolumbus-5(mainnet), confirming it is LocalTerra-only. The checklist qualifies with "where applicable" and also requires "manual wallet QA notes." No wallet QA notes exist in any runbook, release checklist, or document explaining why mainnet is out of scope or confirming Keplr on mainnet does not exhibit the stale-fee behavior.What Was Checked
frontend-dapp/src/utils/extensionSignedFeeGuard.tsJSDoc line 1: "Post-sign fee/gas sanity check for extension wallets on LocalTerra (GitLab #127, #134)." Scope stated in code but not in any external documentation.frontend-dapp/src/utils/__tests__/extensionSignedFeeGuard.test.tsline 84-92:extensionSignedFeeUndershootMessagereturns null forcolumbus-5. Behavior confirmed by test.docs/runbooks/launch-checklist.md: no reference to fee guard scope or Keplr mainnet QA.docs/security-model.md: no reference to fee guard.Expected (per checklist)
Manual wallet QA notes must confirm that the fee guard's LocalTerra scope is intentional and that Keplr on mainnet does not require this check, or that mainnet fee validation has been manually tested and confirmed working through a different mechanism.
Actual
The guard is LocalTerra-only per code comment and test. No document explains why or confirms mainnet behavior with Keplr has been validated. If the guard were needed on mainnet and was absent, no automated or manual check would surface this.
Evidence
frontend-dapp/src/utils/extensionSignedFeeGuard.tsline 1: "on LocalTerra" in JSDocfrontend-dapp/src/utils/__tests__/extensionSignedFeeGuard.test.tsline 84: returns null forcolumbus-5docs/runbooks/launch-checklist.md: no wallet fee guard QA itemSuggested Fix
Add a note to
docs/runbooks/launch-checklist.mdordocs/security-model.mdstating that the extension fee guard is LocalTerra-only and explaining why mainnet is excluded (e.g., "Keplr on mainnet uses the cosmes gas flow and does not exhibit the Station stale-fee behavior that prompted this guard"). Alternatively, add a manual wallet QA note confirming a Keplr mainnet swap submitted with the correct fee without requiring the guard.Verification Checklist
Labels
security,pre-launchCc: @PlasticDigits
Correct, keplr does not have this issue.
mentioned in merge request !957
Verified MR !957 (
3f91ddef) on the branch — the SEC-E08 scope is documented and gated.Takes the documented-scope path the issue offered, so this closes it on the docs layer. Good to merge. @PlasticDigits needs your merge.
mentioned in commit
02d9e3c982Verification — #429 (SEC-E08) — PASS
Verified on
mainat8a7e7add(includes merged MR !957 /3f91ddef). No repo changes required.Acceptance checklist
docs/security-model.md§ Extension wallet fee guard (SEC-E08);docs/runbooks/extension-fee-guard-wallet-qa.mdscope table;extensionSignedFeeGuard.tsJSDoc ("intentionally inactive on mainnet")docs/runbooks/extension-fee-guard-wallet-qa.md(mainnet section + launch sign-off text); maintainer confirmation on #429 ("keplr does not have this issue");skills/AGENTS_EXTENSION_FEE_GUARD.mddocs/runbooks/launch-checklist.mdPhase 4 SEC-E08 gate links runbook, security model, and agent skillAutomated verification
Steps: doc invariant (
check_extension_fee_guard_docs.py), agent skill present, wallet QA runbook present, launch checklist SEC-E08 item, security-model SEC-E08 section,extensionSignedFeeGuard.test.ts(9/9 —columbus-5returnsnull).Manual wallet QA (launch execution)
SKIP — not required to close this documentation issue. Manual Keplr swap steps for LocalTerra and
columbus-5are documented inextension-fee-guard-wallet-qa.mdfor Phase 4 launch sign-off; LocalTerra was not provisioned for this verify pass.Closing as complete on the docs/invariants layer per MR !957.
mentioned in issue #381
mentioned in issue #454
mentioned in issue #460
mentioned in issue #474
mentioned in issue #475
mentioned in issue #567
mentioned in merge request !1091
mentioned in issue #587
mentioned in issue #599
mentioned in issue #679
marked as related to #679
mentioned in issue #681
marked as related to #681