Skip to content

Class: ClothingItem

Clothing garments: tops, bottoms, outerwear, underwear, nightwear, sportswear. COICOP 03.1 (clothing). Grounded in CPI (Clothing Product Information ontology):

http://www.ebusiness-unibw.org/ontologies/cpi/ns#ClothingAndAccessories

Assessment: condition_grade (wear grade). The demographic→size value map and all UC rules (underwear condition, adult underwear must be new) are defined in ClothingCategory (categories/clothing.yaml).

Lifecycle-aware rules here:

lc-sorted-clothing-condition-grade-required

lc-sorted-clothing-demographic-required

lc-sorted-clothing-size-required

URI: cpi:ClothingAndAccessories

 classDiagram
    class ClothingItem
    click ClothingItem href "../ClothingItem/"
      ClothingCategory <|-- ClothingItem
        click ClothingCategory href "../ClothingCategory/"
      DonationItem <|-- ClothingItem
        click DonationItem href "../DonationItem/"

      ClothingItem : attribute_completeness





        ClothingItem --> "0..1" AttributeCompletenessEnum : attribute_completeness
        click AttributeCompletenessEnum href "../AttributeCompletenessEnum/"



      ClothingItem : category

      ClothingItem : condition_grade





        ClothingItem --> "0..1" UsedConditionGradeEnum : condition_grade
        click UsedConditionGradeEnum href "../UsedConditionGradeEnum/"



      ClothingItem : created_at

      ClothingItem : demographic





        ClothingItem --> "0..1" DemographicEnum : demographic
        click DemographicEnum href "../DemographicEnum/"



      ClothingItem : donation_source





        ClothingItem --> "0..1" DonationSource : donation_source
        click DonationSource href "../DonationSource/"



      ClothingItem : id

      ClothingItem : intact_labels

      ClothingItem : is_winter_suitable

      ClothingItem : lifecycle_state





        ClothingItem --> "1" ItemLifecycleStateEnum : lifecycle_state
        click ItemLifecycleStateEnum href "../ItemLifecycleStateEnum/"



      ClothingItem : material





        ClothingItem --> "0..1" ClothingMaterialEnum : material
        click ClothingMaterialEnum href "../ClothingMaterialEnum/"



      ClothingItem : season





        ClothingItem --> "*" SeasonEnum : season
        click SeasonEnum href "../SeasonEnum/"



      ClothingItem : size





        ClothingItem --> "0..1" ClothingSizeEnum : size
        click ClothingSizeEnum href "../ClothingSizeEnum/"



      ClothingItem : sorting_notes

      ClothingItem : source_collection





        ClothingItem --> "0..1" DonationCollection : source_collection
        click DonationCollection href "../DonationCollection/"



      ClothingItem : storage_unit





        ClothingItem --> "0..1" StorageLocation : storage_unit
        click StorageLocation href "../StorageLocation/"



      ClothingItem : subcategory





        ClothingItem --> "0..1" ClothingSubcategoryEnum : subcategory
        click ClothingSubcategoryEnum href "../ClothingSubcategoryEnum/"



      ClothingItem : updated_at

      ClothingItem : usage





        ClothingItem --> "1" ItemUsageEnum : usage
        click ItemUsageEnum href "../ItemUsageEnum/"



Inheritance

Class Properties

Property Value
Class URI cpi:ClothingAndAccessories

Slots

