packages/platform-objects/src/audit/sys-email.object.ts:32 declares:
highlightFields: ['subject', 'to', 'status', 'sent_at'],
The object has no field named to. Its recipient column is to_addresses (sys-email.object.ts:59); the other three entries (subject, status, sent_at) all resolve. So highlightFields[1] is a dangling field reference on a shipped platform object.
How it was found
Measuring the shipped object corpus for #15495 — every *.object.ts under packages/ and examples/, 116 objects, each pushed through the real object write door (runRuntimeAuthoringRules({ type: 'object' })) with its siblings as context. Two objects raise an error there, and this is one of them:
ERR sys_email: object-field-ref-unknown objects.sys_email.highlightFields[1]
highlightFields[1] "to" is not a field on object "sys_email".
The finding is object-field-ref-unknown, the rule #15254 added and crossed onto the object write door. It is not raised by anything this measurement added — it is the state of main today.
Why it matters
highlightFields drives the object's default list columns, record cards, previews and the detail highlight strip. Every consumer silently skips an entry it cannot resolve, so each of those surfaces renders one field short with no error anywhere — the recipient column, on the platform's own email log.
There is a second consequence now that the object door gates this rule: sys_email in its current shape cannot be republished through PUT /api/v1/meta/object or a package publish — the door answers 422 INVALID_METADATA. It ships as a registry object today, so nothing is broken at boot; it is a live trap for anyone who edits it through a door rather than the file.
Fix
Rewrite the entry to the real column name:
highlightFields: ['subject', 'to_addresses', 'status', 'sent_at'],
Deliberately left for its own card rather than ridden along on #15495: that PR is scoped to packages/lint, and this is a one-line content fix in packages/platform-objects with its own package and changeset.
Also seen in the same sweep (separate, lower confidence)
dc_account (packages/qa/downstream-contract/src/account.object.ts) declares no sharingModel, so the same door raises security-owd-unset at error. That may well be intentional for a minimal contract fixture — noted here rather than filed, so the sweep's second finding is not lost.
Generated by Claude Code
packages/platform-objects/src/audit/sys-email.object.ts:32declares:The object has no field named
to. Its recipient column isto_addresses(sys-email.object.ts:59); the other three entries (subject,status,sent_at) all resolve. SohighlightFields[1]is a dangling field reference on a shipped platform object.How it was found
Measuring the shipped object corpus for #15495 — every
*.object.tsunderpackages/andexamples/, 116 objects, each pushed through the real object write door (runRuntimeAuthoringRules({ type: 'object' })) with its siblings as context. Two objects raise anerrorthere, and this is one of them:The finding is
object-field-ref-unknown, the rule #15254 added and crossed onto the object write door. It is not raised by anything this measurement added — it is the state ofmaintoday.Why it matters
highlightFieldsdrives the object's default list columns, record cards, previews and the detail highlight strip. Every consumer silently skips an entry it cannot resolve, so each of those surfaces renders one field short with no error anywhere — the recipient column, on the platform's own email log.There is a second consequence now that the object door gates this rule:
sys_emailin its current shape cannot be republished throughPUT /api/v1/meta/objector a package publish — the door answers 422INVALID_METADATA. It ships as a registry object today, so nothing is broken at boot; it is a live trap for anyone who edits it through a door rather than the file.Fix
Rewrite the entry to the real column name:
Deliberately left for its own card rather than ridden along on #15495: that PR is scoped to
packages/lint, and this is a one-line content fix inpackages/platform-objectswith its own package and changeset.Also seen in the same sweep (separate, lower confidence)
dc_account(packages/qa/downstream-contract/src/account.object.ts) declares nosharingModel, so the same door raisessecurity-owd-unsetaterror. That may well be intentional for a minimal contract fixture — noted here rather than filed, so the sweep's second finding is not lost.Generated by Claude Code