Skip to content

[finding] records-forms never drives a FEEDS_DISABLED write — the term appears only in a negative entry, and no fixture provides a feeds-disabled parent #12118

Description

@yinlianghui

Filed by the domain:devx @ objectstack PM seat (#6023, session session_01UjM2ia8Av1v5NqfqQEQmC6) on behalf of #10735's dev, which measured this but could not file it itself: the dispatch mandates a search-before-file dedup check, the prescribed REST channel answered 403 "GitHub access is not enabled for this session" from that dev seat, and MCP search_issues was off-limits to it. It reported instead of filing — the correct call. I ran the dedup search from this seat (3 hits, none covering this: #10735 itself, #10336 which fixed the describe strings on the spec side and is closed, and #4630 unrelated) and am filing it here so the measurement does not die in a PR body.

Filed unassigned, observation class. Measured while implementing #10735 (PR #12116).

The gap

FEEDS_DISABLEDdoes appear in docs/qa/platform-checklist/areas/records-forms.json — in records-forms.record-discussion-mentions. But it appears only inside a negative entry. There is no step and no acceptance clause that actually drives a feeds-disabled write, on either the create side or the update side.

⇒ The area names the refusal without ever provoking it. A reader auditing coverage sees the term and concludes the case is probed.

Why it cannot be closed without a new fixture

  • records-forms.json has no area-level fixtures block.
  • No stock showcase object declares enable.feeds: false — feeds defaults to true and is opt-out, so unlike the files case there is no naturally-occurring disabled parent to borrow.
  • There is no scratch-object recipe analogous to qa_nofiles for this area.

So closing either half — the create side or the thread_id re-thread — requires provisioning a feeds-disabled fixture the area does not currently land. #10735's triage clause said "if it needs new fixtures, report rather than widen", so PR #12116 deliberately did not build one.

What is NOT wrong here

⛔ This is not a runtime enforcement gap. The update-verb mechanism for feeds is already engine-pinned — packages/plugins/plugin-audit/src/capability-gate-update-verb.test.ts carries the feeds sibling of the [#10170] enable.files is asked on the UPDATE verb too describe. What is missing is the platform checklist's own driven coverage, not the enforcement it is supposed to observe.

That distinction matters for grading: nothing is broken today and no user is exposed. It is a checklist accuracy/coverage item, which is why this is finding and not queued.

Why it is worth a card rather than a PR-body note

⭐ It is structurally the same defect as #10735 itself: a checklist that reads as covering a capability gate while never driving the half that matters. #10735 was worth a card and produced a real repair; the feeds side is the same shape one area over, and the only reason it is not in that PR is a scope fence, not a judgement that it does not matter.

If it is left as prose in a merged PR body, the next person auditing records-forms.json sees FEEDS_DISABLED present and moves on — which is exactly the failure mode #10735 recorded for the files side.

Suggested shape (for whoever grades it, not a plan)

Provision a feeds-disabled parent for this area — the qa_nofiles recipe in attachments-storage.json is the worked precedent, including how it is landed and cited — then add the two probes the term currently only promises: a create against a feeds-disabled parent, and a thread_id re-thread onto one, both expecting 403 FEEDS_DISABLED. Checklist edits owe a revision bump + history entry per the area README.

Refs: #10735 / PR #12116 (the files-side twin, and where this was measured) · #10170 (registered both capability gates on beforeUpdate) · #10336 (the describe-string half, closed) · #7670 (the qa_nofiles fixture precedent).

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions