Identities, tags and containers
Status: proposed
Every entity and record has a stable urn:uuid: identity. Record IRIs are deterministic (UUID v5 from the instrument’s namespace and the submission key), so exporting again creates nothing new. Instance data never uses the nwss: namespace.
A tag (a QR or other printed code) bears an identity; it is not the identity. A tag assignment links a tag to a service point, container, collector or service round and is valid from assignment until it is superseded. An entity has at most one active tag, a code has at most one active assignment, and the assignment history is never rewritten. A scan resolves to whatever the tag was assigned to at the time of the scan. A scan that falls between two assignments of one code resolves to the entity of the assignment that closed before it when the next assignment gives the code back to that same entity, and when the code was never assigned again; a gap before a different entity stays unresolved. A tag that bears a collector reveals who the person is, so that assignment is held in the people register. The graph records only the collector’s agent IRI.
Because a tag bears an identity and is not it, an entity can be identified without its tag. A collection where the tag was lost can be resolved to its service point from other evidence the collector records, such as a photograph and the street address, with the outcome “collected without a tag scan”. The standard states what is possible; whether a project’s instruments capture it is the project’s choice. (novaWaste2 has no such path: a scan without a QR never reaches a Stand.)
A container gets its identity when it first becomes distinguishable, normally at the first scan of its tag (the ncgs lazy-creation rule).
Distilled from novaWaste2’s QR registry (docs/distillation/entities.md §2). NWSS adds the assignment window to the ncgs tag rule (ncgs ADR-0002, 0003) because service tags are reassigned and replaced over years. The gap rule follows novaWaste2’s scan resolution (#524): a code taken off a bin and put back on it, or never re-issued, still names that bin, while a code re-issued to something else does not say which of the two a gap scan was meant for.