Name Cardinality and Range Description Inheritance
condition_grade 0..1
UsedConditionGradeEnum
Observed wear/quality grade at sorting time ClothingCategory
subcategory 0..1
ClothingSubcategoryEnum
Subcategory becomes a required field on DonationItem when item's lifecycle is... ClothingCategory
material 0..1
ClothingMaterialEnum
Primary fibre or fabric composition ClothingCategory, CategoryMixin
is_winter_suitable 0..1
Boolean
Whether this garment provides meaningful warmth in cold-weather conditions ClothingCategory
demographic 0..1
DemographicEnum
Combined age-and-gender demographic suitability of clothing items ClothingCategory
size 0..1
ClothingSizeEnum
Size of the clothing item ClothingCategory
season *
SeasonEnum
Seasonal suitability ClothingCategory
intact_labels 0..1
Boolean
Whether care and composition labels are present and legible ClothingCategory
id 1
Uriorcurie
A unique identifier for the entity DonationItem
usage 1
ItemUsageEnum
Provenance condition — was the item ever used before donation? Orthogonal to ... DonationItem
category 1
String
Type-defining slot on DonationItem DonationItem
lifecycle_state 1
ItemLifecycleStateEnum
Current lifecycle state of the entity DonationItem
attribute_completeness 0..1
AttributeCompletenessEnum
Data quality tier set by the fragment engine on sorting completion DonationItem
source_collection 0..1
DonationCollection
FK — the DonationCollection (arrival type) this item was registered from DonationItem
donation_source 0..1
DonationSource
Reference to the DonationSource — privacy boundary between item records and d... DonationItem
storage_unit 0..1
StorageLocation
FK — set when lifecycle_state transitions to stored DonationItem
sorting_notes 0..1
String
Free-text notes recorded by the sorter during sorting DonationItem
created_at 1
Datetime
Timestamp when the entity was created DonationItem
updated_at 1
Datetime
Timestamp when the entity record was last modified DonationItem

Rules

lc-sorted-clothing-is-winter-suitable-required

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'lifecycle_state': {'equals_string': 'sorted'}, 'subcategory': {'any_of': [{'equals_string': 'tops'}, {'equals_string': 'bottoms'}, {'equals_string': 'outerwear'}, {'equals_string': 'nightwear'}]}} {'is_winter_suitable': {'required': True}}

lc-used-clothing-condition-grade-required

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'usage': {'equals_string': 'used'}, 'lifecycle_state': {'equals_string': 'sorted'}} {'condition_grade': {'required': True}}

lc-sorted-clothing-demographic-required

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'lifecycle_state': {'equals_string': 'sorted'}} {'demographic': {'required': True}}

lc-sorted-clothing-size-required

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'lifecycle_state': {'equals_string': 'sorted'}} {'size': {'required': True}}

lc-sorted-clothing-subcategory-required

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'lifecycle_state': {'equals_string': 'sorted'}} {'subcategory': {'required': True}}

See Also

Identifier and Mapping Information

Annotations

property value
label_en Clothing
label_de Kleidung

Schema Source

  • from schema: https://inkind-at.github.io/inkind-knowledge-repo

Mappings

Mapping Type Mapped Value
self cpi:ClothingAndAccessories
native inkind_knowledge_repo:ClothingItem

LinkML Source

Direct

name: ClothingItem
annotations:
  label_en:
    tag: label_en
    value: Clothing
  label_de:
    tag: label_de
    value: Kleidung
description: "Clothing garments: tops, bottoms, outerwear, underwear, nightwear, sportswear.\
  \ COICOP 03.1 (clothing). Grounded in CPI (Clothing Product Information ontology):\n\
  \  http://www.ebusiness-unibw.org/ontologies/cpi/ns#ClothingAndAccessories\n\nAssessment:\
  \ condition_grade (wear grade). The demographic→size value map and all UC rules\
  \ (underwear condition, adult underwear must be new) are defined in ClothingCategory\
  \ (categories/clothing.yaml).\nLifecycle-aware rules here:\n  lc-sorted-clothing-condition-grade-required\n\
  \  lc-sorted-clothing-demographic-required\n  lc-sorted-clothing-size-required"
from_schema: https://inkind-at.github.io/inkind-knowledge-repo
see_also:
- http://www.ebusiness-unibw.org/ontologies/cpi/ns#ClothingAndAccessories
is_a: DonationItem
mixins:
- ClothingCategory
class_uri: cpi:ClothingAndAccessories
rules:
- preconditions:
    slot_conditions:
      lifecycle_state:
        name: lifecycle_state
        equals_string: sorted
      subcategory:
        name: subcategory
        any_of:
        - equals_string: tops
        - equals_string: bottoms
        - equals_string: outerwear
        - equals_string: nightwear
  postconditions:
    slot_conditions:
      is_winter_suitable:
        name: is_winter_suitable
        required: true
  description: is_winter_suitable required at sorted state for tops, bottoms, outerwear,
    and nightwear. Not required for underwear (thermally neutral base layer) or sportswear
    (assessed differently by the SportsItem category). The thermal character of a
    garment is independent of usage — sorters assess what they hold.
  title: lc-sorted-clothing-is-winter-suitable-required
