Working with records · no. 1
Qualities as metadata
What a storylet engine borrows from faceted classification, and what it gives back.
CL-N-0001
- Author
- Cuneiverse Labs
- Published
- 2026-09-23
- Revised
- —
- Status
- Working paper
- Subjects
- Faceted classificationInteractive fictionGame state
- Length
- ~710 words · 4 min
A level is a single number standing in for everything a character has done. It is easy to compare and hard to read: two characters at level twelve might share nothing at all but the twelve. Quality-based narrative throws the single number away and keeps the record instead. Every fact the world can remember about a player is stored as a named quality with a value.11The term comes from Failbetter Games’ StoryNexus engine, the lineage behind Fallen London and Sunless Sea.
That is also a description of a catalogue. A library does not rank its books from one to a million. It describes each one along several independent axes and lets a reader combine them at the moment of asking.
The trouble with a single number
A level compresses. Compression is the point — one number sorts, gates and displays cheaply — but the information it throws away is exactly the information a story needs. How did this character get here? A level cannot say. It has no room for the rumour they picked up in a bar, the debt they are carrying, or the fact that they once refused to do the obvious thing.
Any system that wants to react to a history has to keep that history in a form it can query. There is a whole discipline about how to do this, and it predates the games by about a century.
Qualities are facets
Ranganathan’s faceted classification splits a subject into independent aspects that combine at query time rather than being fixed in advance by whoever built the scheme.22S. R. Ranganathan, Colon Classification (Madras Library Association, 1933). The PMEST facets are Personality, Matter, Energy, Space and Time. A storylet’s requirements do the same thing from the other direction: each requirement is a query across the player’s facets, and the set of storylets that pass is the story currently available.
| Catalogue | Storylet engine | Example |
|---|---|---|
| Facet | Quality category | attribute, rumour |
| Focus (term) | Quality | Mind, Heard of the Mourn |
| Retrieval query | Requirement | Mind ≥ 4 and not Sworn |
| Accession record | Journal entry | turn 212, at a harbour, after dark |
Written out, a requirement is a small structured query — which is why it can be checked, indexed and reasoned about rather than only executed:
requires:
mind: { gte: 4 }
sworn_to: { absent: true }
location: { harbour: pioneer-square }
What the writer gets
Once requirements are queries, a writer can ask the engine the questions a cataloguer asks of a collection, and get answers before a player ever sees the thing:
- Which storylets can no player currently reach, because nothing sets the quality they require?
- Which qualities does nothing read — written, tracked, and never used?
- Where do two storylets have requirements so close that the second is effectively unreachable?
Each of those is a coverage question, and each has an equivalent in records work: an authority file nothing points at, a metadata field nobody fills in, two subject headings that should have been one.
What the catalogue gets back
The traffic runs both ways. Games have to answer these queries thousands of times per session, on a phone, offline, so they are unusually disciplined about things records systems often leave vague:
- Requirements are data, not code
- A requirement written as a structure can be validated, listed and inverted. A requirement written as a function can only be run.
- Every change is an event
- The journal is not a log bolted on afterwards; the log is how the state got there, and it can be replayed.
- The vocabulary is closed on purpose
- A quality that isn’t declared cannot be set. It makes the schema slightly annoying to extend, which is the correct amount of annoying.
Terms
- Facet
- One independent aspect along which items are described, combined with others at query time.
- Quality
- A named, valued thing the world remembers about a player: a stat, a flag, an item, a reputation.
- Storylet
- A self-contained scene that becomes available when its requirements are satisfied.
Cite this note
Cuneiverse Labs. “Qualities as metadata.” Working paper CL-N-0001. Cuneiverse Labs Notes, September 23, 2026. https://cuneiverselabs.com/notes/qualities-as-metadata/.
Cuneiverse Labs. (2026, September 23). Qualities as metadata (Working paper CL-N-0001). Cuneiverse Labs Notes. https://cuneiverselabs.com/notes/qualities-as-metadata/
@techreport{cuneiverse2026qualities,
author = {{Cuneiverse Labs}},
title = {Qualities as metadata},
institution = {Cuneiverse Labs LLC},
number = {CL-N-0001},
type = {Working paper},
year = {2026},
month = sep,
url = {https://cuneiverselabs.com/notes/qualities-as-metadata/}
}Permalink: https://cuneiverselabs.com/notes/qualities-as-metadata/