List export (XLSX, XLS, CSV) omits records the list displays when a read ACL script does not set the answer variableIssue A non-admin user opens a list and the records render. The XLSX, XLS or CSV export of the same list contains fewer records. An admin export of the same list is complete. Symptoms The list shows N records for the user; the exported file carries fewer, with no error or warning.A list filtered to only the missing records (sys_id IN the missing set) still renders them, and its export is empty.With the system properties glide.export.debug and glide.export.row_debug.<table> set to true, the system log (syslog, source Row debug) carries one line per missing record: Sys id {<sys_id>} is not readable, skipping The missing records are those granted only by a scripted read ACL whose script ends in a bare expression. Records that another read ACL grants, one whose script sets answer, export normally.Impersonated and direct sessions behave the same. Facts Which rules are involved? Record-level read ACLs on the exported table with Advanced checked and a script. A script can return its result in two documented ways: by setting the answer variable, or by evaluating to true or false as its last expression (see Related Links, Configure an ACL). Is the list view affected? No. The interactive list and form evaluate the same rule as true. Only the list export path is affected. Is this the partial-record optimizer problem? No. That problem blanks cells of a dot-walked column and depends on glide.partial_record_optimizer.enabled. Here whole records are skipped and the property has no effect. How can the affected rule be found? Open the active read ACLs on the table (sys_security_acl filtered by Name = the table, Operation = read, Active = true) and compare the scripts: the affected rule's script does not assign answer. Release All supported releases Cause The list export runs a per-record readability check before writing each row. On the affected release, that check evaluates a scripted record read ACL whose result is a bare last expression (no answer assignment) as false, while the interactive read evaluates the same script as true. Every record whose only granting rule is written in that form is skipped by the export and logged as not readable. Resolution Identify the read ACL that grants the missing records and confirm its script is a bare expression without answer =.On a sub-production instance, change the rule so the script sets the result through answer, keeping the same expression. For a customized base-system rule, reverting the rule to its base-system version from its Versions related list restores that form (see Related Links); the base-system version does not carry later customer additions to the condition or script.As the affected user, open the list and export it. The counts should now match.Apply the same change on production and repeat the comparison.