- preconditions:
    slot_conditions:
      usage:
        name: usage
        equals_string: used
      lifecycle_state:
        name: lifecycle_state
        equals_string: sorted
  postconditions:
    slot_conditions:
      condition_grade:
        name: condition_grade
        required: true
  description: For used clothing (usage = used), condition_grade is required.
  title: lc-used-clothing-condition-grade-required
- preconditions:
    slot_conditions:
      lifecycle_state:
        name: lifecycle_state
        equals_string: sorted
  postconditions:
    slot_conditions:
      demographic:
        name: demographic
        required: true
  description: demographic required at sorted state for all ClothingItem instances.
    Drives demand signal matching (e.g. "adult female tops, size M").
  title: lc-sorted-clothing-demographic-required
- preconditions:
    slot_conditions:
      lifecycle_state:
        name: lifecycle_state
        equals_string: sorted
  postconditions:
    slot_conditions:
      size:
        name: size
        required: true
  description: size required at sorted state. Drives demand signal matching and storage
    slot assignment.
  title: lc-sorted-clothing-size-required
- preconditions:
    slot_conditions:
      lifecycle_state:
        name: lifecycle_state
        equals_string: sorted
  postconditions:
    slot_conditions:
      subcategory:
        name: subcategory
        required: true
  description: subcategory required at sorted state. Drives demand signal matching,
    UC rule evaluation (underwear constraints), and storage routing. Not required
    at received state — category is known but subcategory is determined during sorting.
  title: lc-sorted-clothing-subcategory-required

Induced

name: ClothingItem
annotations:
  label_en:
    tag: label_en
    value: Clothing
  label_de:
    tag: label_de
    value: Kleidung
description: "Clothing garments: tops, bottoms, outerwear, underwear, nightwear, sportswear.\
  \ COICOP 03.1 (clothing). Grounded in CPI (Clothing Product Information ontology):\n\
  \  http://www.ebusiness-unibw.org/ontologies/cpi/ns#ClothingAndAccessories\n\nAssessment:\
  \ condition_grade (wear grade). The demographic→size value map and all UC rules\
  \ (underwear condition, adult underwear must be new) are defined in ClothingCategory\
  \ (categories/clothing.yaml).\nLifecycle-aware rules here:\n  lc-sorted-clothing-condition-grade-required\n\
  \  lc-sorted-clothing-demographic-required\n  lc-sorted-clothing-size-required"
