Motivation
Physical inventory management is a natural use case for a writable smart-spool tag. For anyone running more than a handful of spools — multiple shelves, drybox units, material classes segregated across a workspace — knowing where a spool physically lives is as useful as knowing what's on it. Today that information lives in external spreadsheets, Notion pages, or app databases, which defeats the "data lives on the tag" principle the spec is built on. It also means peel-and-stick tag reuse loses location context the moment a spool moves.
Current workaround and why it falls short
Section 6.2.1 (general-purpose key range 65400–65534) lets users stash arbitrary fields under a general_purpose_range_user identifier. It works, but:
- Data is opaque to any reader that doesn't know the user's private schema, so a spool tagged by one tool surfaces no location info in another — exactly the fragmentation the spec is trying to avoid.
- The cooperative "delete-on-change" rule means any cross-tool write to the GP range wipes the data.
- Every inventory app, slicer, or printer that wants to support location has to agree on an unofficial convention, which is functionally a proprietary extension dressed up as an open one.
- The 8-character cap on
general_purpose_range_user effectively limits who can claim the range to short handles/brand names.
Proposal
Add an optional storage-location field to the aux region. Aux is the right home because:
- It's user-writable, updated independently of manufacturer data.
- It legitimately changes over the spool's lifetime (shelf-to-shelf moves, reassignment after tag reuse).
- It's semantically similar to
workgroup — user/org-scoped metadata rather than material fact.
Suggested shape:
- key: <next available>
name: storage_location
type: string
max_length: 32 # open to discussion
description:
- Free-form identifier for the physical storage location of the container.
- Examples: "Shelf B3", "Drybox 2 / Slot 4", "Garage-rack-left"
- Semantics are user-defined; no hierarchy is enforced by the spec.
Alternative shape: two fields — storage_location_primary and storage_location_detail — to allow loose hierarchy (building/room vs. shelf/bin) without mandating structure. I'd lean toward a single free-form string and let applications layer structure on top, but open to either.
Open questions
- Length budget. 32 chars covers typical shelf/bin labels but is tight for something like "Building A / Room 203 / Rack 4 / Bin 12". 64 may be safer at the cost of aux-region real estate.
- Privacy. Storage labels can leak organizational info (rack IDs in a commercial facility, etc.). Probably not the spec's job to address, but worth flagging that
write_protection semantics should clearly apply to this field.
- Scope. Should this be material-class-agnostic (same field works for resin bottles in a cabinet, filament spools on a rack, etc.), or SLA-only/filament-only like
last_stir_time? Seems general enough to leave uncategorized.
- Relationship to
workgroup. Worth clarifying that workgroup is about tag provenance/write-protection and storage_location is about physical placement — they're orthogonal.
Happy to submit a PR against data/aux_fields.yaml once there's consensus on naming and length.
Motivation
Physical inventory management is a natural use case for a writable smart-spool tag. For anyone running more than a handful of spools — multiple shelves, drybox units, material classes segregated across a workspace — knowing where a spool physically lives is as useful as knowing what's on it. Today that information lives in external spreadsheets, Notion pages, or app databases, which defeats the "data lives on the tag" principle the spec is built on. It also means peel-and-stick tag reuse loses location context the moment a spool moves.
Current workaround and why it falls short
Section 6.2.1 (general-purpose key range 65400–65534) lets users stash arbitrary fields under a
general_purpose_range_useridentifier. It works, but:general_purpose_range_usereffectively limits who can claim the range to short handles/brand names.Proposal
Add an optional storage-location field to the aux region. Aux is the right home because:
workgroup— user/org-scoped metadata rather than material fact.Suggested shape:
Alternative shape: two fields —
storage_location_primaryandstorage_location_detail— to allow loose hierarchy (building/room vs. shelf/bin) without mandating structure. I'd lean toward a single free-form string and let applications layer structure on top, but open to either.Open questions
write_protectionsemantics should clearly apply to this field.last_stir_time? Seems general enough to leave uncategorized.workgroup. Worth clarifying thatworkgroupis about tag provenance/write-protection andstorage_locationis about physical placement — they're orthogonal.Happy to submit a PR against
data/aux_fields.yamlonce there's consensus on naming and length.