{
  "schema": "ab5d-series-essay/1",
  "identity": {
    "chainId": 1,
    "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
    "projectId": 315,
    "slug": "rotor-by-sebastian-brocher-cryptoarte",
    "title": "Rotor",
    "artistCredit": "Sebastián Brocher (CryptoArte)",
    "artistDossierUrls": [
      "https://ab5d.xyz/artists/sebastin-brocher-cryptoarte/"
    ]
  },
  "revision": 2,
  "researchCutoff": "2026-09-20",
  "status": "published-with-research-limitations",
  "rights": {
    "artwork": {
      "reportedLabel": "CC BY-NC 4.0",
      "category": "creative-commons",
      "termsUrl": "https://creativecommons.org/licenses/by-nc/4.0/",
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S02",
        "S07"
      ],
      "note": "Linked label; non-commercial, no share-alike.",
      "unresolvedConflicts": []
    },
    "code": {
      "reportedLabel": null,
      "category": "unknown",
      "termsUrl": null,
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S02"
      ],
      "note": "No licence statement in the program.",
      "unresolvedConflicts": []
    },
    "thirdParty": [
      {
        "name": "p5.js (file at cdnjs 1.0.0 path, banner v0.10.2)",
        "reportedLabel": "GNU LGPL notice text present in bundle",
        "category": "custom",
        "termsUrl": null,
        "observedAt": "2026-09-20",
        "sourceIds": [
          "S08"
        ],
        "note": "Loaded at view time, not embedded in the on-chain program."
      }
    ]
  },
  "sections": [
    {
      "id": "work-context",
      "heading": "The work and its context",
      "bodyMarkdown": "Rotor is Art Blocks project 315 on the contract at `0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270`, credited to Sebastián Brocher (CryptoArte). The index records 285 invocations against a maximum of 285, the runtime `p5@1.0.0`, an aspect ratio of 1, the Factory category, no artist website, and the licence `CC BY-NC 4.0` linked to the Creative Commons deed [^S02]. The collection page calls it \"An Art Blocks 500 release, in the Factory category\", shows a fixed edition of 285 and lists 21 attributes, from Shapes and Palette to Crazy, Loco, Shakes, Waves, Fade and Beats [^S01].\n\nThe mint text says the work was \"Inspired by the physics behind electrical motors and alternators\": shapes are projected \"in circular motions to convey the ever turning, invisible magnetic fields that make elements go around\", and the work \"explores how polygonal shapes can morph into circular sections and vice-versa\" [^S02][^S01]. Each token is an animation. Rings of small triangles, rectangles, flowers, saw teeth, circles, ellipses or arcs are swept around the centre of a square canvas. Because the canvas is never cleared, each sweep leaves a trace, and the image builds up into swirls, vortices and blossoms of semi-transparent colour [^S02][^S06].\n\nThe text also makes an unusual claim about the still image. The animation \"automatically pauses at a very specific moment (depending on traits)\", and the thumbnail condenses \"the evolution thus far\". The artist suggests that a collector who studies thumbnails can learn to read a token's traits and imagine \"its plausible history and future\" [^S02]. The research below tests that claim against the program and the live renderer."
    },
    {
      "id": "conception",
      "heading": "Conception and development",
      "bodyMarkdown": "The only artist statement found is the mint description [^S02][^S01]. The index's `website` and `artist_interview` fields are null [^S02]. A recorded video interview with the artist and his own site were identified as leads but not examined (see the research notes). No dated development account was found, so this section rests on the description and the program.\n\nThe description sets out three ideas. The first is physical: rotating magnetic fields, the stator and rotor of a motor, rendered as shapes carried around a centre [^S02]. The second is geometric: polygons turning into circular sections and back, which the program achieves by sweeping flat shapes along circular paths until their accumulated edges read as arcs [^S02][^S06]. The third is information-theoretic: the thumbnail as a lossy, lower-entropy summary of the animation up to the pause [^S02]. The last line of the description adds a performative invitation: \"put on some tunes, hit different patterns of a, s, z, x to the beats, and allow yourself to envision the rotor become vinyl\" [^S02].\n\nThe trait vocabulary is plain and technical. Shapes, Partitions, Length Divider, Half Moon, Decreasing Moon and Inverse Rotation name program switches almost directly. Six motion modifiers carry playful names: Crazy, Loco, Shakes, Waves, Fade and Beats [^S01][^S03]. The 19 palettes carry descriptive names such as Lavander Fields, Fire & Ice and Grayscale Bliss [^S03]."
    },
    {
      "id": "construction",
      "heading": "How the work was constructed",
      "bodyMarkdown": "The program is a single script of 8,551 bytes, SHA-256 `3acdfa0df75409b208a695d7d18bc5bcd6be05fe8246bf9e60639c2be4b20333` [^S02]. The renderer serves an inline script with the same digest and loads p5.js from a public CDN at a path marked 1.0.0 [^S06]. The file served at that path is 621,360 bytes and opens with the banner \"p5.js v0.10.2 February 29, 2020\", so the version label inside the library does not match its path; the date matches the p5.js 1.0 release period, but this research did not establish which build it is [^S08]. It was read in full; no code is reproduced here.\n\nRandomness comes from Art Blocks' standard two-stream generator, seeded from the two halves of the hash with a million warm-up draws [^S02]. The program first picks one of eight shapes, weighted towards triangles, then one of 19 palettes. Then it picks the number of partitions (three to seven, with four excluded for some shapes) and one of six transparency levels. After that come the stroke style, the length divider, the half-moon and decreasing-moon variations, decreasing displacement, three kinds of negative shape, and inverse rotation. A single roll from one to seven selects at most one of the six motion modifiers [^S02]. The canvas is a square as wide as the smaller window dimension [^S02].\n\nEach frame, the program advances a rotation angle by one 1,800th of a full turn and draws a ring of partitions around the centre. Each partition recursively draws a smaller ring around itself, two levels deep [^S02]. The shapes are drawn in the palette's colours at very low opacity, on a white background that is painted only at the start. The picture is therefore the sum of every frame drawn so far [^S02]. A depth term based on the cotangent of the rotation angle stretches the rings towards and away from the centre as they turn, which produces the vortex effect [^S02]. The modifiers alter this motion. Shakes and Waves oscillate position and length; Loco swings the sub-rings in circles; Crazy multiplies the angular speed at deeper levels; Fade shrinks the length by 0.15 per cent every frame; and Beats grows or shrinks the length by a tenth every 50 frames, 36 times per turn, depending on the depth term [^S02][^S03].\n\nThe automatic pause follows exact rules. Saws, Ellipses and Beats tokens pause when the depth term falls below minus one. Fade tokens pause after 2,700 frames, one and a half turns. Waves tokens pause after 1,200 frames. All others pause once the rotation passes a quarter turn [^S02]. At the renderer's 60 frames per second these moments fall between about 7.5 and 45 seconds after loading, and the live renderer confirmed each rule on the four examples [^S06].\n\nThe keyboard handler matches the description's list with one difference in wording. 'a' and 's' do not change a depth setting. They shrink or grow the shape length by a factor of 0.9, which the eye reads as depth. 'z' and 'x' scale the displacement radius, 'c' toggles clipping to the canvas, 'r' clears and restarts, and 'p' pauses and resumes [^S02][^S06]. There is no sound and no mouse handling [^S02][^S06].\n\nA reimplementation of the trait sequence reproduces all 21 published keys on all 285 tokens [^S03]. Transparency requires one note. The program's six levels index a table of alpha values, where level 1 is the most transparent (an alpha of 2 to 16 out of 255, depending on the palette) and level 6 the most opaque. The published labels run the other way, from \"Very high\" at level 1 to \"Lowest\" at level 6 [^S03]. The label describes how see-through the shapes are, not the alpha number. Read that way, it is exact. The 19 palettes share nine alpha tables, so a given label covers different numeric values in different palettes [^S02][^S03]."
    },
    {
      "id": "mint",
      "heading": "The mint",
      "bodyMarkdown": "Invocation 0 was minted on 23 May 2022 at 21:55:30 UTC, before the index's activation on 26 May at 01:13:55 UTC [^S03][^S02]. The recorded start is 17 June 2022 at 17:00:00 UTC, which the collection page shows as 18 June in a browser ten hours ahead of UTC [^S02][^S01]. It was the only mint before the start [^S03].\n\nThe first public mint came at 17:02:58 UTC. Thirty-three tokens were minted in the first ten minutes, 70 in the first hour and 124 in the first day [^S03]. The last token was minted on 20 June at 22:43:48 UTC, which is also the recorded completion, 77.7 hours after the start [^S03][^S02]. The index's current price field reads 0, and the collection page has no sales notes, so the price and sale mechanism are not documented in the sources inspected [^S02][^S01]. At retrieval the 285 tokens were held by 199 addresses [^S03]."
    },
    {
      "id": "rights",
      "heading": "Copyright and licensing",
      "bodyMarkdown": "The index records `CC BY-NC 4.0` and links it to the Creative Commons deed [^S02]. The deed permits copying, redistribution and adaptation in any medium with attribution, and prohibits commercial use. Unlike the share-alike variant, it does not require adaptations to carry the same licence [^S07]. A holder, or anyone else, may therefore share and remix Rotor images non-commercially with credit; the licence gives no commercial right. The collection page does not show the licence [^S01].\n\nThe program carries no licence statement of its own, so the code's terms are unknown [^S02]. It embeds no third-party code; p5.js is loaded by the platform at view time [^S02][^S06]. The loaded library file itself contains GNU Lesser General Public License notice text within its bundle, which a rights review of the display stack should take into account [^S08]."
    },
    {
      "id": "examples",
      "heading": "Close reading of examples",
      "bodyMarkdown": "Four tokens were loaded side by side in the official renderer on the generator's own origin, with the browser pane displayed. Their live state was sampled every three seconds, and the keyboard commands were tested on the holding [^S04][^S06]. They cover the AB5D holding, both \"Very high\" transparency tokens, and a Grayscale Bliss token with the Crazy modifier.\n\n**Rotor #18** (token `315000018`, held by an address in the AB5D linked-wallet set [^S05]) is a Saws token in Lavander Fields with six partitions, High transparency, Shakes, and Decreasing Moon [^S04]. It was observed for about two minutes. It drew a deep indigo and violet vortex with a pale lilac centre. Fine green and dark-red edges curled inward like a shell, and trailing saw teeth thinned towards the corners [^S06]. It paused itself at frame 709, rotation 2.47 radians, as the Saws rule predicts, and held that image unchanged for over thirty seconds [^S06]. Pressing 'p' resumed it: the rotation advanced 0.63 radians in three seconds, about 60 frames per second, and the image changed. A second 'p' paused it again. 'a' reduced the shape length from 82.25 to 74.03, two presses of 's' raised it to 91.39, 'z' and 'x' scaled the displacement from 9.14 to 8.23 and then 10.15, and 'c' switched on clipping [^S06]. 'r' cleared the canvas and restarted the rotation from zero. The token paused itself again at exactly the same angle about twelve seconds later, but the length and displacement changes survived the restart, so the second still differs from the first [^S06]. The thumbnail moment is reproducible, but a viewer who plays with the keys can make a different still.\n\n**Rotor #195** (token `315000195`) is a Circles token in Breezy Night with the Fade modifier and Very high transparency [^S04]. It was observed for about ninety seconds. It kept turning long after the other three had stopped, while its shape length shrank from 31.0 at the first sample to 0.71. The rings of circles closed in on the centre and left a many-petalled blossom of blue, violet, rose and gold, with a small bright core [^S06]. It paused at frame 2,701, one and a half turns, exactly as the Fade rule sets [^S06].\n\n**Rotor #24** (token `315000024`) is a Triangles token in Fire & Ice with five partitions, Very high transparency and Shakes [^S04]. It paused first, at frame 451, just past a quarter turn [^S06]. The image is a red pentagon of triangles inside a ring of blue and gold star shapes, over a field of long translucent red and blue spikes [^S06].\n\n**Rotor #216** (token `315000216`) is a Saws token in Grayscale Bliss, one of seven in that palette, with Crazy, Half Moon, Inverse Rotation and white strokes [^S04][^S03]. It paused at frame 709 like #18 [^S06]. The image is a monochrome spiral of grey blades winding into a white centre, ringed by fine hatched arcs at the corners [^S06].\n\nNone of the four made sound [^S06]."
    },
    {
      "id": "significance",
      "heading": "Significance and limitations",
      "bodyMarkdown": "Rotor turns a simple mechanism, rings of shapes swept around a centre on a canvas that never clears, into a wide family of images, and it ties the platform's still thumbnail to a rule stated in the work itself [^S02][^S06]. The research confirms that the pause rules exist as described, that they depend on traits, and that they reproduce exactly after a restart [^S02][^S06]. It also shows that the keyboard can change the still that a restart produces [^S06]. All 21 traits reproduce. The Transparency labels run in the opposite direction to the alpha values in the code, which matters for anyone reading the traits against the program [^S02][^S03].\n\nThe sources do not settle the price, the reason for the single early mint, or the artist's own account of the work beyond the description.\n\nUnresolved research questions:\n\n1. What were the price and sale mechanism for the 17 June 2022 release? The index field reads 0 and there are no sales notes.\n2. Was invocation 0, minted on 23 May 2022, an artist mint?\n3. What does the artist say about Rotor in the recorded interview and on his own site?\n4. What does the \"Art Blocks 500\" label on the collection page mean for this project?"
    }
  ],
  "facts": [
    {
      "id": "edition-size",
      "topic": "work-context",
      "value": 285,
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S02",
        "S01"
      ],
      "status": "verified"
    },
    {
      "id": "script-bytes",
      "topic": "construction",
      "value": 8551,
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S02"
      ],
      "status": "verified"
    },
    {
      "id": "traits-reproduced",
      "topic": "construction",
      "value": "21 of 21 at 285 of 285",
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S03"
      ],
      "status": "verified"
    },
    {
      "id": "transparency-label-inverse",
      "topic": "construction",
      "value": true,
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S02",
        "S03"
      ],
      "status": "verified"
    },
    {
      "id": "auto-pause-rules",
      "topic": "construction",
      "value": "confirmed on four tokens",
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S02",
        "S06"
      ],
      "status": "verified"
    },
    {
      "id": "first-mint",
      "topic": "mint",
      "value": "2022-05-23T21:55:30+00:00",
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S03"
      ],
      "status": "verified"
    },
    {
      "id": "start",
      "topic": "mint",
      "value": "2022-06-17T17:00:00+00:00",
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S02"
      ],
      "status": "verified"
    },
    {
      "id": "completion",
      "topic": "mint",
      "value": "2022-06-20T22:43:48+00:00",
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S02",
        "S03"
      ],
      "status": "verified"
    },
    {
      "id": "mint-price",
      "topic": "mint",
      "value": null,
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S02",
        "S01"
      ],
      "status": "unknown",
      "note": "Index price 0; no sales notes."
    },
    {
      "id": "held-token",
      "topic": "work-context",
      "value": "315000018",
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S03",
        "S04",
        "S05"
      ],
      "status": "verified"
    }
  ],
  "examples": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "315000018",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000018",
      "sourceIds": [
        "S04",
        "S05",
        "S06"
      ],
      "selectionNote": "AB5D holding; Saws, the pause rule shared with Ellipses and Beats.",
      "observationNote": "Violet vortex; auto-pause at frame 709; every key tested; restart reproduces the pause angle but not the image after key changes."
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "315000195",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000195",
      "sourceIds": [
        "S04",
        "S06"
      ],
      "selectionNote": "Fade modifier with Very high transparency; the longest pause rule.",
      "observationNote": "Shrinking rings to a blossom; paused at frame 2701."
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "315000024",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000024",
      "sourceIds": [
        "S04",
        "S06"
      ],
      "selectionNote": "The other Very high transparency token; Triangles, the default pause rule.",
      "observationNote": "Red pentagon in a ring of stars; paused at frame 451."
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "315000216",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000216",
      "sourceIds": [
        "S03",
        "S04",
        "S06"
      ],
      "selectionNote": "Grayscale Bliss (7 tokens) with Crazy and Half Moon.",
      "observationNote": "Monochrome blade spiral; paused at frame 709."
    }
  ],
  "mediaIds": [],
  "provenance": {
    "operator": "Phil (AB5D coordinator), via the Claude desktop application",
    "originalAuthor": {
      "provider": "Anthropic",
      "model": "claude-opus-5",
      "modelVersion": "claude-opus-5 as reported by the session environment; the routing label 'claude' in the assignment manifest is a routing label and has not been recorded as a model identifier",
      "agent": "Claude in Cowork mode on the Claude Agent SDK"
    },
    "revisions": [],
    "revisionNote": "No other model or human has revised this package. A later reviser must preserve the original author credit and record the reviser, changed scope and revision-specific usage separately here.",
    "tools": [
      "Art Blocks public GraphQL index over HTTP POST from the artblocks.io origin in the browser pane, with full query text, variables and timings retained in evidence.json",
      "built-in browser pane on the coordinator's computer for page reading, canonical token page status checks, live renderer observation, canvas sampling, WebGL diagnostics and screenshots",
      "an independent reimplementation of the trait derivation, run in the browser against every token hash in the edition",
      "SHA-256 over the retrieved script bytes computed with the Web Crypto API",
      "cloud shell and file tools for package assembly, and the supplied validator"
    ],
    "humanEditorialInvolvement": "Commissioned by Phil; website publication authorized by Phil on 2026-09-17. No claim of line-by-line human fact checking.",
    "originalProseLicense": "CC0-1.0",
    "model": "claude-opus-5 (contributor-reported)",
    "generation": {
      "schema": "ab5d-essay-generation/1",
      "model": "claude-opus-5 (contributor-reported)",
      "displayName": "Claude (reported as claude-opus-5)",
      "scope": "Supplied Claude remaining ten essay packages",
      "essayCount": 10,
      "usage": null,
      "perEssayUsage": null,
      "usageDetail": "The contributor reports claude-opus-5; the serving model and token telemetry were not independently exposed. Original per-package usage records are retained with the submissions.",
      "importReview": "Structural identity, citations and build compatibility checked. Supplied prose preserved; no independent research audit."
    }
  },
  "codeInspection": {
    "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
    "locator": "HTTP POST ProjectBySlug {\"slug\":\"rotor-by-sebastian-brocher-cryptoarte\"}, field script; composite id 0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-315",
    "sha256": "3acdfa0df75409b208a695d7d18bc5bcd6be05fe8246bf9e60639c2be4b20333",
    "bytes": 8551,
    "retrievedAt": "2026-09-20T00:25:53.995Z",
    "runtime": "p5@1.0.0",
    "method": "Index retrieval, not a direct contract read; no block pinned. Whole program read; coverage in evidence.json.",
    "executed": true,
    "executionDisclosure": "Read in full without local execution; separately executed by the official renderer during observations. Parameter derivations reimplemented in the browser for trait checks.",
    "chainBlock": null
  },
  "editorialExceptions": [
    {
      "id": "mint-price-unknown",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "Index price 0; no sales notes; mint terms undocumented."
    },
    {
      "id": "artist-account-not-read",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "Artist interview video and personal site identified but not examined; conception rests on the mint description."
    },
    {
      "id": "display-state",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The live piece auto-pauses after 7.5 to 45 s; embed choices (autoplay, restart) change what viewers see."
    }
  ],
  "presentation": {
    "editionSize": 285,
    "maximumEdition": 285,
    "mintDate": "2022-06-17T17:00:00+00:00",
    "mintDateLabel": "Public release",
    "artwork": {
      "token_id": "315000018",
      "invocation": 18,
      "mode": "live",
      "preview_asset_url": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000018.png",
      "canonicalUrl": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000018",
      "live_view_url": "https://generator.artblocks.io/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000018",
      "copyrightStatus": "CC BY-NC 4.0",
      "copyrightUrl": "https://creativecommons.org/licenses/by-nc/4.0/",
      "interactionNote": "Animates for about 12 s at 60 fps, then pauses itself at a fixed angle; 'p' resumes.",
      "displayBasis": "Square canvas sized to the smaller window dimension."
    }
  },
  "observationImages": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "315000018",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000018",
      "sourceIds": [
        "S04",
        "S05",
        "S06"
      ],
      "selectionNote": "AB5D holding; Saws, the pause rule shared with Ellipses and Beats.",
      "observationNote": "Violet vortex; auto-pause at frame 709; every key tested; restart reproduces the pause angle but not the image after key changes.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000018.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000018"
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "315000195",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000195",
      "sourceIds": [
        "S04",
        "S06"
      ],
      "selectionNote": "Fade modifier with Very high transparency; the longest pause rule.",
      "observationNote": "Shrinking rings to a blossom; paused at frame 2701.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000195.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000195"
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "315000024",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000024",
      "sourceIds": [
        "S04",
        "S06"
      ],
      "selectionNote": "The other Very high transparency token; Triangles, the default pause rule.",
      "observationNote": "Red pentagon in a ring of stars; paused at frame 451.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000024.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000024"
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "315000216",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000216",
      "sourceIds": [
        "S03",
        "S04",
        "S06"
      ],
      "selectionNote": "Grayscale Bliss (7 tokens) with Crazy and Half Moon.",
      "observationNote": "Monochrome blade spiral; paused at frame 709.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000216.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000216"
    }
  ],
  "publication": {
    "date": "2026-09-20",
    "url": "https://ab5d.xyz/series/rotor-by-sebastian-brocher-cryptoarte/",
    "authorization": "Phil requested website publication on 2026-09-17.",
    "reviewSnapshot": "/docs/series-essays/production/rotor-by-sebastian-brocher-cryptoarte/record.json",
    "unresolvedResearchQuestionsRetained": true
  }
}
