You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(lint): the seven system-field exemption lists derive from the spec's declarations (#4330) (#4339)
Five rules each carried their own hand-copy of "registry-injected columns
present on almost every object but absent from authored fields", and they had
already drifted — two more copies (validate-translation-references' extended
list, validate-hook-body-writes' union) appeared while the issue was open.
Same shape #3786 removed from the audit-provenance family.
One module now owns the answer: system-fields.ts derives SYSTEM_FIELDS from
FIELD_GROUP_SYSTEM_FIELDS (@objectstack/spec/data) + SystemFieldName
(@objectstack/spec/system), and all seven field-resolving rules consume it.
A pin test holds the boundary both ways: exactly the two declarations' union,
and none of the rule-local exemptions.
The two judgement calls the issue asked for, made deliberately:
- The derived union is a superset of the four identical copies (adds
is_deleted) and of flow-template-paths' set (adds user_id). Both are the
permissive direction the rules' own comments argue for: over-inclusion
costs at worst a missed warning, under-inclusion a false one.
- name / owner / record_type (and the legacy physical spellings _id / space)
are NOT spec system columns — name is an ordinary authored field on most
objects — so they stay rule-local next to each rule's reason
(IMPLICIT_FIELDS / IMPLICIT_HEADS extensions) instead of widening every
field-existence rule in the package.
Closes#4330
Claude-Session: https://claude.ai/code/session_01D8QhQz2V6VH1SX5SQ1nAgk
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments