export interface ApprovedException { desktop: number mobile: number reason: string } export const approvedExceptions: Record> = { roles: { 'Role editor: save failed (500)': { desktop: 21, mobile: 30, reason: 'Role editor: permission-grid and preview-rail layout differs from the board', }, 'Change role: failed (500)': { desktop: 12, mobile: 46, reason: 'Change role/Transfer: spec-kept disabled Owner row and 4 consequence bullets absent from board', }, 'Role editor: Read set to Own': { desktop: 25, mobile: 32, reason: 'Role editor: permission-grid and preview-rail layout differs from the board', }, 'Stale save: banner': { desktop: 21, mobile: 28, reason: 'Role editor: permission-grid and preview-rail layout differs from the board', }, 'Stale save: review differences': { desktop: 15, mobile: 12, reason: 'Role editor: permission-grid and preview-rail layout differs from the board', }, 'Stale save: edits kept after reload': { desktop: 17, mobile: 29, reason: 'Role editor: permission-grid and preview-rail layout differs from the board', }, "Change role: member's role changed first (409)": { desktop: 12, mobile: 48, reason: 'Change role/Transfer: spec-kept disabled Owner row and 4 consequence bullets absent from board', }, 'Role changed': { desktop: 10, mobile: 22, reason: 'not investigated: layout difference' }, 'Role edited elsewhere (409)': { desktop: 10, mobile: 20, reason: 'not investigated: layout difference', }, 'Role deleted elsewhere': { desktop: 10, mobile: 19, reason: 'not investigated: layout difference', }, "Role not changed: member's role changed first (409)": { desktop: 10, mobile: 22, reason: 'Change role/Transfer: spec-kept disabled Owner row and 4 consequence bullets absent from board', }, "Ownership not transferred: target's role changed first (409)": { desktop: 10, mobile: 23, reason: 'Change role/Transfer: spec-kept disabled Owner row and 4 consequence bullets absent from board', }, "User not removed: member's role changed first (409)": { desktop: 10, mobile: 22, reason: 'Change role/Transfer: spec-kept disabled Owner row and 4 consequence bullets absent from board', }, 'Invite: role above yours (403)': { desktop: 10, mobile: 15, reason: 'Users invite dialog: Users board still draws the old dialog without the Role field', }, 'Articles list: no drafts of their own': { desktop: 10, mobile: 14, reason: 'Mobile list states: board omits h1, search and Needs attention button required by the feature', }, 'Entry list: Read = Own': { desktop: 10, mobile: 14, reason: 'Mobile list states: board omits h1, search and Needs attention button required by the feature', }, 'Entry list: no entries of their own': { desktop: 10, mobile: 16, reason: 'Mobile list states: board omits h1, search and Needs attention button required by the feature', }, "Transfer ownership: target's role changed first (409)": { desktop: 10, mobile: 32, reason: 'Change role/Transfer: spec-kept disabled Owner row and 4 consequence bullets absent from board', }, }, users: { 'Invite: failed': { desktop: 12, mobile: 28, reason: 'Users invite dialog: Users board still draws the old dialog without the Role field', }, 'Invite: default': { desktop: 10, mobile: 21, reason: 'Users invite dialog: Users board still draws the old dialog without the Role field', }, 'Invite: validation': { desktop: 10, mobile: 21, reason: 'Users invite dialog: Users board still draws the old dialog without the Role field', }, 'Invite: sending': { desktop: 10, mobile: 28, reason: 'Users invite dialog: Users board still draws the old dialog without the Role field', }, 'Invite: already a user (409)': { desktop: 10, mobile: 26, reason: 'Users invite dialog: Users board still draws the old dialog without the Role field', }, }, profile: { Loading: { desktop: 12, mobile: 10, reason: 'not investigated: layout difference' }, Error: { desktop: 13, mobile: 35, reason: 'not investigated: layout difference' }, Created: { desktop: 10, mobile: 19, reason: 'not investigated: layout difference' }, 'Created, slug adjusted': { desktop: 10, mobile: 31, reason: 'not investigated: layout difference', }, }, 'integration-api-keys': { 'Owner: list': { desktop: 14, mobile: 25, reason: "API keys: board lacks the Keys follow their creator's role banner and Follows role column", }, Loading: { desktop: 15, mobile: 28, reason: "API keys: board lacks the Keys follow their creator's role banner and Follows role column", }, 'One-time reveal': { desktop: 12, mobile: 32, reason: 'not investigated: layout difference', }, 'One-time reveal: copied': { desktop: 12, mobile: 32, reason: 'not investigated: layout difference', }, Revoked: { desktop: 15, mobile: 27, reason: "API keys: board lacks the Keys follow their creator's role banner and Follows role column", }, 'Admin: own keys only': { desktop: 14, mobile: 25, reason: "API keys: board lacks the Keys follow their creator's role banner and Follows role column", }, Empty: { desktop: 10, mobile: 18, reason: "API keys: board lacks the Keys follow their creator's role banner and Follows role column", }, Error: { desktop: 10, mobile: 18, reason: "API keys: board lacks the Keys follow their creator's role banner and Follows role column", }, 'Create key': { desktop: 10, mobile: 29, reason: 'not investigated: layout difference' }, 'Create key: validation': { desktop: 10, mobile: 28, reason: 'not investigated: layout difference', }, 'Create key: name too long': { desktop: 10, mobile: 29, reason: 'not investigated: layout difference', }, 'Revoke: confirm': { desktop: 10, mobile: 20, reason: 'not investigated: layout difference', }, }, }