from_schema: https://inkind-at.github.io/inkind-knowledge-repo
see_also:
- http://www.ebusiness-unibw.org/ontologies/cpi/ns#ClothingAndAccessories
is_a: DonationItem
mixins:
- ClothingCategory
attributes:
  condition_grade:
    name: condition_grade
    annotations:
      label_en:
        tag: label_en
        value: Wear Grade
      label_de:
        tag: label_de
        value: Abnutzungsgrad
    description: "Observed wear/quality grade at sorting time. Grounded in schema:OfferItemCondition\
      \ and schema:itemCondition. Applied to wear-graded categories: clothing, accessories,\
      \ footwear, books, stationery, household, toys, general sports equipment.\n\
      Required at sorted state regardless of usage:\n  new item, no defects      \
      \      like_new\n  new item, manufacturing defect  fair or poor\n  used item,\
      \ minimal wear         like_new or good\nSorters record what they observe,\
      \ not what the label says.\nCategories using structured assessment_result enums\
      \ instead (furniture, electronics, bedding, protective sports gear, mobility\
      \ aids, baby equipment) do NOT declare this slot."
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    see_also:
    - schema:OfferItemCondition
    - schema:LikeNewCondition
    - schema:DamagedCondition
    - schema:itemCondition
    rank: 1000
    alias: condition_grade
    owner: ClothingItem
    domain_of:
    - ClothingCategory
    - AccessoriesCategory
    - FootwearCategory
    - HouseholdCategory
    - ToysCategory
    - SportsCategory
    - BooksCategory
    - StationeryCategory
    - BabyInfantCategory
    - OtherItem
    range: UsedConditionGradeEnum
    required: false
  subcategory:
    name: subcategory
    annotations:
      label_en:
        tag: label_en
        value: Subcategory
      label_de:
        tag: label_de
        value: Unterkategorie
    description: Subcategory becomes a required field on DonationItem when item's
      lifecycle is sorted.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: subcategory
    owner: ClothingItem
    domain_of:
    - ClothingCategory
    - AccessoriesCategory
    - FootwearCategory
    - FurnitureCategory
    - BeddingTextilesCategory
    - HouseholdCategory
    - ElectronicsCategory
    - ToysCategory
    - SportsCategory
    - BooksCategory
    - StationeryCategory
    - PersonalCareCategory
    - MobilityAidsCategory
    - BabyInfantCategory
    - AnyValue
    range: ClothingSubcategoryEnum
    required: false
  material:
    name: material
    annotations:
      label_en:
        tag: label_en
        value: Material
      label_de:
        tag: label_de
        value: Material
    description: Primary fibre or fabric composition. Optional — detailed completeness
      tier. Select the dominant fibre for blended fabrics; use synthetic_blend when
      no single synthetic dominates. Exact fibre percentages from legible care labels
      may be noted in sorting_notes. See ClothingMaterialEnum for full vocabulary
      and ontology grounding.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: material
    owner: ClothingItem
    domain_of:
    - ClothingCategory
    - AccessoriesCategory
    - FootwearCategory
    - FurnitureCategory
    - BeddingTextilesCategory
    - HouseholdCategory
    - ToysCategory
    - CategoryMixin
    range: ClothingMaterialEnum
    required: false
  is_winter_suitable:
    name: is_winter_suitable
    annotations:
      label_en:
        tag: label_en
        value: Winter Suitable
      label_de:
        tag: label_de
        value: Wintertauglich
    description: 'Whether this garment provides meaningful warmth in cold-weather
      conditions. Required at standard completeness for tops, bottoms, outerwear,
      nightwear. The sorter''s direct assessment  not inferred from subcategory or
      material. The primary emergency distribution filter: "all winter-suitable clothing
      for adults."'
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    see_also:
    - schema:itemCondition
    rank: 1000
    alias: is_winter_suitable
    owner: ClothingItem
    domain_of:
    - ClothingCategory
    - FootwearCategory
    - BeddingTextilesCategory
    - BabyInfantCategory
    range: boolean
    required: false
  demographic:
    name: demographic
    annotations:
      label_en:
        tag: label_en
        value: Demographic
      label_de:
        tag: label_de
        value: Demografie
    description: Combined age-and-gender demographic suitability of clothing items.
      Valid values depend on subcategory (see value_map above). Grounded in cpi:designatedFor
      and schema.org wearable size groups. Not applicable to AccessoriesItem — accessories
      use the simpler AccessoriesDemographicEnum (baby/child/adult/all_ages).
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    see_also:
    - cpi:designatedFor
    - schema:WearableSizeGroupBaby
    - schema:WearableSizeGroupChildrens
    - schema:WearableSizeGroupAdult
    rank: 1000
    alias: demographic
    owner: ClothingItem
    domain_of:
    - ClothingCategory
    - AccessoriesCategory
    - FootwearCategory
    - SportsCategory
    - AnyValue
    range: DemographicEnum
    required: false
  size:
    name: size
    annotations:
      label_en:
        tag: label_en
        value: Size
      label_de:
        tag: label_de
        value: Größe
    description: Size of the clothing item. Valid values constrained by demographic
      via value map rules (vm-size-baby, vm-size-child, vm-size-adult). Grounded in
      cpi:ClothingSize and schema.org size systems.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    see_also:
    - cpi:ClothingSize
    - schema:WearableSizeGroupAdult
    - schema:WearableSizeSystemEU
    rank: 1000
    alias: size
    owner: ClothingItem
    domain_of:
    - ClothingCategory
    - AnyValue
    range: ClothingSizeEnum
    required: false
  season:
    name: season
    annotations:
      label_en:
        tag: label_en
        value: Season
      label_de:
        tag: label_de
        value: Saison
    description: 'Seasonal suitability. Optional  detailed completeness tier. Multivalued:
      a garment may span seasons (e.g. spring_autumn + summer). VM rules auto-derive
      is_winter_suitable for the extreme values (winter, summer, all_season); spring_autumn
      leaves the sorter to set is_winter_suitable explicitly.'
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    see_also:
    - schema:itemCondition
    rank: 1000
    alias: season
    owner: ClothingItem
    domain_of:
    - ClothingCategory
    - FootwearCategory
    range: SeasonEnum
    required: false
    multivalued: true
  intact_labels:
    name: intact_labels
    annotations:
      show_if:
        tag: show_if
        value: subcategory in [tops, bottoms, outerwear, underwear, nightwear, sportswear]
      label_en:
        tag: label_en
        value: Intact care and composition labels
      label_de:
        tag: label_de
        value: Unversehrte Pflege- und Materialetiketten
    description: Whether care and composition labels are present and legible. Improves
      match quality for beneficiaries with care requirements (e.g. allergy to certain
      materials). Detailed completeness tier.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: intact_labels
    owner: ClothingItem
    domain_of:
    - ClothingCategory
    range: boolean
  id:
    name: id
    description: A unique identifier for the entity.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    slot_uri: schema:identifier
    identifier: true
    alias: id
    owner: ClothingItem
    domain_of:
    - NamedThing
    - SocialOrganisation
    - Actor
    - StorageLocation
    - DonationSource
    - DonationCollection
    - DonationItem
    - DemandSignal
    - Campaign
    - ProvenanceRecord
    range: uriorcurie
    required: true
  usage:
    name: usage
    annotations:
      label_en:
        tag: label_en
        value: Provenance
      label_de:
        tag: label_de
        value: Provenance
    description: Provenance condition — was the item ever used before donation? Orthogonal
      to condition_grade and assessment_result. Maps to schema:NewCondition / schema:UsedCondition.
      usage = new does NOT imply no defects — manufacturing defects are possible and
      assessment must always be performed regardless of usage.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    see_also:
    - schema:OfferItemCondition
    - schema:NewCondition
    - schema:UsedCondition
    rank: 1000
    slot_uri: schema:itemCondition
    alias: usage
    owner: ClothingItem
    domain_of:
    - DonationItem
    range: ItemUsageEnum
    required: true
  category:
    name: category
    annotations:
      label_en:
        tag: label_en
        value: Item Type
      label_de:
        tag: label_de
        value: Artikeltyp
    description: Type-defining slot on DonationItem. Value is the class URI of the
      concrete subclass (e.g. inkind_knowledge_repo:ClothingItem). linkml-validate,
      gen-json-schema, and gen-pydantic all use this slot to dispatch to the correct
      subclass schema and valid slot set. For other entities (DemandSignal, StorageLocation)
      the range is overridden via slot_usage to CategoryEnum.
    notes:
    - Due to a limitation in LinkML, the designates_type annotation was removed because
      the range is an Enum and not a string.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    slot_uri: schema:additionalType
    designates_type: true
    alias: category
    owner: ClothingItem
    domain_of:
    - DonationItem
    - DemandSignal
    range: string
    required: true
  lifecycle_state:
    name: lifecycle_state
    description: Current lifecycle state of the entity. Concrete enum range applied
      via slot_usage. Transitions enforced by Django model clean().
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: lifecycle_state
    owner: ClothingItem
    domain_of:
    - DonationSource
    - DonationCollection
    - DonationItem
    - DemandSignal
    - Campaign
    range: ItemLifecycleStateEnum
    required: true
  attribute_completeness:
    name: attribute_completeness
    description: 'Data quality tier set by the fragment engine on sorting completion.
      Not derived from field presence. Not a lifecycle gate. Used by the match engine
      to filter candidates by data quality tier. See AttributeCompletenessEnum for
      the relationship to lifecycle_state. Set by: fragment_engine. Read by: match_engine.'
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: attribute_completeness
    owner: ClothingItem
    domain_of:
    - DonationItem
    range: AttributeCompletenessEnum
    required: false
  source_collection:
    name: source_collection
    description: FK — the DonationCollection (arrival type) this item was registered
      from. Null for items not arriving as part of a collection.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: source_collection
    owner: ClothingItem
    domain_of:
    - DonationItem
    range: DonationCollection
    required: false
  donation_source:
    name: donation_source
    description: Reference to the DonationSource — privacy boundary between item records
      and donor identity. Concrete range applied via slot_usage.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    slot_uri: inkind_knowledge_repo:donation_source
    alias: donation_source
    owner: ClothingItem
    domain_of:
    - DonationCollection
    - DonationItem
    range: DonationSource
    required: false
  storage_unit:
    name: storage_unit
    description: FK — set when lifecycle_state transitions to stored. Null until the
      item reaches stored state.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: storage_unit
    owner: ClothingItem
    domain_of:
    - DonationItem
    range: StorageLocation
    required: false
  sorting_notes:
    name: sorting_notes
    annotations:
      label_en:
        tag: label_en
        value: Notes
      label_de:
        tag: label_de
        value: Notizen
    description: Free-text notes recorded by the sorter during sorting. Required by
      UC warn rules to capture explicit sorter confirmation (e.g. incomplete pair,
      body-contact item, inconclusive assessment).
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: sorting_notes
    owner: ClothingItem
    domain_of:
    - DonationItem
    range: string
  created_at:
    name: created_at
    description: Timestamp when the entity was created.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: created_at
    owner: ClothingItem
    domain_of:
    - DonationSource
    - DonationCollection
    - DonationItem
    range: datetime
    required: true
  updated_at:
    name: updated_at
    description: Timestamp when the entity record was last modified.
    from_schema: https://inkind-at.github.io/inkind-knowledge-repo
    rank: 1000
    alias: updated_at
    owner: ClothingItem
    domain_of:
    - DonationItem
    range: datetime
    required: true
