Design
Date: 2025 Oct 27
Words: 245
Draft: 1 (Most recent)
The Organizational Container vs. Labeler Problem: Let’s say you want to have some tags be used to label objects, and some tags just to organize and contain those tags. For example, you want to label files based on their reading completion and their source format. If you just had plain nested tags, you could accidentally label an object with the literal tag “reading completion” or “format”, which would show up in queries and cause all sorts of issues downstream. So how do you make it so you can’t label objects with organiztiional containers in a human-readable, keyboard-typable format?
If we were to use JSON, there would be no clean and easy way to type it out. Here are the cleanest possible ways to do it:
{
"reading levels":
["not read", "skimmed", "partially read", "read", "re-read"],
"format":
["journal", "book", "webpage"]
}
[
{
"tag": "reading levels",
"labeler": false,
"children": {
{"tag": "not read",
"labeler": true,
"children": null},
{"tag": "skimmed",
"labeler": true,
"children": null},
{"tag": "partially read",
"labeler": true,
"children": null},
{"tag": "read",
"labeler": true,
"children": null},
{"tag": "re-read",
"labeler": true,
"children": null}
},
{
"tag": "format",
"labeler": false,
"children": {
{"tag": "journal",
"labeler": true,
"children": null},
{"tag": "book",
"labeler": true,
"children": null},
{"tag": "webpage",
"labeler": true,
"children": null}
}
]
Verbose and unsightly!
To solve this, ENTS introduces the “Dud Tag”, which is an
organizational container for other labelers, but is not a labeler
itself. It is demarked with the + icon. It is used as
such: