## Description
We have `Z99/Quote` specified as the type of some error type keys (examples below), but it's not clear whether this has been done consistently. Getting these types right is a prerequisite to doing some further work on errors.
[] Explicitly clarify and specify our criteria for using `Z99/Quote` as the type of error type keys.
[] Based on those criteria, update error-type ZObjects as needed (i.e., adding or removing the use of `Z99/Quote`).
[] E.g., consider adding quoting to: Z537K1, Z508K1, Z518K2, Z531K1
[] Update utility code (which creates `Z5/Error` ZObjects) as needed.
[] Update all other error-creation code & related tests as needed.
Possible criteria for quoting error type keys (taken mostly from discussions on slack):
- Quote where we suspect the input is invalid in some way
- Quote resolvable keys of error types that might be ingested as the input to a function
- Quote when resolving a value might cause a catastrophe (e.g. infinite recursion)
- Quote more things if it lets us make backend APIs more consistent
- Quote the values of any key that might get a value containing `Z7`, `Z9`, or `Z18`. (See also T323158).
**Examples of possible inconsistency**
- Some error type keys called `object` or `whole object` are declared as type `Z99/Quote`, but others are not.
- `Z507K1/function call` of `Z507/error_in_evaluation` is not declared as `Z99/Quote`, but the method createZErrorInstance() in errorFormatter.js (function-schemata) does quote values of `Z507K1/function call`. (T349026)
- createZErrorInstance() also quotes values of `Z507K2/propagated error`, but other keys named `propagated error` are not quoted anywhere, or declared to be `Z99/Quote`.
Here are some examples of error type keys that //are //currently specified with type Z99 (there are only a few more besides these):
- `Z511K2/object` of `Z511/key_not_found`
- `Z521K1/offending text` of `Z521/zobject_must_not_be_number_or_boolean_or_null`
- `Z523K1/object` of `Z523/missing_type`
- `Z524K1/value of z1k1` of `Z524/z1k1_must_not_be_string_or_array`
- `Z535K1/whole object` of `Z535/z9_without_z9k1`
- `Z536K1/value of Z9K1` of `Z536/z9k1_must_be_string`
Here are a few that are //not//:
- `Z508K1/object` of `Z508/competing_keys`
- `Z518K2/object` of `Z518/object_type_mismatch`
- `Z531K1/whole object` of `Z531/z6_must_have_2_keys`
**Desired behavior/Acceptance criteria (returned value, expected error, performance expectations, etc.)**
[] The uses of `Z99/Quote` in error types should be consistent.
[] Error-creation/handling code should be consistent with error type declarations .
---
## Completion checklist
* [ ] Before closing this task, review one by one the checklist available here: https://www.mediawiki.org/wiki/Abstract_Wikipedia_team/Definition_of_Done#Back-end_Task/Bug_completion_checklist