class_uri: cpi:ClothingAndAccessories
rules:
- preconditions:
    slot_conditions:
      lifecycle_state:
        name: lifecycle_state
        equals_string: sorted
      subcategory:
        name: subcategory
        any_of:
        - equals_string: tops
        - equals_string: bottoms
        - equals_string: outerwear
        - equals_string: nightwear
  postconditions:
    slot_conditions:
      is_winter_suitable:
        name: is_winter_suitable
        required: true
  description: is_winter_suitable required at sorted state for tops, bottoms, outerwear,
    and nightwear. Not required for underwear (thermally neutral base layer) or sportswear
    (assessed differently by the SportsItem category). The thermal character of a
    garment is independent of usage — sorters assess what they hold.
  title: lc-sorted-clothing-is-winter-suitable-required
- preconditions:
    slot_conditions:
      usage:
        name: usage
        equals_string: used
      lifecycle_state:
        name: lifecycle_state
        equals_string: sorted
  postconditions:
    slot_conditions:
      condition_grade:
        name: condition_grade
        required: true
  description: For used clothing (usage = used), condition_grade is required.
  title: lc-used-clothing-condition-grade-required
- preconditions:
    slot_conditions:
      lifecycle_state:
        name: lifecycle_state
        equals_string: sorted
  postconditions:
    slot_conditions:
      demographic:
        name: demographic
        required: true
  description: demographic required at sorted state for all ClothingItem instances.
    Drives demand signal matching (e.g. "adult female tops, size M").
  title: lc-sorted-clothing-demographic-required
- preconditions:
    slot_conditions:
      lifecycle_state:
        name: lifecycle_state
        equals_string: sorted
  postconditions:
    slot_conditions:
      size:
        name: size
        required: true
  description: size required at sorted state. Drives demand signal matching and storage
    slot assignment.
  title: lc-sorted-clothing-size-required
- preconditions:
    slot_conditions:
      lifecycle_state:
        name: lifecycle_state
        equals_string: sorted
  postconditions:
    slot_conditions:
      subcategory:
        name: subcategory
        required: true
  description: subcategory required at sorted state. Drives demand signal matching,
    UC rule evaluation (underwear constraints), and storage routing. Not required
    at received state — category is known but subcategory is determined during sorting.
  title: lc-sorted-clothing-subcategory-required