Skip to content

[finding] enable.files / enable.feeds describe strings say "creation is rejected" — the gates now refuse a re-point via update too #10336

Description

@os-warren

Found while implementing #10170 (registering both capability gates on beforeUpdate). Filed rather than fixed: packages/spec is outside that card's declared surface.

What is there

In packages/spec/src/data/object.zod.ts, each flag states its contract twice, and after #10170 the two halves no longer agree in scope.

files (~:269-281) — the block-level docblock states the state property:

true surfaces the record Attachments panel … and permits sys_attachment rows to target this object

…while the .describe() string one line down states a verb:

Opt-in: true surfaces the panel and permits attachments targeting this object; otherwise creation is rejected

feeds (~:283-290) has the same shape — docblock "rejects new sys_comment rows targeting this object", describe "explicit false hides the feed UI and rejects new comments for this object".

Why it is worth recording

The docblock half was always the accurate one, and #10170 is the card that makes the difference observable: the gates now also refuse an update that re-points a row onto a walled object (403 FILES_DISABLED / FEEDS_DISABLED, both dispatch shapes). So the describe strings now understate what the flag does — and they are not inert prose:

  • .describe() text is what reaches generated schema output and the authoring surfaces built on it, so an app author (or an LLM authoring metadata) reading "otherwise creation is rejected" would reasonably conclude a re-point is outside the flag's reach. It is not.
  • The same wording is what made the update-verb gap look intentional rather than missing in the first place.

Nothing is broken and no behaviour depends on this — it is a declared-surface accuracy item, which is why it is finding and not queued.

Suggested shape

Bring the two describe strings up to the docblocks they sit under: the flag governs whether rows may target the object, on any verb — not only creation. activities (the third flag in the block) is unaffected; it genuinely is a mirror-on-write switch.

Backlinks: #10170 (where found; it registers the update-verb enforcement), #2727 / #2707 (the flags' own cards).


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions