**Warning**: Every column must reference an attribute that actually exists on the **target type** being displayed in the table. Before configuring columns, use cplace MCP tools to look up the target type's actual attributes and verify that each column attribute name exists. Never assume or reconstruct attribute names. Columns referencing non-existent attributes will fail silently or produce errors.

**JSON Format**:
```json
[
  {"name": "_name_", "visible": true},
  {"name": "'cf.cplace.myType.attributeName'", "visible": true},
  {"name": "'cf.cplace.myType.otherAttribute'", "visible": false},
  {"name": "name", "visible": true}
]
```

**Important**:
- **Custom attributes** require single quotes around the attribute name: `"'cf.cplace.myType.attributeName'"`
- **Builtin attributes** (e.g., `name`, `createdAt`, `creator`, `modifiedAt`, `modifier`, `owner`) are specified without quotes: `"name"`
- **Inside a `layout.define` string**: wrap the config value in a **double-quoted** outer JS string so these single-quoted tokens need no escaping — see the `cplace_execute_layout_script` tool description (quoting/escaping note). Never wrap it in a single-quoted string with unescaped inner `'` (throws `SyntaxError`).
- The pseudo-column **`_name_`** renders the page's display name with navigation link and is distinct from the builtin `name` attribute.

**Note**: Order in array determines column display order. Hidden columns (`visible: false`) can still be used for sorting/filtering.

**Default for the `_name_` column (this widget only)**: Unless the requirements explicitly state otherwise, the **first entry of the column array MUST be `{"name": "_name_", "visible": true}`**. This rule applies to `cf.cplace.platform.tableWidget` and to no other widget: on the legacy `cf.platform.embeddedSearchAsTable`, listing `_name_` is forbidden and breaks the page on every render — see that widget's `columns` specification.

**Why**: users expect the leftmost column to be the clickable navigation handle that identifies and opens a row. That expectation holds across cplace tables; how you satisfy it does not. On this widget you satisfy it by listing `_name_` first, so putting it anywhere but first, or hiding it, breaks the expectation. The legacy `cf.platform.embeddedSearchAsTable` satisfies it automatically by prepending its own display-name column, which is why `_name_` must not be listed there at all. **How to apply**: Apply to every newly configured `cf.cplace.platform.tableWidget`. The builtin `name` attribute is a separate column whose position is not prescribed by this rule. Only deviate from the `_name_`-first default when the requirements explicitly say to hide it, reorder it, or replace it with a different identifier column.
