Field Guide

How to read a P:X.

Six trait categories describe every edition. This guide covers what each one means, the naming logic behind the composition trait, the palette, and the 16 curated numbers, with everything read directly from the deployed algorithm.

Trait overview

Six categories, 384 editions

Counts below are the distinct values that actually appear across the collection. Speed, Transition Interval, and Pulse Direction aren't just rarity signals. See how they work as the piece's actual medium.

TraitDistinct valuesNotes
Type2Curated or Generated. Only the 16 curated numbers carry Curated.
Color1110 named base colors from the generator's own color array, plus Rainbow, a 1/1 exclusive to the closing edition, #383.
Composition128 relationships that occur across the randomly generated editions, 3 that are 1/1 exclusives, and one undocumented value left in the code by accident. Full breakdown below.
Pulse Direction2Contractive on 376 editions (all 368 generated, plus 8 curated). Expansive on exactly 8, all curated, all set explicitly in code.
Speed50Numeric, derived from the animation's frame interval. Sampled values range roughly 77–112.
Transition Interval5Numeric. Every possible value the code can produce: 2, 3, 4, 5, 6.

Color

The palette

Ten base colors, pulled directly from the deployed generator script's own color array. One more value, Rainbow, is a one-token exclusive: it only ever appears on the closing edition, #383.

Orange
#FE7D05
254+125+5 = 384
Pink
#D71990
215+25+144 = 384
Blue
#0978FF
9+120+255 = 384
Green
#2EFF53
46+255+83 = 384
Cyan
#00B8C8
0+184+200 = 384
Ghost Black
#232B2B
35+43+43 = 121
Black
#000000
0+0+0 = 0
Ghost White
#F8F8FF
248+248+255 = 751
Yellow
#FFDF00
255+223+0 = 478
Red
#FF0505
255+5+5 = 265
Rainbow (1/1)
exclusive to #383

The 384 easter egg, fully verified. Reading straight from the generator script's own color array: exactly 5 of the 10 named colors (Orange, Pink, Blue, Green, Cyan) have red, green, and blue channels that add up to precisely 384, the same number as P (16th letter) × X (24th letter). The other 5 (Ghost Black, Black, Ghost White, Yellow, Red) don't, and aren't meant to. They're the piece's structural neutrals and primaries, not part of the 384 set.

Composition

The naming system

Composition describes how the P-stem and the two X-stems overlap or mirror one another. This is read straight from the deployed generator script, not inferred from samples. Each diagram below: the highlighted bar is the P-stem, the dim bars are the X-stems, and the small circle marks each bar's leading end. That's the same circle-and-bar vocabulary the piece itself is built from. These 8 are rolled independently on every randomly generated edition, so a single token can carry more than one at once.

Pclipse
P-stem paired: the P's stem fully overlaps one of the two X stems.
Xclipse
X-stems paired: the two X stems fully overlap each other.
Crossover
The P-stem sits vertically mirrored from one of the X stems.
Reflections
The two X stems mirror each other vertically.
Lazy Crossover
The P-stem sits horizontally mirrored from one of the X stems.
Lazy Reflections
The two X stems mirror each other horizontally.
Hostile Takeover
The algorithm draws the P-disc after a colon disc, at the same spot, so the P-disc wins and sits on top.
Preferential Treatment
The reverse: the algorithm draws a colon disc after the P-disc, at the same spot, so the colon disc wins.

That's 8 values. The remaining 4 that bring the trait to 12 aren't generative dice-rolls. They're hardcoded exceptions, each tied to a specific token:

Isolated 1/1 · #29
Hardcoded exclusively for edition #29, stacked as a second Composition value alongside Hostile Takeover on that same token.
At Attention 1/1 · #233
Hardcoded exclusively for edition #233. Both X-stroke rotations are set to 0, so instead of crossing, they stand straight up, in formation with the P-stem and colon.
Rebound 1/1 · #383
Hardcoded exclusively for edition #383, the closing token, stacked as a second Composition value alongside Lazy Crossover on that same token.
b:x
Not a designed trait. The code pushes the literal string "b:x" as a bonus Composition value on every generated edition whose number is a multiple of 7, roughly 55 tokens. Almost certainly a debug label the artist never cleaned up before shipping, now permanent on-chain.
An edition carrying the b:x composition value, looking entirely ordinary
An actual b:x edition. Nothing about it looks different, which is the whole point.

Editions #11, #313, and #349 hit neither dice roll, so they carry no Composition value at all. That's why the OpenSea trait filter shows nothing for them. It's not a data gap, it's what the code actually does.

Curated numbers

The 16

The only editions carrying Type: Curated: 2, 11, 29, 43, 61, 89, 107, 149, 173, 211, 233, 277, 313, 349, 367, and 383. Every value below, including Pulse Direction, is read directly from the deployed generator script.

EditionToken IDColorCompositionPulseSpeedTrans.
#254000002BlackLazy ReflectionsContractive824view ↗
#1154000011BlacknoneContractive784view ↗
#2954000029Ghost WhiteHostile Takeover + IsolatedContractive834view ↗
#4354000043YellowLazy ReflectionsContractive775view ↗
#6154000061Ghost BlackReflectionsContractive772view ↗
#8954000089BlackLazy ReflectionsExpansive786view ↗
#10754000107BlackReflectionsExpansive785view ↗
#14954000149BlackLazy ReflectionsExpansive783view ↗
#17354000173CyanLazy ReflectionsExpansive834view ↗
#21154000211RedLazy ReflectionsExpansive783view ↗
#23354000233Ghost WhiteAt AttentionExpansive773view ↗
#27754000277BlackReflectionsExpansive833view ↗
#31354000313PinknoneContractive853view ↗
#34954000349YellownoneContractive833view ↗
#36754000367BlackLazy CrossoverExpansive784view ↗
#38354000383RainbowLazy Crossover + ReboundContractive813view ↗

Pulse Direction splits exactly 8/8 across the curated set. Every Expansive edition here traces to pdotMul = 0.75 hardcoded in the script. Everything else in the whole 384-edition collection is Contractive.