{
  "schema": "ab5d-series-essay/1",
  "identity": {
    "chainId": 1,
    "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
    "projectId": 188,
    "slug": "blockbob-rorschach-by-eboy",
    "title": "Blockbob Rorschach",
    "artistCredit": "eBoy",
    "artistDossierUrls": [
      "https://ab5d.xyz/artists/eboy/"
    ]
  },
  "revision": 2,
  "researchCutoff": "2026-09-18",
  "status": "published-with-research-limitations",
  "rights": {
    "artwork": {
      "reportedLabel": "CC BY-SA 4.0",
      "category": "creative-commons",
      "termsUrl": null,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S08"
      ],
      "note": "The index reports a fully specified identifier with a null link. The canonical deed permits sharing and adaptation for any purpose including commercially, subject to attribution and to a ShareAlike obligation on adaptations. Recorded as reported rather than verified, with a null terms URL because the record supplies no link. Ownership of a token is not a permission over the artwork, and the record states no terms for holders.",
      "conflicts": [
        "The label is unlinked in the record, so the association with the canonical deed rests on the identifier rather than on a link the project publishes."
      ]
    },
    "code": {
      "reportedLabel": null,
      "category": "unknown",
      "termsUrl": null,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "note": "No licence statement or copyright notice appears anywhere in the program. The licence is recorded on the project and nothing says it extends to the program as a program. The source is unminified and therefore unusually reusable, which makes the silence more consequential rather than less. No part of the program is reproduced in this package.",
      "conflicts": [
        "A reader might reason that a CC BY-SA project implies CC BY-SA code; the record does not say so."
      ]
    },
    "thirdParty": [
      {
        "component": "p5.js 1.0.0",
        "reportedLabel": null,
        "category": "unknown",
        "termsUrl": null,
        "observedAt": "2026-09-18",
        "sourceIds": [
          "S02",
          "S06",
          "S07"
        ],
        "note": "Declared dependency, supplied by the renderer at view time. Used not only for drawing but for the noise function that generates every blot in the edition. Upstream licensing not established in this session.",
        "conflicts": []
      }
    ]
  },
  "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 batch routing label 'claude' is a routing label and not a model identifier and has not been recorded as one",
      "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 above and record the reviser, changed scope and revision-specific usage separately here.",
    "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",
    "generation": {
      "schema": "ab5d-essay-generation/1",
      "model": "claude-opus-5",
      "displayName": "claude-opus-5 (contributor-reported)",
      "scope": "claude-round-003 submitted essay; publication import only",
      "essayCount": 1,
      "usage": null,
      "perEssayUsage": null,
      "usageDetail": "No token telemetry is exposed to the agent in this environment. All counts are null rather than estimated, and no batch figure has been divided into per-essay numbers.",
      "submittedUsage": {
        "provider": "Anthropic",
        "model": "claude-opus-5",
        "modelVersion": "claude-opus-5 as reported by the session environment. The batch routing label 'claude' is a routing label, not a model identifier, and has not been recorded as one.",
        "measurementScope": "batch",
        "measurement": "unavailable",
        "scope": "claude-round-003, ten assigned series in a single session",
        "startedAt": "2026-09-18T05:25:27+00:00",
        "startedAtNote": "Timezone-aware. Taken from the first instrumented call of this research session.",
        "cutoff": null,
        "cutoffNote": "Null because the session was still running when this package was written; no end instant is known, so none is manufactured. Any recorded cutoff must be at or after startedAt.",
        "inputTokens": null,
        "cachedInputTokens": null,
        "outputTokens": null,
        "reasoningTokens": null,
        "totalTokens": null,
        "perEssayAvailable": false,
        "telemetrySource": null,
        "note": "No token telemetry is exposed to the agent in this environment. All counts are null rather than estimated, and no batch figure has been divided into per-essay numbers.",
        "elapsedNote": "Research on this package spans the timestamps in evidence.json. The session lost its connection to the coordinator's computer several times; retrieval timestamps on either side of those interruptions are recorded as they occurred."
      },
      "importReview": "Package and site compatibility checks only. No independent re-research or prose rewrite, as requested by user on 2026-09-20."
    }
  },
  "sections": [
    {
      "id": "work-context",
      "heading": "The work and its context",
      "bodyMarkdown": "Blockbob Rorschach is Art Blocks project 188 on the contract at `0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270`, on Ethereum mainnet, credited to eBoy. The public index returns 1,024 invocations against a maximum of 1,024, a declared dependency of `p5@1.0.0`, an aspect ratio of 1, a licence string of `CC BY-SA 4.0` with a null licence link, and a `display_static` value of false [^S02]. The collection page describes it as an Art Blocks 500 release in the Factory category, a fixed edition of 1,024 unique artworks, released on 30 October 2021, and carries a View live control [^S01].\n\nThe mint description is one sentence long, the shortest in this batch: \"On-chain, generative pixel blot heads.\" [^S02][^S01]. It is also, unusually, an exact description. Every token is a figure on a sixteen-by-sixteen grid of flat coloured squares: a head occupying the upper half, a two-cell neck, a wide body, and a single square at each side for arms. The head is filled by a binary pattern that is mirrored about the vertical centre line, which is the Rorschach of the title. The blot is a Perlin noise field thresholded at its midpoint, so its shapes are soft and lobed rather than scattered, and the mirroring turns them into faces, masks, insects or nothing at all depending on where the threshold happened to fall.\n\nThree of the description's five words are load-bearing and one is a small overstatement. The work is generative, the heads are blots, and the rendering is pixel art of the kind eBoy has made since the 1990s. It is on chain in the sense that Art Blocks projects are: the artist's program is stored in the project record and returned by the index [^S02], but it does not render without a copy of p5.js version 1.0.0 supplied by the platform at view time.\n\nThe index's `display_static` value of false is wrong here, and unambiguously so. The program calls p5's `noLoop` in setup, draws exactly one frame, and stops. At the live renderer the frame counter read 1 and stayed at 1, and the canvas was byte-identical across a four-second interval on the token observed for change [^S06]. There are no key handlers, no mouse handlers and no touch handlers anywhere in the program, so the work has no controls at all [^S02][^S06]. There is no audio: the renderer page contains no audio or video elements and `p5.SoundFile` is undefined in the running instance [^S06].\n\nThe most consequential fact for anyone cataloguing this edition is what the trait list does not contain. Three traits are published, `headshape`, `headcolor` and `swatch` [^S03]. The program makes five independent draws. The two that are not published set the horizontal and vertical scale of the noise field, and they are the parameters that determine whether a given token's blot is a fine speckle or two large flat areas. They are, visually, the dominant variable in the edition, and the metadata is silent about them."
    },
    {
      "id": "conception",
      "heading": "Conception and development",
      "bodyMarkdown": "eBoy is a Berlin pixel-art studio that has been working in the idiom since the mid 1990s, and the project needs almost no introduction from the artist because the visual language arrives already formed. The figures here are built the way eBoy figures have always been built: from a small grid of opaque squares, with no antialiasing, no gradients and no outlines, in a palette of flat saturated colours. What the generative system supplies is not the style but the variation.\n\nThe indexed `artist_interview` field is null [^S02] and the website of record is not a project page. It is a social media profile, `https://twitter.com/eboyarts` [^S02], which resolves to the X account @eBoyArts. The profile loads in a logged-out view and shows a studio bio of \"GODFATHERS OF PIXEL\", an account created in October 2010, links to a links page and to eboy.com, and a recent timeline [^S09]. Nothing about this project was visible in that view, and a logged-out timeline shows only the newest posts, so this package treats the profile as confirming the artist's identity and nothing more.\n\nOne thing on that profile does belong in a catalogue note, because it bears on how much weight the link of record can carry. A post dated 9 September states that the account had been compromised that night, that a token circulating under the account's name was not the studio's, and that any contract address seen on the account that day was fake [^S09]. Whatever the details, an artist link of record that is a social account which has been taken over at least once is not a stable authority for provenance, and a dossier that cites it should cite what it saw and when.\n\nThat leaves the program as the main evidence for how the work was conceived, and the program is unusually legible about it. Unlike every other script in this batch, this one is not minified. Variables are named, functions are named, the palettes are written out as hexadecimal literals with numbered comments, and the head shapes are declared as lists of rectangle dimensions. It reads like working source rather than a build artefact. A `console.log` statement that prints the token hash was left in and is still executed on every render, which was confirmed directly by reading the renderer's console [^S06]. Shipping working source, debug line and all, onto a permanent record is either carelessness or indifference to the distinction, and given that the program is otherwise carefully organised the second reading seems at least as likely as the first.\n\nThe six head shapes are hand-designed, not generated. Each is a stack of two or three rectangles of specified width and height, named block, eater, lenser, doubler, plus and devo [^S02]. Those names are the artist's and they describe silhouettes: a plain rectangle, a wide-mouthed shape, its inverse, a two-lobed form, a cross, and a stepped profile. The generative part of the work operates inside a silhouette that a person drew."
    },
    {
      "id": "construction",
      "heading": "How the work was constructed",
      "bodyMarkdown": "The script was retrieved as the `script` field of the `projects_metadata` row for `0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-188`, from the Art Blocks public GraphQL index, on 2026-09-18 at 07:47:47Z [^S02]. It is 7,580 bytes and its SHA-256 digest, computed in the browser over the exact returned bytes using the Web Crypto API, is `e9c9317b2250de3ed0f0cc8ae73cf278386a6aafc37c422f81ec2bebce22c8eb` [^S06]. The row reports `script_count` of 1 and the declared runtime is `p5@1.0.0` [^S02]. Because the program is unminified it can be read as ordinary source. No artist code is reproduced here.\n\nTwo independent sources of randomness are used, and keeping them apart is the key to understanding the work. The first is an xorshift generator seeded from the token hash, and it chooses the five discrete parameters. The second is p5's own Perlin noise, seeded from the same number, and it paints the blot.\n\nThe xorshift generator is the same construction that appears in the Amoeba project elsewhere in this batch, down to the output step: it returns the absolute value of the 32-bit state modulo 1,000, divided by 1,000. Every discrete choice in this work is therefore made from a menu of exactly 1,000 possible fractions. The seed is likewise taken the same way, as `parseInt(hash.slice(0, 16), 16)`, a slice that includes the `0x` prefix and so parses fourteen hexadecimal digits. Fifty-six bits exceeds the fifty-three that a double-precision float represents exactly, so the seed is rounded before the generator ever runs, and the first shift then coerces it to a signed 32-bit integer. Two different artists, two different projects in the same batch, the same idiom and the same two defects, which suggests a template circulating among Art Blocks contributors in 2021 rather than independent invention.\n\nSix draws are made in a fixed order: a head shape index, a decimal used to decide whether the head is coloured, a swatch index between 1 and 8, a decimal used to permute the chosen swatch, and two decimals that select the horizontal and vertical noise scales. An independent reimplementation of that exact order was run against all 1,024 token hashes and reproduced every published trait: `headshape` on 1,024 of 1,024, `headcolor` on 1,024 of 1,024 and `swatch` on 1,024 of 1,024 [^S03].\n\nThe head-colour decision is a weighted choice at 0.2 for coloured and 0.8 for black and white, and the edition matches the weights almost exactly: 204 coloured and 820 black and white, or 19.92 per cent against a nominal 20 [^S03]. It also switches the entire colour logic. On a black-and-white token the head is drawn in the two neutral tones, a near-black and a near-white, and the background, body and two arms are taken from the selected colour swatch, so the figure is a monochrome blot standing in a coloured world with arms that can be two different colours. On a coloured token the relationship inverts: the head is drawn in two colours from the swatch and the background, body and both arms are taken from the neutral pair, so the figure is a coloured blot in a neutral world with both arms necessarily the same colour. Reading the live globals on two coloured and two black-and-white tokens confirmed both arrangements [^S06].\n\nThe nine swatches are hard-coded lists of hexadecimal colours, the first of which is the neutral pair and the other eight of which are the palettes the `swatch` trait names 1 through 8 [^S02]. Before use, a swatch is passed through a routine the program calls a randomiser. It is not one. A correct shuffle draws a fresh random index for each position; this routine draws a single decimal once and reuses it for every swap, so the permutation it produces is a deterministic function of that one number and preserves most of the original ordering. Live readings bear this out: token 188000023 drew swatch 7 and its head colours came out as the second and third entries of that swatch in their original relative order [^S06]. The rarity structure of colour in this edition is therefore coarser than it looks, because the permutation cannot reach most orderings.\n\nThe same routine contains a second defect with no visible consequence. For coloured heads it is applied to the selected swatch array in place and the result is then truncated to length two, which permanently shortens the entry in the global swatch table. Because setup runs once per page load, nothing downstream ever reads the truncated entry, so the bug is real and inert. It is recorded here because a reader of the source would otherwise have to work it out for themselves.\n\nThe blot itself is the interesting part. The head silhouette is assembled from the two or three rectangles that define the selected shape, and each cell of that silhouette is filled by sampling p5's Perlin noise at the cell's coordinates divided by the two noise scales, then rounding to 0 or 1. The result indexes the two-colour head palette. The drawing routine then places every cell twice, once at its own horizontal offset from the centre and once at the mirrored offset, which produces the inkblot.\n\nThat symmetry was measured rather than assumed. On each of the four observed tokens, 8,930 pixel pairs were sampled across the head band and compared against their mirror images; the mismatch count was zero on all four [^S06]. The head is exactly symmetric. The rest of the figure is not, and on black-and-white tokens the two arms are routinely different colours, so a description of this work as symmetric should say that only the head is.\n\nThe two noise scales are weighted 0.4, 0.3, 0.2 and 0.1 for values 1, 2, 3 and 4, independently in each axis, and neither is published. Across the edition the sixteen combinations distribute as the weights predict, with the coarsest setting of 1 by 1 on 141 tokens and the finest of 4 by 4 on 8 [^S03]. Visually the difference is not subtle. At 1 by 1 the noise is sampled at unit spacing and the blot becomes a fine speckle of alternating cells; at 4 by 4 the field is stretched over four cells in each direction and the blot becomes two or three large flat regions. Token 188000016 and token 188000044 sit at those two extremes and look like works from different projects [^S06].\n\nOne hypothesis was tested and rejected in the course of this reading. Because the noise is sampled at integer coordinates when both scales are 1, and because classic Perlin noise returns exactly its midpoint at integer lattice points, it seemed possible that the coarsest setting would threshold every cell the same way and produce a solid head. Probing the running p5 instance at those coordinates returned values spread between 0.135 and 0.753 rather than a constant [^S06], because p5's implementation sums octaves of value noise rather than evaluating classic Perlin. The prediction was wrong and the observation stands. What the probe does show is that the values cluster near the midpoint, which is why the threshold produces balanced, soft-edged regions rather than a sparse scatter. The p5 reference describes the intended smoothness of the function and the role of input scaling, which is exactly the property the two unpublished parameters exploit [^S07].\n\nFinally, the geometry has a rounding artefact that is visible if you look for it. The canvas is made square at the smaller of the window's two dimensions, and the cell size is that divided by sixteen, rounded to an integer. In the pane used for these observations the canvas was 662 CSS pixels, the exact cell size was 41.375, the rounded cell size was 41, and sixteen cells therefore spanned 656 pixels rather than 662 [^S06]. The six-pixel shortfall is why the program adds a deliberate overhang to the body and the arms so they run off the bottom edge rather than stopping short of it. The figure sits very slightly off centre in its own canvas, by construction."
    },
    {
      "id": "mint",
      "heading": "The mint",
      "bodyMarkdown": "The index records activation at 2021-10-23T18:04:15Z, a public opening at 2021-10-29T19:00:00Z, and completion at 2021-10-30T04:51:27Z [^S02]. The collection page states 30 October 2021 [^S01], which is the opening instant rendered in a timezone ahead of UTC.\n\nThe first mint again precedes activation. Token 188000000 was minted at 2021-10-18T18:40:26Z [^S03], five days before the recorded activation and eleven days before the public opening. It is the only token minted before the opening, and the index's artist address holds exactly one token in the edition [^S02][^S03]. The same pattern, a single artist proof timestamped before `activated_at`, appears on the LIA and Amoeba projects in this batch, so the field plainly does not mark the first acceptance of a mint anywhere in this contract.\n\nThis was the fastest sale in the batch by a wide margin. The price is recorded as 200000000000000000 wei, or 0.2 ETH [^S02], and the description states no auction schedule, so this package does not assert a mechanism. Taking the opening as the start endpoint and the final mint as the end endpoint, the public phase ran from 2021-10-29T19:00:00Z to 2021-10-30T04:51:27Z, a span of 9.86 hours, and covered 1,023 mints [^S03]. The first public mint came at 2021-10-29T19:01:27Z, 87 seconds after the opening. Anchored on the opening, 357 tokens were minted in the first hour, 616 within six hours and 1,023 within a day [^S03]. An edition four times the size of the LIA project sold out in the time that project took to reach its median mint.\n\nThe pace is worth holding next to the other projects here. Amoeba, released the day before by an artist with no established audience outside this space, took 844 days to sell 213 tokens. Blockbob Rorschach sold 1,024 in under ten hours. The work is not obviously more elaborate; the difference is a studio with a thirty-year reputation and a visual language collectors already recognised.\n\nAcross the 1,024 tokens the index reports 527 distinct owner addresses [^S03], so the edition is broadly held, with an average of roughly two tokens per holder.\n\nThe Art Blocks 500 wallet set was refreshed once this session from the platform's own profile index, by querying the `ab5d` user profile for its linked accounts. The query returned three linked addresses and all three were checked against every one of the 1,024 token rows [^S05][^S03]. Exactly one token in this edition sits in that set: token 188000737, invocation 737, held by `0xdd19308a9731cdecb67e0d80ca6823394208c045` and minted at 2021-10-30T02:16:01Z [^S04][^S05], a little over seven hours into the sale."
    },
    {
      "id": "rights",
      "heading": "Copyright and licensing",
      "bodyMarkdown": "The index records a licence string of `CC BY-SA 4.0` for this project and a `link_to_license` of null [^S02]. Unlike the bare `CC BY` on the Amoeba project in this batch, this identifier is fully specified: it names a licence, a version and an international scope, and it resolves unambiguously to one deed even though the record does not link to it.\n\nRead against that deed, Attribution-ShareAlike 4.0 International permits sharing and adaptation in any medium and for any purpose including commercially, subject to attribution and to a ShareAlike obligation requiring that adaptations be distributed under the same licence, with a prohibition only on applying additional legal or technological restrictions [^S08]. That is a notably permissive position for a studio with a long commercial practice, and it is the most permissive licence in this batch after the unversioned Attribution string on Amoeba.\n\nThe ShareAlike term has a practical consequence for cataloguing that the Attribution-only projects do not carry. A crop, a recolour, a composite plate or an adjusted still is an adaptation, and distributing one obliges the distributor to release it under CC BY-SA 4.0 as well. That is not a prohibition, but it is a commitment, and a publication that reproduces altered versions of these images without adopting the licence for those versions would be out of compliance. This package accordingly records a derivative note rather than a derivative ban.\n\nThree rights domains should be kept apart, as elsewhere in this batch.\n\nThe first is the artwork, covered above, with the caveat that the record states no terms of sale and no terms for holders, and that ownership of a token confers no permission over the artwork beyond what the licence gives everyone.\n\nThe second is the artist's code, and here the situation is more interesting than usual. The program is unminified, readable working source, retrievable from the index by anyone. Retrievability is not a grant, and no licence statement or copyright notice appears anywhere in the program text. It is tempting to reason that a project licensed CC BY-SA must intend the same for its code, but the licence is recorded on the project and nothing in the record says it extends to the program as a program. Accordingly no artist code is reproduced in this package; what is returned instead is a description of the mechanism, the byte count, the digest, and reproductions of the published traits that can be independently checked against the index.\n\nThe third is the dependency. The work declares `p5@1.0.0` and does not render without it, and it relies on the library not merely for drawing primitives but for the noise function that generates every blot in the edition. The library carries its own licence, which is not the project's licence and is not stated in the project record. This session consulted the p5.js reference for the documented behaviour of the noise function [^S07] and did not establish the library's licence terms.\n\nOne further note belongs here. The artist link of record is a social media account rather than a site the artist controls end to end, and that account has publicly stated that it was compromised at least once [^S09]. Rights and provenance questions about this project should not be resolved by reference to posts on that account without independent corroboration."
    },
    {
      "id": "examples",
      "heading": "Close reading of examples",
      "bodyMarkdown": "Four tokens were examined at the live renderer at `generator.artblocks.io`, each identified first by a `TokensByIds` query against the index so that hash, owner, mint time and published traits came from a response rather than from memory [^S04], and each opened at its canonical Art Blocks token page, all four of which returned HTTP 200 on a real fetch from the artblocks.io origin [^S06]. All four were observed with the browser pane displayed. In each case the sketch's own global variables were read alongside the pixel sampling, and the head's mirror symmetry was measured on 8,930 pixel pairs per token.\n\nToken 188000737 is the Art Blocks 500 holding and was the first sustained observation. Its hash begins `0x9b84999b` and it was minted at 2021-10-30T02:16:01Z to `0xdd19308a9731cdecb67e0d80ca6823394208c045` [^S04]. Its published traits are the eater head shape, black-and-white head colour and swatch 2 [^S04]. On screen it is a cyan field holding a near-black and off-white blot head above a red body, with an off-white square for the left arm and a bright green square for the right. The blot has resolved into something legible: a dark band across the brow, a pale face with two dark vertical marks where eyes would be, a short dark bar at the mouth, and a heavy dark jaw. Nothing in the program knows about faces.\n\nThe live globals read the eater shape, the black-and-white head colour, noise scales of 3 horizontally and 2 vertically, a head palette of the two neutrals, and a non-head palette of cyan, red, off-white and green [^S06]. That last list is the mechanism in plain sight: swatch 2 is the six saturated primaries and secondaries, the neutral pair is appended to it, the whole eight-entry list is passed through the broken permutation, and the first four survivors become background, body, left arm and right arm. The off-white left arm is an entry from the neutral pair that the permutation happened to carry into the first four.\n\nThis token also supplied the static and control evidence. The frame counter read 1 and stayed at 1, and the sampled grid was identical across four seconds [^S06]. The program's `keyPressed`, `keyTyped` and `mousePressed` globals are all undefined in the running instance, so there is nothing to test [^S06]. This is a work with no controls, and unlike several others in this batch that is not a documentation gap but the actual design. The renderer's console carried a single log line printing the token hash, emitted by a debug statement that was shipped with the program [^S06].\n\nToken 188000016 is the second sustained observation and sits at the coarse extreme of the unpublished parameter. Its hash begins `0xbce18f6d` and it was minted at 2021-10-29T19:01:54Z to `0x68615cc65127ab1bbe46f2a90428d0957c24a91b` [^S04]. Its published traits are the doubler head shape, coloured head colour and swatch 2 [^S04]. The live globals read noise scales of 1 and 1, the coarsest available, with a head palette of pure red and pure green and a non-head palette of off-white repeated for body and both arms [^S06].\n\nThe result is the loudest image of the four: an off-white field, a tall two-lobed head filled edge to edge with a fine interleave of red and green cells, and a dark navy body below. At unit noise scale the field changes sign almost every cell, so the blot never coheres into regions; it reads as dazzle. The two arms are the same colour here, necessarily, because the coloured branch assigns all three non-head roles from the neutral pair. Mirror symmetry measured zero mismatches in 8,930 pairs, which at this granularity is far more visible than on the smoother tokens, because each speckle has an exact partner.\n\nToken 188000044 is the same edition at the opposite extreme. Its hash begins `0xe11e052d` and it was minted at 2021-10-29T19:02:19Z to `0xc659284cd530f1df076b38a469c4207d731a2710` [^S04]. Its published traits are the devo head shape, black-and-white head colour and swatch 2, the same swatch as the two tokens above [^S04]. The live globals read noise scales of 4 and 4, the finest available in the sense of stretching the field furthest [^S06].\n\nOn screen it is a red field, a stepped dark navy silhouette, and two large off-white rectangles inside it, one at the crown and one across the middle. There is no speckle at all. Two tokens drawn from the same swatch, three trait values apart in only one field, look nothing like each other, and the entire difference is the parameter the metadata does not record. The body is green and the arms are blue and yellow, which is swatch 2 again with a different four survivors from the permutation.\n\nToken 188000023 was observed to check the coloured branch a second time and to measure the grid rounding. Its hash begins `0x26242c94` and it was minted at 2021-10-29T19:02:07Z to `0xf969293ffb9a7a54c9e813fcae79c1de9846e2d5` [^S04]. Its published traits are the eater head shape, coloured head colour and swatch 7 [^S04]. The live globals read a head palette of a pale yellow and a pink, which are the second and third entries of swatch 7 in their original relative order, and a non-head palette of the dark neutral for the background with the pale neutral repeated for body and both arms [^S06]. In the same reading the canvas measured 662 CSS pixels, the exact cell size 41.375, the rounded cell size 41, and the drawn extent 656 pixels, a shortfall of 6 [^S06]. Mirror symmetry again measured zero mismatches in 8,930 pairs."
    },
    {
      "id": "significance",
      "heading": "Significance and limitations",
      "bodyMarkdown": "The clearest thing this project demonstrates is how badly a trait list can describe an edition. Three traits are published and all three reproduce perfectly from the hash, so by the usual standard the metadata is complete and correct. It is also nearly useless as a guide to what a token looks like. Two tokens sharing a swatch and differing in one trait can be a red-and-green dazzle pattern and a flat two-tone silhouette, because the parameter that separates them is not published. Anyone building rarity tables, filters or a catalogue from the Art Blocks metadata for project 188 is working with a description that omits the edition's dominant visual variable.\n\nThe second contribution is a small piece of comparative evidence about how these programs were written. The xorshift generator here, its 1,000-value output step, and the seed taken from a sixteen-character slice that includes the `0x` prefix are identical in construction to the Amoeba project released the previous day by a different artist. Two artists arriving independently at the same generator with the same two quirks is unlikely; a shared snippet circulating among Art Blocks contributors in 2021 is not. This package does not claim to have found the source of that snippet, but it does record the match as a fact that a wider survey could test across the platform.\n\nThe third is about what \"on chain\" carries. The program stored for this project is unminified working source, with named functions, commented palette tables and a debug statement that still prints the token hash to the console on every render. That is a more honest artefact than a minified build, and it is also a reminder that the thing preserved on a permanent record is whatever the artist happened to hand over, including the parts that were never meant to be read. The permutation routine that does not permute, and the swatch truncation that mutates a global table to no effect, survive in the same way.\n\nThe limitations of this package should be stated as plainly as the findings. The four visual observations cover four tokens out of 1,024, chosen to bracket the unpublished noise parameter and to cover both colour branches rather than sampled at random, so nothing here supports a claim about the typical appearance of the edition. The claim that the two noise scales are unpublished rests on the absence of a matching trait key across 1,024 tokens, which is strong but is an argument from absence. The mirror-symmetry measurement samples 8,930 pixel pairs per token at a stride, not every pixel, so it establishes symmetry to the granularity of a grid cell rather than bit-exactly. The grid-rounding figures were measured in one pane at one size and will differ at other window sizes. No artist statement informs any part of this package beyond one sentence of mint text; the website of record is a social account whose timeline was read in a logged-out view showing only recent posts. No on-chain transaction values were read, so nothing here measures what buyers paid. No contact was made with the artist.\n\nSeveral questions remain open, and this package records them as open rather than filling them.\n\nWhy were the noise scales not published as traits? They are drawn in the same block as the three that were, by the same generator, and they matter more visually than the swatch index. Obtaining the feature-extraction script for project 188 would show whether they were considered and dropped or never offered.\n\nIs the shared generator idiom a template? The construction here matches the Amoeba project exactly, including two defects. A survey of Art Blocks scripts from 2021 for the same sixteen-character slice and the same modulo-1000 output step would establish whether this is a common ancestor and, if so, how many editions inherit its quantisation.\n\nDoes the broken permutation measurably distort colour rarity? Because a single decimal drives every swap, the routine can only reach a small subset of orderings, so some colour roles are systematically more likely than a fair shuffle would make them. Quantifying that across all 1,024 tokens would turn a structural observation into a distribution, and this package did not do it.\n\nWhat does `activated_at` denote in this index? The first mint precedes it by five days here, by two days on the LIA project and by eight on Amoeba. Three projects in one batch is enough to say the field does not mean what a catalogue would assume, and not enough to say what it does mean.\n\nDoes the CC BY-SA licence extend to the program? The record attaches a licence to the project and says nothing about the code as a program, and the code is unusually readable and therefore unusually reusable. A clarifying statement from the artist or the platform would settle a question that currently keeps a legible, well-organised piece of source out of circulation.\n\nFinally, what happened with the compromised account, and does anything on it need to be treated as unreliable for provenance purposes? The account itself says it was taken over on at least one occasion. Any dossier that uses the artist's social posts as a source should establish which posts predate that."
    }
  ],
  "facts": [
    {
      "id": "edition-size",
      "topic": "work-context",
      "value": 1024,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S01"
      ],
      "status": "verified",
      "note": "Indexed invocations 1024 against max_invocations 1024; the collection page states a fixed edition of 1,024 unique artworks."
    },
    {
      "id": "project-id",
      "topic": "work-context",
      "value": 188,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "On-chain project ID, corroborated by the returned composite key 0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-188."
    },
    {
      "id": "library",
      "topic": "construction",
      "value": "p5@1.0.0",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S06"
      ],
      "status": "verified",
      "note": "Declared by the index and supplied by the renderer. Used for drawing and for the noise function that generates every blot."
    },
    {
      "id": "script-bytes",
      "topic": "construction",
      "value": 7580,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "Single fragment of unminified working source, including a debug console statement."
    },
    {
      "id": "script-sha256",
      "topic": "construction",
      "value": "e9c9317b2250de3ed0f0cc8ae73cf278386a6aafc37c422f81ec2bebce22c8eb",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S06"
      ],
      "status": "verified",
      "note": "SHA-256 over the UTF-8 bytes of the returned script field, computed with the Web Crypto API."
    },
    {
      "id": "render-model",
      "topic": "construction",
      "value": "one frame then stop",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S06"
      ],
      "status": "verified",
      "note": "noLoop() in setup, draw() runs once. The frame counter read 1 and stayed at 1 in the running instance."
    },
    {
      "id": "controls",
      "topic": "construction",
      "value": "none",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S06"
      ],
      "status": "verified",
      "note": "No key, mouse or touch handler anywhere in the program; keyPressed, keyTyped and mousePressed are all undefined in the running instance."
    },
    {
      "id": "display-static-wrong",
      "topic": "work-context",
      "value": false,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S06"
      ],
      "status": "verified",
      "note": "The index reports display_static false for a single-frame work with no handlers. The flag is wrong here."
    },
    {
      "id": "prng-resolution",
      "topic": "construction",
      "value": 1000,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "The generator returns the absolute value of the state modulo 1000 divided by 1000, identical in construction to the Amoeba project in this batch."
    },
    {
      "id": "seed-precision",
      "topic": "construction",
      "value": "56 bits parsed, 53 representable, then coerced to 32",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "parseInt(hash.slice(0,16),16) includes the 0x prefix and parses fourteen hex digits. The same idiom appears on the Amoeba project."
    },
    {
      "id": "traits-reproduced",
      "topic": "construction",
      "value": "3 of 3 keys at 1024 of 1024",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S03",
        "S06"
      ],
      "status": "verified",
      "note": "headshape, headcolor and swatch. The program makes five independent parameter draws and publishes three."
    },
    {
      "id": "unpublished-noise-scales",
      "topic": "construction",
      "value": 2,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S03",
        "S06"
      ],
      "status": "verified",
      "note": "The horizontal and vertical noise scales correspond to no published trait. 1x1 occurs on 141 tokens and 4x4 on 8."
    },
    {
      "id": "mirror-symmetry",
      "topic": "examples",
      "value": "0 mismatches in 8930 pairs per token",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S06"
      ],
      "status": "verified",
      "note": "Measured on all four observed tokens. The head is exactly symmetric to grid-cell granularity; the body and arms are not."
    },
    {
      "id": "broken-shuffle",
      "topic": "construction",
      "value": "single decimal reused for every swap",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S06"
      ],
      "status": "verified",
      "note": "The swatch permutation is a deterministic reordering, not a shuffle, and preserves most of the original ordering. Confirmed on token 188000023."
    },
    {
      "id": "debug-statement",
      "topic": "construction",
      "value": "console.log of the token hash",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S06"
      ],
      "status": "verified",
      "note": "Shipped with the program and still executed on every render; read directly from the renderer console."
    },
    {
      "id": "first-mint",
      "topic": "mint",
      "value": "2021-10-18T18:40:26+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S03"
      ],
      "status": "verified",
      "note": "Invocation 0, five days before the recorded activation and eleven days before the opening."
    },
    {
      "id": "activation",
      "topic": "mint",
      "value": "2021-10-23T18:04:15+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "Postdates the first mint, so it does not mark the first acceptance of a mint."
    },
    {
      "id": "public-opening",
      "topic": "mint",
      "value": "2021-10-29T19:00:00+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S01"
      ],
      "status": "verified",
      "note": "Index start_datetime. The collection page renders this instant locally and displays 30 October 2021."
    },
    {
      "id": "completion",
      "topic": "mint",
      "value": "2021-10-30T04:51:27+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S03"
      ],
      "status": "verified",
      "note": "Same instant as the final mint."
    },
    {
      "id": "sale-duration-hours",
      "topic": "mint",
      "value": 9.86,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S03"
      ],
      "status": "verified",
      "note": "Endpoints are the public opening 2021-10-29T19:00:00Z and the final mint 2021-10-30T04:51:27Z; the difference in milliseconds divided by 3600000. The fastest sale in this batch."
    },
    {
      "id": "first-public-mint-delay-seconds",
      "topic": "mint",
      "value": 87,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S03"
      ],
      "status": "verified",
      "note": "From the opening to the first public mint at 2021-10-29T19:01:27Z."
    },
    {
      "id": "distinct-owners",
      "topic": "mint",
      "value": 527,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S03"
      ],
      "status": "verified",
      "note": "Across all 1,024 tokens at the time of retrieval, roughly two tokens per holder."
    },
    {
      "id": "index-price",
      "topic": "mint",
      "value": "0.2 ETH",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "reported",
      "note": "A single price with no auction schedule anywhere in the one-sentence description. No sale mechanism is asserted by this package."
    },
    {
      "id": "licence",
      "topic": "rights",
      "value": "CC BY-SA 4.0",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S08"
      ],
      "status": "reported",
      "note": "Fully specified identifier with a null link. The ShareAlike term attaches an obligation to any adaptation a catalogue distributes."
    },
    {
      "id": "artist-interview",
      "topic": "conception",
      "value": null,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "The indexed artist_interview field is null and the website of record is a social profile rather than a project page."
    },
    {
      "id": "held-token",
      "topic": "work-context",
      "value": "188000737",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S03",
        "S04",
        "S05"
      ],
      "status": "verified",
      "note": "The only token in this edition held by an address in the refreshed AB5D linked-wallet set, minted about seven hours into the sale."
    },
    {
      "id": "audio",
      "topic": "construction",
      "value": "silent by construction",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S06"
      ],
      "status": "verified",
      "note": "No audio call in the program, no audio or video elements in the renderer page, and p5.SoundFile undefined in the running instance."
    }
  ],
  "examples": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "188000737",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000737",
      "sourceIds": [
        "S03",
        "S04",
        "S06"
      ],
      "selectionNote": "The Art Blocks 500 holding, and the token on which the single-frame render, the absence of controls and the shipped debug statement were established.",
      "observationNote": "A cyan field holding a near-black and off-white blot head above a red body, with an off-white left arm and a green right arm. The blot resolves into a readable face that nothing in the program intends. Live globals gave the eater shape, noise scales 3 and 2, and a non-head palette of cyan, red, off-white and green, being swatch 2 with the neutral pair appended and the list reordered by the program's single-decimal routine."
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "188000016",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000016",
      "sourceIds": [
        "S03",
        "S04",
        "S06"
      ],
      "selectionNote": "The coarse extreme of the unpublished noise parameter, and a coloured head, which inverts the colour roles.",
      "observationNote": "An off-white field, a tall two-lobed head filled with a fine interleave of pure red and pure green cells, and a dark navy body. Both noise scales read 1, so the field changes sign almost every cell and the blot reads as dazzle rather than as regions. Both arms are the same colour, which the coloured branch forces."
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "188000044",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000044",
      "sourceIds": [
        "S03",
        "S04",
        "S06"
      ],
      "selectionNote": "The stretched extreme of the same unpublished parameter, drawn from the same swatch as the other two, so the comparison isolates it.",
      "observationNote": "A red field, a stepped dark navy silhouette and two large off-white rectangles inside it, with no speckle at all. Both noise scales read 4. It shares a swatch with tokens 188000737 and 188000016 and looks unrelated to either, and the entire difference is a parameter the metadata does not record."
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "188000023",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000023",
      "sourceIds": [
        "S03",
        "S04",
        "S06"
      ],
      "selectionNote": "A second coloured token from a different swatch, used to confirm the colour-role inversion and to measure the grid rounding.",
      "observationNote": "A pale yellow and pink blot on a dark neutral ground with a pale neutral body and arms. The head palette was the second and third entries of swatch 7 in their original relative order, which is the signature of the program's deterministic reordering. In the same reading the canvas was 662 CSS pixels square, the exact cell size 41.375, the rounded cell size 41 and the drawn extent 656 pixels."
    }
  ],
  "codeInspection": {
    "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
    "locator": "HTTP POST, named operation ProjectBySlug, variables {\"slug\":\"blockbob-rorschach-by-eboy\"}, selecting script and scripts{index script}; identity corroborated by the returned composite id 0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-188",
    "sha256": "e9c9317b2250de3ed0f0cc8ae73cf278386a6aafc37c422f81ec2bebce22c8eb",
    "bytes": 7580,
    "retrievedAt": "2026-09-18T07:47:47.446Z",
    "runtime": "p5@1.0.0",
    "method": "Index retrieval over HTTPS, not a direct read of contract storage; no block reference pinned. SHA-256 over the UTF-8 bytes of the returned script field. The whole program was read; coverage of seed handling, parameter selection, rendering sequence, time and interaction behaviour and external dependencies is itemised in evidence.json.",
    "executed": true,
    "executionDisclosure": "Read in full from the retrieved text without local execution. Separately executed by the official Art Blocks renderer during the token observations, where its global variables, console output and noise behaviour were read to validate the reimplementation; not run by the researcher in any other environment.",
    "chainBlock": null
  },
  "editorialExceptions": [
    {
      "id": "dominant-parameter-unpublished",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "Two of the program's five parameters, the horizontal and vertical noise scales, are not published as traits, and they determine whether a token reads as fine speckle or as large flat regions. Any rarity table or filter built from the Art Blocks metadata for this project omits the edition's dominant visual variable."
    },
    {
      "id": "display-static-flag-wrong",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The index reports display_static false for a work that calls noLoop, draws one frame and stops, with no handlers of any kind. Do not present this work with a loop, a motion asset or a play control."
    },
    {
      "id": "symmetry-claim-is-head-only",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The head is exactly mirror-symmetric, measured at 0 mismatches in 8,930 pixel pairs on each of four tokens. The body and arms are not, and black-and-white tokens routinely have two differently coloured arms. Describe the symmetry as of the head."
    },
    {
      "id": "sharealike-obligation",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The reported licence carries a ShareAlike term. Crops, recolours, composite plates and adjusted stills are adaptations, and distributing one obliges the distributor to release it under the same licence. This is a commitment rather than a prohibition and needs a rights decision before publication."
    },
    {
      "id": "licence-unlinked",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The identifier is fully specified but carries a null link, and the project page's details accordion was not expanded to check for a licence field. Terms URL recorded as null."
    },
    {
      "id": "artist-link-of-record-is-a-compromised-social-account",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The website of record is an X profile rather than a site the artist controls end to end, and that account has publicly stated it was compromised on at least one occasion. Do not resolve provenance or rights questions from posts on it without independent corroboration, and cite what was seen and when."
    },
    {
      "id": "debug-statement-on-chain",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The shipped program prints the token hash to the browser console on every render. It is harmless, it is permanent, and it is worth mentioning in any account of what 'on chain' preserves."
    },
    {
      "id": "shared-generator-idiom",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The random generator, its 1,000-value output step and the seed slice are identical in construction to the Amoeba project released the previous day by a different artist. This package records the match without claiming to have found its source; a platform-wide survey would settle it."
    },
    {
      "id": "activated-at-postdates-first-mint",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The index reports activation on 2021-10-23 while the first mint is timestamped 2021-10-18. The same pattern appears on the LIA and Amoeba projects in this batch, so it is a property of the field rather than of this project."
    },
    {
      "id": "sale-mechanism-unstated",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The index reports a single price of 0.2 ETH and the one-sentence description states no mechanism. This package does not assert one; a reviewer wanting to state it should read the mint transactions."
    }
  ],
  "presentation": {
    "editionSize": 1024,
    "maximumEdition": 1024,
    "mintDate": "2021-10-29T19:00:00+00:00",
    "mintDateMeaning": "public opening",
    "mintDateLabel": "Mint date",
    "artwork": {
      "project_id": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-188",
      "token_id": "188000737",
      "invocation": 737,
      "owner_address": "0xdd19308a9731cdecb67e0d80ca6823394208c045",
      "preview_asset_url": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000737.png",
      "live_view_url": "/series/blockbob-rorschach-by-eboy/artwork.html",
      "canonicalLiveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000737",
      "canonicalUrl": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000737",
      "mode": "live",
      "aspectRatio": 1,
      "interactionNote": "",
      "copyrightStatus": "CC BY-SA 4.0",
      "copyrightUrl": null,
      "displayBasis": "The work draws one frame and stops, so a still is fully faithful to the finished state. This is the one work in this batch for which a still loses nothing."
    }
  },
  "observationImages": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "188000737",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000737",
      "sourceIds": [
        "S03",
        "S04",
        "S06"
      ],
      "selectionNote": "The Art Blocks 500 holding, and the token on which the single-frame render, the absence of controls and the shipped debug statement were established.",
      "observationNote": "A cyan field holding a near-black and off-white blot head above a red body, with an off-white left arm and a green right arm. The blot resolves into a readable face that nothing in the program intends. Live globals gave the eater shape, noise scales 3 and 2, and a non-head palette of cyan, red, off-white and green, being swatch 2 with the neutral pair appended and the list reordered by the program's single-decimal routine.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000737.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000737"
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "188000016",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000016",
      "sourceIds": [
        "S03",
        "S04",
        "S06"
      ],
      "selectionNote": "The coarse extreme of the unpublished noise parameter, and a coloured head, which inverts the colour roles.",
      "observationNote": "An off-white field, a tall two-lobed head filled with a fine interleave of pure red and pure green cells, and a dark navy body. Both noise scales read 1, so the field changes sign almost every cell and the blot reads as dazzle rather than as regions. Both arms are the same colour, which the coloured branch forces.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000016.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000016"
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "188000044",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000044",
      "sourceIds": [
        "S03",
        "S04",
        "S06"
      ],
      "selectionNote": "The stretched extreme of the same unpublished parameter, drawn from the same swatch as the other two, so the comparison isolates it.",
      "observationNote": "A red field, a stepped dark navy silhouette and two large off-white rectangles inside it, with no speckle at all. Both noise scales read 4. It shares a swatch with tokens 188000737 and 188000016 and looks unrelated to either, and the entire difference is a parameter the metadata does not record.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000044.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000044"
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "188000023",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000023",
      "sourceIds": [
        "S03",
        "S04",
        "S06"
      ],
      "selectionNote": "A second coloured token from a different swatch, used to confirm the colour-role inversion and to measure the grid rounding.",
      "observationNote": "A pale yellow and pink blot on a dark neutral ground with a pale neutral body and arms. The head palette was the second and third entries of swatch 7 in their original relative order, which is the signature of the program's deterministic reordering. In the same reading the canvas was 662 CSS pixels square, the exact cell size 41.375, the rounded cell size 41 and the drawn extent 656 pixels.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000023.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/188000023"
    }
  ],
  "publication": {
    "date": "2026-09-20",
    "url": "https://ab5d.xyz/series/blockbob-rorschach-by-eboy/",
    "authorization": "Phil requested website publication on 2026-09-17.",
    "reviewSnapshot": "/docs/series-essays/production/blockbob-rorschach-by-eboy/record.json",
    "unresolvedResearchQuestionsRetained": true
  }
}
