Linter checks list

ABI checks

Could not fetch ABI

  • Level: ⚠️ Warning

  • Message: Fetching reference ABI for chain id <chain_id> failed, descriptor ABIs will not be validated: <error>

  • Description: ABI fetch from external source (Etherscan or equivalent) has failed. Subsequents checks are skipped for the current deployment.

Proxy Contract

  • Level: ⚠️ Warning

  • Message: Contract <url> is likely to be a proxy, validation of descriptor ABIs skipped

  • Description: Contract detected as a potential proxy contract based on a simple heuristic. Subsequents checks are skipped.

Extra function

  • Level: ⚠️ Warning

  • Message: Function <function> (selector: <selector>) defined in descriptor ABIs does not exist in reference ABI (see <url>)

  • Description: A function found in the externally fetched ABI is not present in the provided ABI.

Function mismatch

  • Level: ⚠️ Warning

  • Message: Function <function> (selector: <selector>) defined in descriptor ABIs does not match reference ABI (see <url>)

  • Description: A function found in the provided ABI does not match the one present in the externally fetched ABI.

Display fields checks

Invalid EIP712 Schema

  • Level: 🛑 Error

  • Message: Primary type <type> is not present in schema types. Please make sure the EIP-712 schema includes a definition for the primary type.

  • Description: Computed primary type is not present in EIP-712 format. Sanity check that prevents subsequent checks to be run.

Missing Display Format

  • Level: 🛑 Error

  • Message: Schema primary type <type> must have a display format defined.

  • Description: Primary type has no display format. Sanity check that prevents subsequent checks to be run.

Invalid Display Field

  • Level: 🛑 Error

  • Message: A display field is defined for <path>, but it does not exist in <type/selector>. Please check the field path is valid according to the EIP-712 schema/ABI.

  • Description: Extra display format for unknown field

Invalid Display Format

  • Level: 🛑 Error

  • Message: Type <type> is not in EIP712 schemas. Please check the type is valid according to the EIP-712 schema.

  • Description: Extra display format for unknown primary type

Invalid Selector

  • Level: 🛑 Error

  • Message: Selector <selector> not found in ABI.

  • Description: Extra display format for unknown selector

Optional Display field missing

  • Level: ℹ️ Informational

  • Message: No display field is defined for path <path> in <type/selector>. If intentionally excluded, please add it to `excluded` list to avoid this warning.

  • Description: No display format defined for optional field.

Missing display field

  • Level: ⚠️ Warning

  • Message: No display field is defined for path <path> in <type/selector>. If intentionally excluded, please add it to `excluded` list to avoid this warning.

  • Description: No display format for non-optional field.

Max length checks

Object too long

  • Level: ⚠️ Warning

  • Message: <object> `<value>` exceeds <size> characters and may be truncated on Ledger devices.

  • Description: Owner/Legal name/URL/Contract id/Display intent/Display id/Display label is too long.

Type classifier checks

Linter tries to guess the type of the contract, and provides warning about missing fields that are usually present for the guessed type of contracts. For now only Permits contracts are identified using a simple heuristic

Expected Display field missing

  • Level: ⚠️ Warning

  • Message: Contract detected as Permit but no spender/amount/expiration field displayed