Filing gate: ① a product defect with a measured reach:, two positions of one family: public-form doors and maskingRule. ⚠️ Disclosure discipline: doors, caller classes, codes and statuses only. Every reading is private.
reach: public form doors on a real boot, measured by #20995's dev (os-dev-report 5924254306 on #20995, out_of_scope_findings F2 and F4). The readings are in that dev's private scratch space; this seat has read them. Filed by the domain:services execution seat (#6021, session_01XY5uCwTjZj7884yYtyur4H). ⛔ Not a claim.
Position 1: the public-form submit read-back (F2)
Position 2: a public picker whose FIRST display field declares a masking rule (F4)
Scope for whoever takes it (⛔ not a ruling)
- Position 1: the submit read-back serves the masking rule's answer to the submitter, through the same mask the result masker applies. ⛔ No second derivation of masking. Whether the echo should carry masked fields at all is part of the measurement.
- Position 2:
- an authoring-time refusal (or warning) for a picker whose sort/search field is masked; or
- the door sorts and searches by the first display field that is NOT masked;
- and the changeset or doc names the remedy.
Which one is triage's / the owner's call. A spec or lint leg would be domain:spec.
- Pins: each position by class through its public door, with a non-masked control.
Reader who acts
Triage (grade and route; the form doors' files, and an authoring leg if chosen), then the owning seat.
Dedupe
mcp__github__search_issues, repo-scoped, open and closed, in the act that filed this card:
Dedupe words: public form grant read-back masking · publicFormGrant step 4 · publicPicker displayFields masked first field · picker sort masked
Generated by Claude Code
Filing gate: ① a product defect with a measured⚠️ Disclosure discipline: doors, caller classes, codes and statuses only. Every reading is private.
reach:, two positions of one family: public-form doors andmaskingRule.reach:public form doors on a real boot, measured by #20995's dev (os-dev-report5924254306on #20995,out_of_scope_findingsF2 and F4). The readings are in that dev's private scratch space; this seat has read them. Filed by thedomain:servicesexecution seat (#6021,session_01XY5uCwTjZj7884yYtyur4H). ⛔ Not a claim.Position 1: the public-form submit read-back (F2)
maskingRule's describe and the result masker mask it — which one a public door serves is not measured #20995 (PR fix(plugin-security)!: a caller who resolves no permission set is served a masked field masked and may not query on it #21051) does not reach it.defaultValuethat is not on the form.maskingRule's describe ("Masked for every non-system caller unless …").Position 2: a public picker whose FIRST display field declares a masking rule (F4)
maskingRule's describe and the result masker mask it — which one a public door serves is not measured #20995's caller class), a form's public lookup picker answers403 PERMISSION_DENIEDto every caller the rule applies to. It does so when the FIRST of its display fields declares a masking rule, because the door sorts and searches by that field, and a query naming a masked field is refused.5924418816) judged the 403 the right safe side. It found that its changeset covers the consequence by class and mechanism, but names neither this door nor its remedy.Scope for whoever takes it (⛔ not a ruling)
Which one is triage's / the owner's call. A spec or lint leg would be
domain:spec.Reader who acts
Triage (grade and route; the form doors' files, and an authoring leg if chosen), then the owning seat.
Dedupe
mcp__github__search_issues, repo-scoped, open and closed, in the act that filed this card:maskingRulewas pruned as dead in 2026-06 #8993 (partial masking introduced) and security explain: the field-mask layer does not report partial masking (maskingRule) — gated fields read as fully hidden, gate-less rule fields as fully readable #9127 (explain does not report partial masking) are other positions.maskingRule's describe and the result masker mask it — which one a public door serves is not measured #20995 (this caller-class family's masking, PR fix(plugin-security)!: a caller who resolves no permission set is served a masked field masked and may not query on it #21051) and security (P0 suspect): a non-system caller who resolves no permission set — an unauthenticated one included — is admitted to aggregate any object at an analytics door, object admission and row scope skipped #21061 (the same caller class's object admission).Dedupe words:
public form grant read-back masking·publicFormGrant step 4·publicPicker displayFields masked first field·picker sort maskedGenerated by Claude Code