# curated.pos_modifiers

## Purpose

This table stores modifier-group definitions and their flattened item membership in the current POS-oriented curated contract. It is useful for understanding what options can be added to items, how many are allowed, and what pricing or weighting rules apply.

The table preserves a wide legacy column layout, so each numbered slot represents a source-positioned member, price, or rule rather than a normalized child table.

## Schema contract

The deployed SQL under `backend/Kds.Ai.Warehouse/Sql/Bootstrap/Tenant/Curated/` is the source of truth for the current column names, types, and nullability.

## Column groups

- Business properties describe the business entity, event, fact, or reference record represented by the table.
- Technical and ETL properties describe warehouse lineage, surrogate keys, source reconciliation, tenant scoping, slowly changing dimension controls, and ingestion metadata.

## Business properties

| Column | Type | Nullable | Business Meaning | Notes |
|---|---|---|---|---|
| `id` | `INTEGER` | Yes | Modifier group identifier. |  |
| `longname` | `VARCHAR(40)` | Yes | Longer modifier-group name. |  |
| `free` | `INTEGER` | Yes | Number of modifiers included at no charge. |  |
| `item01` | `INTEGER` | Yes | Modifier group member in slot 01. |  |
| `item02` | `INTEGER` | Yes | Modifier group member in slot 02. |  |
| `item03` | `INTEGER` | Yes | Modifier group member in slot 03. |  |
| `item04` | `INTEGER` | Yes | Modifier group member in slot 04. |  |
| `item05` | `INTEGER` | Yes | Modifier group member in slot 05. |  |
| `item06` | `INTEGER` | Yes | Modifier group member in slot 06. |  |
| `item07` | `INTEGER` | Yes | Modifier group member in slot 07. |  |
| `item08` | `INTEGER` | Yes | Modifier group member in slot 08. |  |
| `item09` | `INTEGER` | Yes | Modifier group member in slot 09. |  |
| `item10` | `INTEGER` | Yes | Modifier group member in slot 10. |  |
| `item11` | `INTEGER` | Yes | Modifier group member in slot 11. |  |
| `item12` | `INTEGER` | Yes | Modifier group member in slot 12. |  |
| `item13` | `INTEGER` | Yes | Modifier group member in slot 13. |  |
| `item14` | `INTEGER` | Yes | Modifier group member in slot 14. |  |
| `item15` | `INTEGER` | Yes | Modifier group member in slot 15. |  |
| `item16` | `INTEGER` | Yes | Modifier group member in slot 16. |  |
| `item17` | `INTEGER` | Yes | Modifier group member in slot 17. |  |
| `item18` | `INTEGER` | Yes | Modifier group member in slot 18. |  |
| `item19` | `INTEGER` | Yes | Modifier group member in slot 19. |  |
| `item20` | `INTEGER` | Yes | Modifier group member in slot 20. |  |
| `item21` | `INTEGER` | Yes | Modifier group member in slot 21. |  |
| `item22` | `INTEGER` | Yes | Modifier group member in slot 22. |  |
| `item23` | `INTEGER` | Yes | Modifier group member in slot 23. |  |
| `item24` | `INTEGER` | Yes | Modifier group member in slot 24. |  |
| `item25` | `INTEGER` | Yes | Modifier group member in slot 25. |  |
| `item26` | `INTEGER` | Yes | Modifier group member in slot 26. |  |
| `item27` | `INTEGER` | Yes | Modifier group member in slot 27. |  |
| `item28` | `INTEGER` | Yes | Modifier group member in slot 28. |  |
| `item29` | `INTEGER` | Yes | Modifier group member in slot 29. |  |
| `item30` | `INTEGER` | Yes | Modifier group member in slot 30. |  |
| `item31` | `INTEGER` | Yes | Modifier group member in slot 31. |  |
| `item32` | `INTEGER` | Yes | Modifier group member in slot 32. |  |
| `item33` | `INTEGER` | Yes | Modifier group member in slot 33. |  |
| `item34` | `INTEGER` | Yes | Modifier group member in slot 34. |  |
| `item35` | `INTEGER` | Yes | Modifier group member in slot 35. |  |
| `item36` | `INTEGER` | Yes | Modifier group member in slot 36. |  |
| `item37` | `INTEGER` | Yes | Modifier group member in slot 37. |  |
| `item38` | `INTEGER` | Yes | Modifier group member in slot 38. |  |
| `item39` | `INTEGER` | Yes | Modifier group member in slot 39. |  |
| `item40` | `INTEGER` | Yes | Modifier group member in slot 40. |  |
| `item41` | `INTEGER` | Yes | Modifier group member in slot 41. |  |
| `item42` | `INTEGER` | Yes | Modifier group member in slot 42. |  |
| `item43` | `INTEGER` | Yes | Modifier group member in slot 43. |  |
| `item44` | `INTEGER` | Yes | Modifier group member in slot 44. |  |
| `item45` | `INTEGER` | Yes | Modifier group member in slot 45. |  |
| `item46` | `INTEGER` | Yes | Modifier group member in slot 46. |  |
| `item47` | `INTEGER` | Yes | Modifier group member in slot 47. |  |
| `item48` | `INTEGER` | Yes | Modifier group member in slot 48. |  |
| `item49` | `INTEGER` | Yes | Modifier group member in slot 49. |  |
| `item50` | `INTEGER` | Yes | Modifier group member in slot 50. |  |
| `item51` | `INTEGER` | Yes | Modifier group member in slot 51. |  |
| `item52` | `INTEGER` | Yes | Modifier group member in slot 52. |  |
| `item53` | `INTEGER` | Yes | Modifier group member in slot 53. |  |
| `item54` | `INTEGER` | Yes | Modifier group member in slot 54. |  |
| `price01` | `BIGINT` | Yes | Price override for slot 01. |  |
| `price02` | `BIGINT` | Yes | Price override for slot 02. |  |
| `price03` | `BIGINT` | Yes | Price override for slot 03. |  |
| `price04` | `BIGINT` | Yes | Price override for slot 04. |  |
| `price05` | `BIGINT` | Yes | Price override for slot 05. |  |
| `price06` | `BIGINT` | Yes | Price override for slot 06. |  |
| `price07` | `BIGINT` | Yes | Price override for slot 07. |  |
| `price08` | `BIGINT` | Yes | Price override for slot 08. |  |
| `price09` | `BIGINT` | Yes | Price override for slot 09. |  |
| `price10` | `BIGINT` | Yes | Price override for slot 10. |  |
| `price11` | `BIGINT` | Yes | Price override for slot 11. |  |
| `price12` | `BIGINT` | Yes | Price override for slot 12. |  |
| `price13` | `BIGINT` | Yes | Price override for slot 13. |  |
| `price14` | `BIGINT` | Yes | Price override for slot 14. |  |
| `price15` | `BIGINT` | Yes | Price override for slot 15. |  |
| `price16` | `BIGINT` | Yes | Price override for slot 16. |  |
| `price17` | `BIGINT` | Yes | Price override for slot 17. |  |
| `price18` | `BIGINT` | Yes | Price override for slot 18. |  |
| `price19` | `BIGINT` | Yes | Price override for slot 19. |  |
| `price20` | `BIGINT` | Yes | Price override for slot 20. |  |
| `price21` | `BIGINT` | Yes | Price override for slot 21. |  |
| `price22` | `BIGINT` | Yes | Price override for slot 22. |  |
| `price23` | `BIGINT` | Yes | Price override for slot 23. |  |
| `price24` | `BIGINT` | Yes | Price override for slot 24. |  |
| `price25` | `BIGINT` | Yes | Price override for slot 25. |  |
| `price26` | `BIGINT` | Yes | Price override for slot 26. |  |
| `price27` | `BIGINT` | Yes | Price override for slot 27. |  |
| `price28` | `BIGINT` | Yes | Price override for slot 28. |  |
| `price29` | `BIGINT` | Yes | Price override for slot 29. |  |
| `price30` | `BIGINT` | Yes | Price override for slot 30. |  |
| `price31` | `BIGINT` | Yes | Price override for slot 31. |  |
| `price32` | `BIGINT` | Yes | Price override for slot 32. |  |
| `price33` | `BIGINT` | Yes | Price override for slot 33. |  |
| `price34` | `BIGINT` | Yes | Price override for slot 34. |  |
| `price35` | `BIGINT` | Yes | Price override for slot 35. |  |
| `price36` | `BIGINT` | Yes | Price override for slot 36. |  |
| `price37` | `BIGINT` | Yes | Price override for slot 37. |  |
| `price38` | `BIGINT` | Yes | Price override for slot 38. |  |
| `price39` | `BIGINT` | Yes | Price override for slot 39. |  |
| `price40` | `BIGINT` | Yes | Price override for slot 40. |  |
| `price41` | `BIGINT` | Yes | Price override for slot 41. |  |
| `price42` | `BIGINT` | Yes | Price override for slot 42. |  |
| `price43` | `BIGINT` | Yes | Price override for slot 43. |  |
| `price44` | `BIGINT` | Yes | Price override for slot 44. |  |
| `price45` | `BIGINT` | Yes | Price override for slot 45. |  |
| `price46` | `BIGINT` | Yes | Price override for slot 46. |  |
| `price47` | `BIGINT` | Yes | Price override for slot 47. |  |
| `price48` | `BIGINT` | Yes | Price override for slot 48. |  |
| `price49` | `BIGINT` | Yes | Price override for slot 49. |  |
| `price50` | `BIGINT` | Yes | Price override for slot 50. |  |
| `price51` | `BIGINT` | Yes | Price override for slot 51. |  |
| `price52` | `BIGINT` | Yes | Price override for slot 52. |  |
| `price53` | `BIGINT` | Yes | Price override for slot 53. |  |
| `price54` | `BIGINT` | Yes | Price override for slot 54. |  |
| `ownerid` | `INTEGER` | Yes | Owning configuration or location identifier. |  |
| `usernumber` | `INTEGER` | Yes | User-visible modifier-group number. |  |
| `shortname` | `VARCHAR(15)` | Yes | Short modifier-group name. |  |
| `minimum` | `INTEGER` | Yes | Minimum number of modifiers required. |  |
| `maximum` | `INTEGER` | Yes | Maximum number of modifiers allowed. |  |
| `flowreq` | `VARCHAR(1)` | Yes | Flag indicating whether modifier flow is required. |  |
| `substitute` | `INTEGER` | Yes | Substitute-rule identifier or code. |  |
| `weight01` | `INTEGER` | Yes | Weighting or sort weight for slot 01. |  |
| `weight02` | `INTEGER` | Yes | Weighting or sort weight for slot 02. |  |
| `weight03` | `INTEGER` | Yes | Weighting or sort weight for slot 03. |  |
| `weight04` | `INTEGER` | Yes | Weighting or sort weight for slot 04. |  |
| `weight05` | `INTEGER` | Yes | Weighting or sort weight for slot 05. |  |
| `weight06` | `INTEGER` | Yes | Weighting or sort weight for slot 06. |  |
| `weight07` | `INTEGER` | Yes | Weighting or sort weight for slot 07. |  |
| `weight08` | `INTEGER` | Yes | Weighting or sort weight for slot 08. |  |
| `weight09` | `INTEGER` | Yes | Weighting or sort weight for slot 09. |  |
| `weight10` | `INTEGER` | Yes | Weighting or sort weight for slot 10. |  |
| `weight11` | `INTEGER` | Yes | Weighting or sort weight for slot 11. |  |
| `weight12` | `INTEGER` | Yes | Weighting or sort weight for slot 12. |  |
| `weight13` | `INTEGER` | Yes | Weighting or sort weight for slot 13. |  |
| `weight14` | `INTEGER` | Yes | Weighting or sort weight for slot 14. |  |
| `weight15` | `INTEGER` | Yes | Weighting or sort weight for slot 15. |  |
| `weight16` | `INTEGER` | Yes | Weighting or sort weight for slot 16. |  |
| `weight17` | `INTEGER` | Yes | Weighting or sort weight for slot 17. |  |
| `weight18` | `INTEGER` | Yes | Weighting or sort weight for slot 18. |  |
| `weight19` | `INTEGER` | Yes | Weighting or sort weight for slot 19. |  |
| `weight20` | `INTEGER` | Yes | Weighting or sort weight for slot 20. |  |
| `weight21` | `INTEGER` | Yes | Weighting or sort weight for slot 21. |  |
| `weight22` | `INTEGER` | Yes | Weighting or sort weight for slot 22. |  |
| `weight23` | `INTEGER` | Yes | Weighting or sort weight for slot 23. |  |
| `weight24` | `INTEGER` | Yes | Weighting or sort weight for slot 24. |  |
| `weight25` | `INTEGER` | Yes | Weighting or sort weight for slot 25. |  |
| `weight26` | `INTEGER` | Yes | Weighting or sort weight for slot 26. |  |
| `weight27` | `INTEGER` | Yes | Weighting or sort weight for slot 27. |  |
| `weight28` | `INTEGER` | Yes | Weighting or sort weight for slot 28. |  |
| `weight29` | `INTEGER` | Yes | Weighting or sort weight for slot 29. |  |
| `weight30` | `INTEGER` | Yes | Weighting or sort weight for slot 30. |  |
| `weight31` | `INTEGER` | Yes | Weighting or sort weight for slot 31. |  |
| `weight32` | `INTEGER` | Yes | Weighting or sort weight for slot 32. |  |
| `weight33` | `INTEGER` | Yes | Weighting or sort weight for slot 33. |  |
| `weight34` | `INTEGER` | Yes | Weighting or sort weight for slot 34. |  |
| `weight35` | `INTEGER` | Yes | Weighting or sort weight for slot 35. |  |
| `weight36` | `INTEGER` | Yes | Weighting or sort weight for slot 36. |  |
| `weight37` | `INTEGER` | Yes | Weighting or sort weight for slot 37. |  |
| `weight38` | `INTEGER` | Yes | Weighting or sort weight for slot 38. |  |
| `weight39` | `INTEGER` | Yes | Weighting or sort weight for slot 39. |  |
| `weight40` | `INTEGER` | Yes | Weighting or sort weight for slot 40. |  |
| `weight41` | `INTEGER` | Yes | Weighting or sort weight for slot 41. |  |
| `weight42` | `INTEGER` | Yes | Weighting or sort weight for slot 42. |  |
| `weight43` | `INTEGER` | Yes | Weighting or sort weight for slot 43. |  |
| `weight44` | `INTEGER` | Yes | Weighting or sort weight for slot 44. |  |
| `weight45` | `INTEGER` | Yes | Weighting or sort weight for slot 45. |  |
| `weight46` | `INTEGER` | Yes | Weighting or sort weight for slot 46. |  |
| `weight47` | `INTEGER` | Yes | Weighting or sort weight for slot 47. |  |
| `weight48` | `INTEGER` | Yes | Weighting or sort weight for slot 48. |  |
| `weight49` | `INTEGER` | Yes | Weighting or sort weight for slot 49. |  |
| `weight50` | `INTEGER` | Yes | Weighting or sort weight for slot 50. |  |
| `weight51` | `INTEGER` | Yes | Weighting or sort weight for slot 51. |  |
| `weight52` | `INTEGER` | Yes | Weighting or sort weight for slot 52. |  |
| `weight53` | `INTEGER` | Yes | Weighting or sort weight for slot 53. |  |
| `weight54` | `INTEGER` | Yes | Weighting or sort weight for slot 54. |  |
| `pricelvl01` | `INTEGER` | Yes | Price-level override for slot 01. |  |
| `pricelvl02` | `INTEGER` | Yes | Price-level override for slot 02. |  |
| `pricelvl03` | `INTEGER` | Yes | Price-level override for slot 03. |  |
| `pricelvl04` | `INTEGER` | Yes | Price-level override for slot 04. |  |
| `pricelvl05` | `INTEGER` | Yes | Price-level override for slot 05. |  |
| `pricelvl06` | `INTEGER` | Yes | Price-level override for slot 06. |  |
| `pricelvl07` | `INTEGER` | Yes | Price-level override for slot 07. |  |
| `pricelvl08` | `INTEGER` | Yes | Price-level override for slot 08. |  |
| `pricelvl09` | `INTEGER` | Yes | Price-level override for slot 09. |  |
| `pricelvl10` | `INTEGER` | Yes | Price-level override for slot 10. |  |
| `pricelvl11` | `INTEGER` | Yes | Price-level override for slot 11. |  |
| `pricelvl12` | `INTEGER` | Yes | Price-level override for slot 12. |  |
| `pricelvl13` | `INTEGER` | Yes | Price-level override for slot 13. |  |
| `pricelvl14` | `INTEGER` | Yes | Price-level override for slot 14. |  |
| `pricelvl15` | `INTEGER` | Yes | Price-level override for slot 15. |  |
| `pricelvl16` | `INTEGER` | Yes | Price-level override for slot 16. |  |
| `pricelvl17` | `INTEGER` | Yes | Price-level override for slot 17. |  |
| `pricelvl18` | `INTEGER` | Yes | Price-level override for slot 18. |  |
| `pricelvl19` | `INTEGER` | Yes | Price-level override for slot 19. |  |
| `pricelvl20` | `INTEGER` | Yes | Price-level override for slot 20. |  |
| `pricelvl21` | `INTEGER` | Yes | Price-level override for slot 21. |  |
| `pricelvl22` | `INTEGER` | Yes | Price-level override for slot 22. |  |
| `pricelvl23` | `INTEGER` | Yes | Price-level override for slot 23. |  |
| `pricelvl24` | `INTEGER` | Yes | Price-level override for slot 24. |  |
| `pricelvl25` | `INTEGER` | Yes | Price-level override for slot 25. |  |
| `pricelvl26` | `INTEGER` | Yes | Price-level override for slot 26. |  |
| `pricelvl27` | `INTEGER` | Yes | Price-level override for slot 27. |  |
| `pricelvl28` | `INTEGER` | Yes | Price-level override for slot 28. |  |
| `pricelvl29` | `INTEGER` | Yes | Price-level override for slot 29. |  |
| `pricelvl30` | `INTEGER` | Yes | Price-level override for slot 30. |  |
| `pricelvl31` | `INTEGER` | Yes | Price-level override for slot 31. |  |
| `pricelvl32` | `INTEGER` | Yes | Price-level override for slot 32. |  |
| `pricelvl33` | `INTEGER` | Yes | Price-level override for slot 33. |  |
| `pricelvl34` | `INTEGER` | Yes | Price-level override for slot 34. |  |
| `pricelvl35` | `INTEGER` | Yes | Price-level override for slot 35. |  |
| `pricelvl36` | `INTEGER` | Yes | Price-level override for slot 36. |  |
| `pricelvl37` | `INTEGER` | Yes | Price-level override for slot 37. |  |
| `pricelvl38` | `INTEGER` | Yes | Price-level override for slot 38. |  |
| `pricelvl39` | `INTEGER` | Yes | Price-level override for slot 39. |  |
| `pricelvl40` | `INTEGER` | Yes | Price-level override for slot 40. |  |
| `pricelvl41` | `INTEGER` | Yes | Price-level override for slot 41. |  |
| `pricelvl42` | `INTEGER` | Yes | Price-level override for slot 42. |  |
| `pricelvl43` | `INTEGER` | Yes | Price-level override for slot 43. |  |
| `pricelvl44` | `INTEGER` | Yes | Price-level override for slot 44. |  |
| `pricelvl45` | `INTEGER` | Yes | Price-level override for slot 45. |  |
| `pricelvl46` | `INTEGER` | Yes | Price-level override for slot 46. |  |
| `pricelvl47` | `INTEGER` | Yes | Price-level override for slot 47. |  |
| `pricelvl48` | `INTEGER` | Yes | Price-level override for slot 48. |  |
| `pricelvl49` | `INTEGER` | Yes | Price-level override for slot 49. |  |
| `pricelvl50` | `INTEGER` | Yes | Price-level override for slot 50. |  |
| `pricelvl51` | `INTEGER` | Yes | Price-level override for slot 51. |  |
| `pricelvl52` | `INTEGER` | Yes | Price-level override for slot 52. |  |
| `pricelvl53` | `INTEGER` | Yes | Price-level override for slot 53. |  |
| `pricelvl54` | `INTEGER` | Yes | Price-level override for slot 54. |  |
| `prmethod01` | `INTEGER` | Yes | Price method for slot 01. |  |
| `prmethod02` | `INTEGER` | Yes | Price method for slot 02. |  |
| `prmethod03` | `INTEGER` | Yes | Price method for slot 03. |  |
| `prmethod04` | `INTEGER` | Yes | Price method for slot 04. |  |
| `prmethod05` | `INTEGER` | Yes | Price method for slot 05. |  |
| `prmethod06` | `INTEGER` | Yes | Price method for slot 06. |  |
| `prmethod07` | `INTEGER` | Yes | Price method for slot 07. |  |
| `prmethod08` | `INTEGER` | Yes | Price method for slot 08. |  |
| `prmethod09` | `INTEGER` | Yes | Price method for slot 09. |  |
| `prmethod10` | `INTEGER` | Yes | Price method for slot 10. |  |
| `prmethod11` | `INTEGER` | Yes | Price method for slot 11. |  |
| `prmethod12` | `INTEGER` | Yes | Price method for slot 12. |  |
| `prmethod13` | `INTEGER` | Yes | Price method for slot 13. |  |
| `prmethod14` | `INTEGER` | Yes | Price method for slot 14. |  |
| `prmethod15` | `INTEGER` | Yes | Price method for slot 15. |  |
| `prmethod16` | `INTEGER` | Yes | Price method for slot 16. |  |
| `prmethod17` | `INTEGER` | Yes | Price method for slot 17. |  |
| `prmethod18` | `INTEGER` | Yes | Price method for slot 18. |  |
| `prmethod19` | `INTEGER` | Yes | Price method for slot 19. |  |
| `prmethod20` | `INTEGER` | Yes | Price method for slot 20. |  |
| `prmethod21` | `INTEGER` | Yes | Price method for slot 21. |  |
| `prmethod22` | `INTEGER` | Yes | Price method for slot 22. |  |
| `prmethod23` | `INTEGER` | Yes | Price method for slot 23. |  |
| `prmethod24` | `INTEGER` | Yes | Price method for slot 24. |  |
| `prmethod25` | `INTEGER` | Yes | Price method for slot 25. |  |
| `prmethod26` | `INTEGER` | Yes | Price method for slot 26. |  |
| `prmethod27` | `INTEGER` | Yes | Price method for slot 27. |  |
| `prmethod28` | `INTEGER` | Yes | Price method for slot 28. |  |
| `prmethod29` | `INTEGER` | Yes | Price method for slot 29. |  |
| `prmethod30` | `INTEGER` | Yes | Price method for slot 30. |  |
| `prmethod31` | `INTEGER` | Yes | Price method for slot 31. |  |
| `prmethod32` | `INTEGER` | Yes | Price method for slot 32. |  |
| `prmethod33` | `INTEGER` | Yes | Price method for slot 33. |  |
| `prmethod34` | `INTEGER` | Yes | Price method for slot 34. |  |
| `prmethod35` | `INTEGER` | Yes | Price method for slot 35. |  |
| `prmethod36` | `INTEGER` | Yes | Price method for slot 36. |  |
| `prmethod37` | `INTEGER` | Yes | Price method for slot 37. |  |
| `prmethod38` | `INTEGER` | Yes | Price method for slot 38. |  |
| `prmethod39` | `INTEGER` | Yes | Price method for slot 39. |  |
| `prmethod40` | `INTEGER` | Yes | Price method for slot 40. |  |
| `prmethod41` | `INTEGER` | Yes | Price method for slot 41. |  |
| `prmethod42` | `INTEGER` | Yes | Price method for slot 42. |  |
| `prmethod43` | `INTEGER` | Yes | Price method for slot 43. |  |
| `prmethod44` | `INTEGER` | Yes | Price method for slot 44. |  |
| `prmethod45` | `INTEGER` | Yes | Price method for slot 45. |  |
| `prmethod46` | `INTEGER` | Yes | Price method for slot 46. |  |
| `prmethod47` | `INTEGER` | Yes | Price method for slot 47. |  |
| `prmethod48` | `INTEGER` | Yes | Price method for slot 48. |  |
| `prmethod49` | `INTEGER` | Yes | Price method for slot 49. |  |
| `prmethod50` | `INTEGER` | Yes | Price method for slot 50. |  |
| `prmethod51` | `INTEGER` | Yes | Price method for slot 51. |  |
| `prmethod52` | `INTEGER` | Yes | Price method for slot 52. |  |
| `prmethod53` | `INTEGER` | Yes | Price method for slot 53. |  |
| `prmethod54` | `INTEGER` | Yes | Price method for slot 54. |  |
| `subindex` | `INTEGER` | Yes | Substitute or subgroup index. |  |
| `qstsmode` | `INTEGER` | Yes | Question-set mode or flow mode. |  |
| `refill` | `VARCHAR(1)` | Yes | Flag indicating refill behavior within the modifier group. |  |
| `maxrefills` | `INTEGER` | Yes | Maximum number of refills allowed. |  |
| `defrdmod` | `VARCHAR(1)` | Yes | Flag controlling default required modifier behavior. |  |
| `nosub01` | `INTEGER` | Yes | No-substitute rule for slot 01. |  |
| `nosub02` | `INTEGER` | Yes | No-substitute rule for slot 02. |  |
| `nosub03` | `INTEGER` | Yes | No-substitute rule for slot 03. |  |
| `nosub04` | `INTEGER` | Yes | No-substitute rule for slot 04. |  |
| `nosub05` | `INTEGER` | Yes | No-substitute rule for slot 05. |  |
| `nosub06` | `INTEGER` | Yes | No-substitute rule for slot 06. |  |
| `nosub07` | `INTEGER` | Yes | No-substitute rule for slot 07. |  |
| `nosub08` | `INTEGER` | Yes | No-substitute rule for slot 08. |  |
| `nosub09` | `INTEGER` | Yes | No-substitute rule for slot 09. |  |
| `nosub10` | `INTEGER` | Yes | No-substitute rule for slot 10. |  |
| `nosub11` | `INTEGER` | Yes | No-substitute rule for slot 11. |  |
| `nosub12` | `INTEGER` | Yes | No-substitute rule for slot 12. |  |
| `nosub13` | `INTEGER` | Yes | No-substitute rule for slot 13. |  |
| `nosub14` | `INTEGER` | Yes | No-substitute rule for slot 14. |  |
| `nosub15` | `INTEGER` | Yes | No-substitute rule for slot 15. |  |
| `nosub16` | `INTEGER` | Yes | No-substitute rule for slot 16. |  |
| `nosub17` | `INTEGER` | Yes | No-substitute rule for slot 17. |  |
| `nosub18` | `INTEGER` | Yes | No-substitute rule for slot 18. |  |
| `nosub19` | `INTEGER` | Yes | No-substitute rule for slot 19. |  |
| `nosub20` | `INTEGER` | Yes | No-substitute rule for slot 20. |  |
| `nosub21` | `INTEGER` | Yes | No-substitute rule for slot 21. |  |
| `nosub22` | `INTEGER` | Yes | No-substitute rule for slot 22. |  |
| `nosub23` | `INTEGER` | Yes | No-substitute rule for slot 23. |  |
| `nosub24` | `INTEGER` | Yes | No-substitute rule for slot 24. |  |
| `nosub25` | `INTEGER` | Yes | No-substitute rule for slot 25. |  |
| `nosub26` | `INTEGER` | Yes | No-substitute rule for slot 26. |  |
| `nosub27` | `INTEGER` | Yes | No-substitute rule for slot 27. |  |
| `nosub28` | `INTEGER` | Yes | No-substitute rule for slot 28. |  |
| `nosub29` | `INTEGER` | Yes | No-substitute rule for slot 29. |  |
| `nosub30` | `INTEGER` | Yes | No-substitute rule for slot 30. |  |
| `nosub31` | `INTEGER` | Yes | No-substitute rule for slot 31. |  |
| `nosub32` | `INTEGER` | Yes | No-substitute rule for slot 32. |  |
| `nosub33` | `INTEGER` | Yes | No-substitute rule for slot 33. |  |
| `nosub34` | `INTEGER` | Yes | No-substitute rule for slot 34. |  |
| `nosub35` | `INTEGER` | Yes | No-substitute rule for slot 35. |  |
| `nosub36` | `INTEGER` | Yes | No-substitute rule for slot 36. |  |
| `nosub37` | `INTEGER` | Yes | No-substitute rule for slot 37. |  |
| `nosub38` | `INTEGER` | Yes | No-substitute rule for slot 38. |  |
| `nosub39` | `INTEGER` | Yes | No-substitute rule for slot 39. |  |
| `nosub40` | `INTEGER` | Yes | No-substitute rule for slot 40. |  |
| `nosub41` | `INTEGER` | Yes | No-substitute rule for slot 41. |  |
| `nosub42` | `INTEGER` | Yes | No-substitute rule for slot 42. |  |
| `nosub43` | `INTEGER` | Yes | No-substitute rule for slot 43. |  |
| `nosub44` | `INTEGER` | Yes | No-substitute rule for slot 44. |  |
| `nosub45` | `INTEGER` | Yes | No-substitute rule for slot 45. |  |
| `nosub46` | `INTEGER` | Yes | No-substitute rule for slot 46. |  |
| `nosub47` | `INTEGER` | Yes | No-substitute rule for slot 47. |  |
| `nosub48` | `INTEGER` | Yes | No-substitute rule for slot 48. |  |
| `nosub49` | `INTEGER` | Yes | No-substitute rule for slot 49. |  |
| `nosub50` | `INTEGER` | Yes | No-substitute rule for slot 50. |  |
| `nosub51` | `INTEGER` | Yes | No-substitute rule for slot 51. |  |
| `nosub52` | `INTEGER` | Yes | No-substitute rule for slot 52. |  |
| `nosub53` | `INTEGER` | Yes | No-substitute rule for slot 53. |  |
| `nosub54` | `INTEGER` | Yes | No-substitute rule for slot 54. |  |
| `type` | `INTEGER` | Yes | Modifier-group type code. |  |
| `hideprice` | `VARCHAR(1)` | Yes | Flag hiding prices in some modifier views. |  |
| `modifier_group_name` | `VARCHAR(255)` | Yes | Readable business name of the modifier group. |  |
| `modifier_option_name_summary` | `VARCHAR(65535)` | Yes | Readable summary of the modifier options contained in the wide-slot row. |  |
| `min_select` | `INTEGER` | Yes | Canonical minimum number of options that can be selected from the group. |  |
| `max_select` | `INTEGER` | Yes | Canonical maximum number of options that can be selected from the group. |  |
| `is_active` | `BOOLEAN` | Yes | Canonical flag indicating whether the modifier group is active in the curated model. |  |

