# X_PROTO_CHAIN_INDEX

## Means

a plain object literal typed `Record<…>` is READ with a computed key that is not a string literal

## Typical cause

`TABLE[name]` where `name` is data answers an `Object.prototype` member instead of `undefined` — `useService('constructor')` returned the `Object` function out of the one function whose job is throwing `X_SERVICE_MISSING`, and `querySelectorAll('[constructor]')` matched every element. Thirteen instances across four sweeps, six of them fixed before this rule existed and all of them back: the argument for a rule over a sweep. A **string literal** key and a **null-prototype** table are recognised rather than pinned

## Fix

guard the read with `Object.hasOwn(table, key)` before indexing, or make the table a `Map`; a table that is deliberately prototype-free is built with `Object.create(null)` and stops being reported

[CLI and verify](/error-codes#cli-and-verify)
