/**
 * KBX v60 T01 recipe adapted to the existing screen-type boundary.
 * This is declarative metadata; it does not create client-side data ownership
 * or execute commands on behalf of a screen.
 */
export const searchListRecipe = Object.freeze({
  id: 'T01',
  requiredPolicies: Object.freeze([
    'server-read-model',
    'tanstack-query',
    'search-condition-preservation',
    'server-side-bulk-selection',
  ]),
  recoveryPolicies: Object.freeze([
    'idle-before-first-search',
    'retain-grid-during-refresh',
    'retry-with-search-context',
    'partial-bulk-result',
  ]),
  securityPolicies: Object.freeze([
    'screen-permission',
    'command-permission',
    'safe-drilldown-route',
    'masked-sensitive-cells',
  ]),
})

export type SearchListRecipe = typeof searchListRecipe

export const workQueueRecipe = Object.freeze({
  id: 'T12',
  requiredPolicies: Object.freeze(['exception-first-projection', 'sla-state', 'server-side-bulk-selection', 'audit']),
  recoveryPolicies: Object.freeze(['partial-action-result', 'retryable-vs-terminal-error', 'stale-event-suppression', 'detail-context-retention']),
  securityPolicies: Object.freeze(['screen-permission', 'exception-action-permission', 'server-enforcement']),
})

export type WorkQueueRecipe = typeof workQueueRecipe
