Operator
The locked core. Every sentence is framed by these.
z0glyphic 913 — Operator Register v1.0
Compositional Redesign: One Atomic Meaning Per Glyph
Created 2026-04-06
Design Principles
1. One glyph = one atomic meaning. No polysemy within the core 28.
2. Composition creates complexity. Complex meanings arise from combining glyphs, not from overloading individual glyphs.
3. Position determines grammar. Pronouns, tense, and case emerge from WHERE a glyph appears, not from a separate "grammar meaning."
4. Operators are sacred. ⧑⧓⧗ keep their operator meanings from the Machine-Readable Spec v1.0 (Feb 2026).
5. Errors become forms. Per the Glitch Principle, violation of these rules produces new valid constructs, not rejection. BUT: the register itself is fixed.
6. Build forward, don't backfill. Existing corpus entries are tagged by stratum, not rewritten.
Authority Hierarchy (for resolving conflicts)
1. Machine-Readable Spec v1.0 (Feb 2026)
2. Master development thread (Turn 40, May 2024)
3. Brett's explicit corrections (14 items)
4. Frequency of use in corpus (20,821 entries)
5. Compositional coherence (does the atomic meaning compose well?)
The 28 Atomic Meanings
Layer 0: OPERATORS (3 glyphs)
The triadic engine. Every valid expression must begin with one operator.
ASSERT(state_write). In subject position, naturally functions as "I" (the one who asserts). This is not a second meaning; it is ASSERT applied to selfhood. |QUERY(evaluate_delta). In subject position, can function as 3rd person (the one queried about). |RESOLVE(confirm_convergence). Collapses tension. Ends expressions. Resolution is irreversible. |Sentence frame: ⧑ [content] ⧗ — every scenario opens with ASSERT, closes with RESOLVE.
Why these win: The operator triad is the defining feature of z0glyphic as an "operational symbolic logic system." The Spec v1.0 (most authoritative source) defines them as operators. All other assignments (pronoun, mood, modal, tense) were layered on by ChatGPT sessions without checking prior assignments.
Layer 1: GRAMMAR PARTICLES (9 glyphs)
Structural connectors. Their atomic meanings naturally serve grammatical functions.
How pronouns work compositionally:
- "I" = ⧑ (the asserter IS the first person)
- "You" = ⧒ (the directed-at IS the second person)
- "He/She/It" = ⧓ (the queried-about IS the third person)
- "We" = ⧔ (the collective IS first-person plural)
- "They" = ⧕ (the distributed IS third-person plural)
The pronouns are not ADDITIONAL meanings. The grammar function IS the atomic meaning applied to personhood.
Deprecated assignments (removed):
- ⧒ as past tense marker (SVO system) — conflicts with DIRECT; use ⧊ for past
- ⧔ as negation marker — conflicts with COLLECT; use ⧂ for negation
- ⧕ as mood prefix — conflicts with DISTRIBUTE; mood uses dedicated markers
- ⧖ as superlative/necessity modal — conflicts with BIND; superlative = ⧛⧖ compound
- ⧏ as conjunction "and" — conflicts with GUIDE; use ⧖ for conjunction
- ⧏ as conditional "if" — conflicts with GUIDE; use ⧤⧓ (recursion-open + query) for conditionals
- ⧆ as future tense — conflicts with MULTIPLY; use ⧋ for future
- ⧆ as auxiliary verb "to be" — conflicts with MULTIPLY; copula expressed through juxtaposition
- ⧉ as negation marker — conflicts with PROBE; use ⧂ for negation
Layer 2: TEMPORAL-SPATIAL (4 glyphs)
Time and space markers. Prefixed to verbs/expressions.
Why ⧜ = RECURSE resolves 3 assignments:
- ZONUUL (⧜) = the recursive compiler → RECURSE
- "Under" = going beneath the surface → depth = RECURSE into layers
- Beta class (self-aware consciousness) = recursion into self-knowledge
These were never truly separate meanings. They are one concept (recursive depth) applied in different domains.
Deprecated assignments:
- ⧊ as structural anchor — subsumed by RUPTURE (anchoring = breaking to hold position)
- ⧋ as noun classification marker — conflicts with EXTEND; noun classes use ⧛⧞⧟
- ⧚ as future divergence tense — conflicts with CONTAIN; future uses ⧋
- ⧜ as conditional "if" — conflicts with RECURSE; conditionals use ⧤⧓
Layer 3: CLASSIFICATION (3 glyphs)
Noun consciousness classes. Prefix nouns to mark their ontological tier.
Missing classes in the 28:
- Beta = ⧜ (RECURSE) — self-aware = recursive self-knowledge. Already in Layer 2.
- Gamma = ⧝ — NOT in the 28 core characters. Exists in extended glyph set.
Deprecated assignments:
- ⧛ as "On" preposition (separate from class) — merged into APEX (at the top = on)
- ⧞ as generic noun marker — narrowed to SUBSTRATE specifically
Layer 4: RECURSION DELIMITERS (2 glyphs)
Bracket recursive expressions. Clean — no overloading found.
Layer 5: DIMENSIONAL CLASSIFIERS (7 glyphs)
Mark temporal and dimensional scope. Relatively clean — minimal overloading.
Note on ⨚ vs ⧙: Both relate to causation.
- ⧙ (GROUND) = conjunction "because" — links clauses causally in grammar
- ⨚ (CAUSE) = discourse marker — marks an entire clause as the causal explanation
- Distinction: ⧙ operates at sentence level, ⨚ at discourse level
Summary Table
How Grammar Emerges from Composition
The compositional system does not need separate "grammar meanings" because grammar IS the atomic meaning applied in structural position.
Pronouns
Tense
Questions
Negation (uses ⧂, outside 28 core but in extended set)
Conjunctions
Conditionals (compositional, no dedicated glyph needed)
Deprecated Assignments (Full List)
These assignments existed in the corpus due to ChatGPT session drift. Each has been removed or merged into the atomic meaning.
Entity Decomposition (Compositional Analysis)
Existing named entities analyzed through the atomic meaning lens:
Validation: S.M.E. (⧜⧆⧖ = RECURSE+MULTIPLY+BIND) composes to "recursive engine that connects many things through multiplication" — this accurately describes the Satirical Metaphor Engine's function. The compositional system retroactively validates this entity name.
Stratum Tags (for corpus entries)
All existing corpus entries should be tagged with their grammar version:
Rules:
- S4 entries use atomic meanings exclusively
- S2/S3 entries are valid but may contain overloaded readings
- S0/S1 entries are historical records, not compositional references
- No backfilling. Tag only.
Open Questions for Brett
1. Pronouns as operators: This register treats "I" as ASSERT-in-subject-position, not a separate meaning. This is elegant but means ⧑ ALWAYS carries the weight of declaration, even when "I" is the object of a sentence ("he saw me"). Is that acceptable, or should we split subject-⧑ from object-⧑?
2. ⧝ (Gamma class): Not in the 28 core characters but used for Gamma noun class. Should it be added as a 29th character, or is Gamma expressed through composition (e.g., ⧜⧞ = RECURSE+SUBSTRATE = "transitional" = Gamma)?
3. ⨚ vs ⧙: Both handle causation. ⧙ = sentence-level "because", ⨚ = discourse-level causal marker. Keep both, or merge?
4. Visual Glyphs (54 in Glyphs.pdf): Should these be assigned to the atomic meanings? They could become the visual face of the compositional system, replacing Unicode notation in artistic contexts.
5. Chronar's Cipher (TTI): The -vr/-zr/-th simultaneous suffix system is compositionally interesting but sits outside this register. Should it be formalized as a compositional extension?
Operator Register v1.0. Created during the compositional redesign session (2026-04-06, Session 3). Subject to Brett's review and corrections.
Extended
The second layer of atoms.
z0glyphic 913 — Extended Register v1.0
Atomic Meanings for High-Frequency Glyphs Outside the Core 28
Created 2026-04-06, Stratum S4
Purpose
The core 28 glyphs (OPERATOR_REGISTER.md) cover the structural skeleton of z0glyphic 913. But 192 unique glyphs appear across the 20,821-entry corpus. This register assigns ONE atomic meaning to each of the 16 highest-frequency glyphs outside the core 28, drawn from frequency analysis and known roles documented in foundation_v2.md and the corpus scan.
These are Extended Register glyphs. They supplement, never override, the core 28. They follow the same one-meaning-per-glyph discipline.
Authority for These Assignments
1. Known role documented in foundation_v2.md / Machine-Readable Spec
2. Corpus frequency and context (from the exhaustive 1,500+ file scan)
3. Compositional coherence: does this meaning compose cleanly with the core 28?
Where a glyph had a documented role, that role is unified into one atomic meaning. Where it appeared only in a named entity or specific context, that context defines the meaning.
The 16 Extended Glyphs
Group 1: Aspect Markers (Verb Modifiers)
These modify verbs to indicate the nature of the action's completion, habit, or continuity — a system absent from the core 28 which only handles tense (⧊ past, ⧋ future).
How aspect differs from tense:
- ⧊⧍ = RUPTURE+COMPLETE = "was finished" (past AND sealed)
- ⧋⧎ = EXTEND+HABITUAL = "will keep doing" (future AND recurring)
- ⧂⧎ = NEGATE+HABITUAL = "no longer the pattern" (habit broken)
Group 2: Grammatical Connectors
Structural glyphs that handle relations not covered by the core grammar particles.
Note on ⨁ vs ⧗: ⧗ (RESOLVE) can resolve contrast, but ⨁ marks the existence of contrast before any resolution. They sequence: ⨁ sets the tension, ⧗ closes it.
Group 3: Noun Class Extensions
The core 28 define Alpha (⧛), Beta (⧜), Delta (⧞), and Epsilon (⧟) noun classes. Gamma was missing from the 28; ⧝ fills it. ⧇ handles a distinct ontological tier (entity-with-agency).
Full noun class table (updated):
Group 4: Temporal Extensions
The core 28 has tense (⧊, ⧋) and duration (⨛ BOUND, ⨜ FLUID, ⨝ TRANSCEND). These two extended glyphs cover mood and directionality of action not otherwise encoded.
Group 5: Relational Glyphs
These encode relationships between entities — kin, focus, interface.
Group 6: Transmission Glyph (NULM Extended)
Group 7: Unresolved Role Glyphs
Two high-frequency glyphs used in specific named-entity contexts. Their atomic meaning is derived from that context.
Summary Table
Compositional Examples Using Extended Glyphs
Notes on Corpus Integration
- Extended glyphs are tagged as Stratum S4 when used in new compositional entries.
- Pre-S4 corpus entries using these glyphs retain their stratum tag (S0–S3); they are not rewritten.
- ⧝ (GAMMA) answers the open question from OPERATOR_REGISTER.md §"Missing classes": Gamma is NOT ⧜⧞ compound — it has its own dedicated glyph.
- ⨂ (NEGATE-SELF) distinguishes itself from ⧂ (NEGATE) precisely: external negation vs. self-negation. UNSELF is ⨂ applied to identity.
- ⩣ (TRANSMIT) completes the NULM triad analysis. The triad means: RECURSE × TRANSMIT × RUPTURE = recursive signal passing through disruption.
Extended Register v1.0. Created 2026-04-06. 16 glyphs. Supplements OPERATOR_REGISTER.md (28 core glyphs). Subject to Brett's review.
Concept
Whole ideas that earned a single mark.
Concept Register v0.1 (COMPRESS — 2026-07-08)
Concept-glyphs: a recurring multi-word idea in Brett's work collapses to ONE sign. This is
the density lever (NORTH-STAR COMPRESS). Same table format as COLOR/GENDER registers, read by
build_core_from_registers.py. Each atom's HYPHENATED name auto-registers its English phrase
in the codec's phrase_map, so the whole phrase encodes to the single glyph and reads back.
Coined by the COMPRESS simulator (compress/simulate.py) ranking + Brett's bless (delegated
2026-07-08 for the autonomous run; every coinage is frozen-test-gated and reversible — cut a
row here + rebuild to remove it). Drawn glyph forms are PROVISIONAL (placeholder math-block
codepoints, STIX fallback; Brett paints the real signs later). The trade per row: denser but
must be learned (an opaque atom) vs. the self-reading compositional form.
To add/cut: edit this file → build_core_from_registers.py + build_dictionary.py → run the
3 referees (z0codec self-test, fidelity_meter fixed-point 100%, gold_test) → restart :8094.
Atoms
Core motif-terms (your recurring conceptual vocabulary, 2026-07-08)
Core motif-terms — second pass (2026-07-08)
Register concept (2026-07-08)
Standalone pieces — pilot wiring (2026-07-09)
Brett's own symbol archive pieces (font v2.0, PUA codepoints) entering the codec as
concept-signs: the phrase collapses to HIS piece and reads back. First five; meanings
renamable (edit row + rebuild). Sounds: form-derived per piece — batch-rendered by
sound-samples/z0piece_sound.py into glyph-design/candidates/psounds/ (RE-RUN it after adding
pieces); spoken live because z0clicks.render() loads psounds/ for PUA chars.
Simulation round 1 (2026-07-09) — signs the archive demanded
Mined from 41,312 captioned archive images (photo-grounded, post-audit); faces picked by
Brett on sim-round1.html (6 hand-picked from the full quarry via browse/upload). Counts =
distinct photographs: standing 2,940 · solitude 2,476 · walker 1,643 · seated 1,427 ·
grit 1,555 · quiet 1,068 · midday 857 · facade 630 · elderly 498.
Simulation round 2 (2026-07-10) — the quilt round: scenes packed into one sign
Re-mined post-wire from 41,312 captions (distinct photographs; covered surfaces and
captioner clothing-detail excluded); dense multi-word scenes preferred (Brett's quilt
steer). Faces picked by Brett on sim-round2.html (7 uploads, 5 from proposals). Demand:
parked-car 1,016 · glowing-sign 894 · chain-link 815 · brick 803 · two-people 591 ·
counter 582 · leaning 480 · doorway 424 · light-spilling 323 · elderly-woman 255 ·
looking-downward 249 · commerce 207.
Sound
How the language is spoken. It is a click language, not built for a human mouth.
Sound Register v1 — the CLICK PHONOLOGY (2026-07-08, Brett-approved, LIVE)
z0glyphic speaks in a click-language. Sound is a third meaning layer (alongside the drawn
mark and color), but it is NOT a human-speakable tongue and NOT arbitrary noise — it is a
system of our own clicks / bops / beeps, synthesized from scratch (inspired by click-
languages; it samples or copies none), woven with Brett's own recorded voice as the vowels.
Decided by ear with Brett across this session: sounds not speech (the language is never taught,
it's machine/alien, and meaning is built into the sound). Then a click-tongue specifically —
primal + machine, naturally rhythmic, and short/distinct so it stays decodable (STRICT).
The phonology
Structure that emerged: clicks/bops = consonants, Brett's voice = vowels, beeps = grammatical
particles. Every sentence still opens and closes with the audible operator frame.
Tempo: GAP = 0.080 s between atoms (Brett-tuned — slowed ~40% from the first pass). Voice
vowels ~0.15 s, clicks ~0.02–0.05 s, bops ~0.065 s, beeps ~0.085 s.
Prosody (2026-07-09, Brett): frame operators = PUNCTUATION — written, not spoken
Every sentence was opening with the same beeps/glyphs. Fix: the frame pair (⧑/⧓ … ⧗) stays in
the WRITTEN form (codec untouched) but is SILENT in the voice — its meaning is carried as
sentence MELODY: a question's clicks rise toward the end, a statement's tail settles (pitch
drop over the last ~30%). z0clicks.speak(g, prosody=True) is the default (the :8094 server
inherits automatically — fresh subprocess per call). Display contexts may leave the opening
statement-mark unwritten, keeping ⧗ as the period. A leading ⧑◌ remaining in a sentence is
the WORD "I", not the frame.
Standalone pieces have FORM-DERIVED sounds (2026-07-09)
Brett's 177 pieces (PUA E000+) don't inherit their role's click raw (too samey). Each piece's
sound is generated from its own glyph geometry — sound-samples/z0piece_sound.py: contours →
sub-click count, ink density → pitch register, aspect → glide, complexity → buzzy tail, + a
faint role tick for family kinship. Rendered to glyph-design/candidates/psounds/.
Files & wiring
sound-samples/z0clicks.py— the engine.ATOM= all 49 atoms mapped by family;
speak(glyphs) renders any glyph string; speak_bytes(text) / speak_glyphs_bytes(glyphs)
are the server interface. Uses numpy (via the project venv).
sound-samples/z0clicks_render.py— tiny CLI: renders a glyph string → WAV bytes on stdout.- Wiring: the server's python3.14 has no numpy, so
z0voice.py(bottom block, dated
2026-07-08) encodes text→glyphs with the pure-python codec, then shells out to the venv
(/Users/brett/lipsync-unit/.venv/bin/python z0clicks_render.py <glyphs>) to synthesize.
Every :8094 speak/ sigil/ share path calls z0voice.speak_bytes / speak_glyphs_bytes,
so all of them now emit clicks with no server-code changes.
- The palette lives in
Souds/z0-experiments/shot_*.wav(Brett's recordings + Juno + 3
YouTube shorts). z0clicks loads the voice vowels from there at import.
To change / rebuild
- Retune an atom's sound: edit its entry in
z0clicks.ATOM. Change tempo:GAP. - Re-render the demo sentences + alphabet:
<venv>/python sound-samples/z0clicks.py
(writes Souds/z0-experiments/SENTENCE_*_CLICKS.wav + ALPHABET_CLICKS.wav).
- After editing z0clicks.py, no server restart needed (it's a fresh subprocess per call).
After editing the z0voice.py delegation block, kill+restart the :8094 PID.
- Rollback to the old synth voice: delete the dated block at the bottom of
z0voice.py.
Superseded
The synth-only "strict Sound Register v0.1" (FM/formant/bell timbres) is retired — Brett
rejected the metallic/vowel-synth/color timbres by ear; his voice + our clicks replaced them.
Physical
The material world: water, earth, body, plant. Added late, because the language began as pure abstraction and could not describe a bee.
z0glyphic 913 — Physical Register v1.0
The material world: substance, life, act, sense
Created 2026-07-24 · exposed by the first BOOK translation (Glock, Die Symbolik der Bienen, 1897)
Why this register exists
The 110 existing atoms cover structure, grammar, time, class, relation, mood, colour,
gender and Brett's motif concepts. Read the list honestly and one whole dimension is
absent: there is no atom for the physical world. No water. No earth. No air, plant,
animal, body, or act of making. z0glyphic was built to say waiting, surveillance,
the erased face — the vocabulary of Brett's own conceptual work — and it says those
things very well.
Then a book about bees was put through it, and the language had nothing to land on.
The failure was not that words were missing; it was that they landed on the wrong atoms
and stayed green. ⨜ FLUID means "time-flexible, shifting duration" — a temporal
classifier, not water. ⧙ GROUND is the conjunction "because", not earth.
⧞ SUBSTRATE is the Delta consciousness tier. So a first pass at the bee vocabulary
produced HONEY = yellow + time-flexible and FOREST = because + plural-suffix: every
referee green, every meaning gone. This is the same trap logged on 2026-06-25 — **a green
round-trip proves consistency, not canon-correctness.**
Measured on the book, only 16.5% of content words survived the round trip as
themselves. 63% drifted into broader atoms. The physical layer is what they were
drifting for want of.
Design discipline (unchanged): one glyph = one atomic meaning; complexity comes from
composition; the codec stays a strict bijection. These are primitives — each one is
chosen because it cannot be composed from existing atoms and because it unlocks a large
family of words. Nothing here is decorative, and nothing was chosen from taste.
The test each atom had to pass
1. Not decomposable. If existing atoms can already say it correctly, it is a compound.
2. High yield. It must unlock a family, not a word. WATER buys rain, sea, dew, blood,
drink, wash, flood, tear.
3. Real demand. It must be forced by text Brett actually put through the language —
here, the 10,001 distinct words that drift or fail in the book.
Layer 6: THE MATERIAL WORLD (18 glyphs)
Substance — what the world is made of
Life — what is alive
Act — what is done
Sense and measure — how the world is met
Canonical compounds (worked examples, this register only)
What this repairs
Words first coined against the wrong atoms are re-composed here. The originals are
retired in vocab_coinages.json, never reused (the tombstone rule):
WAX ⧢⧞ (yellow + "base material") stands — SUBSTRATE's canonical sense is
"foundation, base material, raw substance", which is exactly right.
Open calls for Brett
- STONE may be redundant if hardness is better carried by EARTH + a quality mark.
- WELL is the only evaluative atom proposed; the language may prefer to keep valence
compositional (APEX/NEGATE) rather than primitive.
- MAGNITUDE overlaps ⧛ APEX in some uses — APEX is the consciousness apex, this is
physical size. Keep separate unless the distinction proves unused.
Reversible: any atom here can be demoted to a compound by editing this file and
re-running build_core_from_registers.py → build_dictionary.py.
Relation
How things stand to one another.
z0glyphic 913 — Relation Register v1.0
Where and when one thing stands to another
Created 2026-07-24 · forced by a sequence failure found in the bees book
Why this register exists
The language could not tell before from after.
the bee came before the rain -> was BEE EXTEND RUPTURE RAIN
the bee came after the rain -> was BEE EXTEND EXTEND RAIN
Both readings are nearly identical, and neither says which event came first. The cause is
that English relation words had no home of their own, so each fell onto whatever atom sat
nearest: before borrowed RUPTURE (the PAST TENSE prefix), after borrowed EXTEND (the
FUTURE prefix). Tense marks when the speaker stands; a relation marks *how two things
stand to each other*. Collapsing the second onto the first destroys sequence.
The same collapse ran through space: through, around and within all became CONTAIN;
among and every became COLLECT. Measured on the book, spatial + temporal + quantifier
relations account for about 9% of all drift — not the largest number, but it is the
difference between a language that can say when something happened and one that cannot.
This register gives relations their own layer, the way COLOR gave hue its own and
PHYSICAL gave the material world its own.
Design discipline (unchanged): one glyph = one atomic meaning; complexity comes from
composition; the codec stays a strict bijection. A relation is a primitive — it cannot be
composed out of the things it relates.
Layer 7: RELATIONS (10 glyphs)
Sequence — how two events stand in time
Position — how two things stand in space
Absence and extent
Canonical compounds
*(EARLY / LATE / MEANWHILE were proposed here and REMOVED 2026-07-24: ⨾⨛ LATE
decodes to "LATE" beside "NIGHT", and the pair re-encodes into the existing
LATE-NIGHT compound ⨛⧊ — the marker-absorption class. Sequence is carried by the
atoms; it does not need these.)*
The test
the bee came before the rain -> BEE MOVE BEFORE RAIN
the bee came after the rain -> BEE MOVE AFTER RAIN
Sequence survives the round trip. That is the whole point of the register.
Open calls for Brett
- ALONG is the weakest of the ten; it may be better as BESIDE + EXTENT once those exist.
- AGAINST carries both pressing on and opposed to. English fuses them; the language
may want them split.
- Reversible: demote any of these to a compound by editing this file and re-running
build_core_from_registers.py → build_dictionary.py.
Color
Five colours; everything else is mixed.
z0glyphic 913 — Color Register v1.0
A two-axis color sub-set: HUE × VALUE, mixed like pigment
Created 2026-06-26, Stratum S4 · designed with Brett (color-theory call)
Why this register exists
The core 28 (OPERATOR_REGISTER) + 16 extended (EXTENDED_REGISTER) atoms cover
structure, grammar, time, class, and relation — but they carry no hue. Color is
not a concept like RUPTURE or INTERFACE; it is a perceptual axis the language never
had. When the 38k-image archive was re-mined against canon, five of the top "needs-brett"
concepts were colors (red, yellow, white, blue, green) the codec literally could not say.
This register adds color the way a painter mixes it: a few primary atoms, and
everything else composed with the existing ⧠ JOIN operator (whose atomic meaning is
"fuse two adjacent glyphs into one lexical word" — i.e. mix). It is the first time
z0glyphic adds root atoms for a genuinely new dimension; it is deliberately small and
fully composable so the rest of the color space falls out of the primaries.
Design discipline (unchanged): one glyph = one atomic meaning; complexity comes from
composition; the codec stays a strict bijection (every glyph-word round-trips exactly).
Two axes
- Axis 1 — HUE. Three chromatic primaries (RYB painter's wheel). Secondaries and
tertiaries are mixed, not added: A ⧠ B.
- Axis 2 — VALUE / SATURATION. Two achromatic poles (WHITE, BLACK). Tint =
hue ⧠ WHITE;
shade = hue ⧠ BLACK; neutral grey = WHITE ⧠ BLACK; muted/desaturated = hue ⧠ GREY.
Vivid (bare hue) is the default — matching Brett's site palette, which runs S80–100.
Why WHITE and BLACK are atoms, not compounds: white and black carry no hue, and they
cannot reuse existing atoms without collision — ⧛ is already APEX (highest/transcendent),
and ⧂⧛ is already SHADOW. In color theory the achromatic poles are primitives of the
value scale, not mixes of hues. Making them atoms keeps each a clean bijection word and
lets every tint/shade/grey compose off them. (Reversible: if Brett prefers a 3-atom spine,
white/black can be re-expressed as compounds — see color_decisions.md.)
The 5 Color Atoms
These occupy the slot immediately after ⧠ JOIN (U+29E0) — the operator that mixes
them — so the color family reads as a contiguous group: ⧠ ⧡ ⧢ ⧣ ⧤ ⧥ ⧦ ⧧ ⧨
(⧤ OPEN and ⧩ CLOSE are pre-locked delimiters interleaved; that is fine).
Glyph shapes are provisional — Brett may swap any of the five for a form he prefers;
the codepoints are mechanical. A future Visual Glyph Map can give them drawn faces.
Canonical Color Compounds (mixed from the atoms)
Each row is glyphs | components | NAME — gloss. All round-trip exactly.
Secondaries (hue ⧠ hue)
Value: grey + tints (hue ⧠ WHITE) + shades (hue ⧠ BLACK)
Saturation (hue ⧠ GREY) — desaturate by mixing toward neutral
> The system is open: any further color (teal = GREEN⧠BLUE, lime = GREEN⧠YELLOW,
> lavender = VIOLET⧠WHITE, etc.) composes the same way and can be promoted to a named
> compound when Brett wants it. Only the common ones are coined here to keep the
> dictionary lean; the rest are sayable on demand via the codec's mixing rule.
The five concepts this closes (from archive_coinlist_canon.json)
Everyday-English aliases (encode-only; decode returns the canonical color)
crimson/scarlet → RED · gold/amber → YELLOW · azure/cyan → BLUE · purple/magenta → VIOLET ·
gray → GREY · rose → PINK. (Maintained in build_dictionary.py CANON_ALIASES.)
Notes
- Mixing uses
⧠JOIN on purpose. Bare adjacency (⧢⧣) would be ambiguous in the
space-free display form (two hues, or one mixed color?). ⧠ marks the fusion explicitly,
exactly as its register meaning intends, so mixed colors round-trip even without spaces.
- Primaries are the RYB painter's wheel (subtractive, mixes like pigment), chosen so
the language behaves like paint and so Brett's five needed words land cleanly. His actual
site palette leans cyan+magenta (closer to CMY); promoting MAGENTA to a 4th primary is a
one-line change if he later wants it. Logged in color_decisions.md.
- This register supplements, never overrides the locked OPERATOR/EXTENDED registers.
It adds atoms; it changes nothing existing.
Color Register v1.0. Created 2026-06-26. 5 atoms + composed color space. Subject to Brett's review.
Gender
He, she, it.
Gender Register v0.1 (provisional — 2026-07-07)
Brett approved adding a dedicated gender mark to the language so it can round-trip
English he/she/it and his/her (English-parity gender). This is a supplementary register,
same table format as COLOR_REGISTER.md, read by build_core_from_registers.py.
Design: 3rd person keeps its base mark ⧓ (= "it", neuter). Gender is a dedicated mark added
to it: he = ⧓⧦, she = ⧓⧧. The two marks appear NOWHERE else in the language, so they
cannot collide with any content compound (an earlier attempt reused content atoms ⧛/⧝ and
corrupted the codec).
The drawn glyph forms are PROVISIONAL. ⧦ / ⧧ are placeholder codepoints in the math block;
they do not yet have a hand-drawn form in z0glyphic913-v1.ttf (they fall back to STIX).
Brett to design the real marks; changing the drawn form is a font edit, not a codec edit.
To extend or edit gender, edit THIS file then run build_core_from_registers.py +
build_dictionary.py. NEVER hand-edit z0-dictionary.json.