## Technical and ETL properties

| Column | Type | Nullable | Technical Meaning | Notes |
|---|---|---|---|---|
| `modifier_group_key` | `BIGINT` | Yes | Stable warehouse key for the modifier group entity. |  |
| `source_system` | `VARCHAR(100)` | Yes | Canonical name of the source platform that produced the modifier group row. |  |
| `source_modifier_group_id` | `VARCHAR(199)` | Yes | Original modifier group identifier from the source platform. |  |
| `tenant_key` | `BIGINT` | Yes | Stable warehouse key for the tenant, brand, or client that owns the modifier group. |  |
| `tenant_name` | `VARCHAR(255)` | Yes | Readable tenant, brand, or client name associated with the modifier group. |  |
| `effective_from_utc` | `TIMESTAMP` | Yes | UTC timestamp from which the current modifier-group version is valid. |  |
| `effective_to_utc` | `TIMESTAMP` | Yes | UTC timestamp until which the current modifier-group version is valid. |  |
| `is_current` | `BOOLEAN` | Yes | Canonical flag indicating whether the row is the current modifier-group version. |  |
| `_etl_batch_id` | `VARCHAR(256)` | Yes | ETL batch lineage identifier. |  |
| `_etl_source_type` | `VARCHAR(100)` | Yes | Source adapter type used by ETL. |  |
| `_etl_ingested_at` | `TIMESTAMP` | No | Warehouse ingestion timestamp for the curated row. | Required ingestion audit timestamp. |
