{
  "schema": "ab5d-series-essay/1",
  "identity": {
    "chainId": 1,
    "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
    "projectId": 84,
    "slug": "primidance-by-wuwa",
    "title": "PrimiDance",
    "artistCredit": "wuwa",
    "artistCreditAlternate": "Ben Benhorin, as credited on the live Art Blocks project page and on the artist's own site",
    "artistDossierUrls": [
      "https://ab5d.xyz/artists/wuwa/"
    ]
  },
  "revision": 2,
  "researchCutoff": "2026-09-18",
  "status": "published-with-research-limitations",
  "facts": [
    {
      "id": "edition-size",
      "topic": "work-context",
      "value": 256,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S01"
      ],
      "status": "verified",
      "note": "Indexed invocations 256 against max_invocations 256; page states a fixed edition of 256."
    },
    {
      "id": "project-id",
      "topic": "work-context",
      "value": 84,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "On-chain project id. The AB5D atlas position for this series is also 84, which is a coincidence; the two are separate numbers."
    },
    {
      "id": "artist-credit",
      "topic": "work-context",
      "value": "wuwa, credited on the live page as Ben Benhorin",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S01",
        "S06"
      ],
      "status": "verified",
      "note": "Index artist_name is wuwa; the project page and the artist's own site use Ben Benhorin. Both preserved."
    },
    {
      "id": "series-position",
      "topic": "work-context",
      "value": "first of three, the Primitive Trilogy",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S05",
        "S06"
      ],
      "status": "reported",
      "note": "Artist's own framing: PrimiDance, PrimiLife, PrimiEnd, described as his debut on the platform."
    },
    {
      "id": "script-bytes",
      "topic": "construction",
      "value": 3813,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "A single script fragment. Small even for this contract, which the artist cites as part of the platform's appeal."
    },
    {
      "id": "palettes",
      "topic": "construction",
      "value": 29,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S04"
      ],
      "status": "verified",
      "note": "Twenty-nine three-colour palettes defined literally in the script. All twenty-nine indices map one to one onto stable platform palette names in array order."
    },
    {
      "id": "primitive-functions",
      "topic": "construction",
      "value": "seven drawing functions over six primitive types",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S05"
      ],
      "status": "verified",
      "note": "Torus, box, sphere, cylinder, four-sided cone, flattened box and a second smaller torus. The artist's account names six primitives including plane(); the code uses a flattened box rather than a plane call and uses the torus twice at different proportions."
    },
    {
      "id": "wireframe-probability",
      "topic": "construction",
      "value": "19 of1000generator buckets under equal-weight assumption",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "inferred",
      "note": "Integer helper yields99and100when threshold exceeds98; no proof of uniform real token distribution."
    },
    {
      "id": "wireframe-count",
      "topic": "examples",
      "value": 8,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S04",
        "S05"
      ],
      "status": "verified",
      "note": "Invocations 0, 2, 10, 85, 110, 121, 129 and 152. The artist wrote that the feature was meant to be five and came out eight; the edition confirms eight."
    },
    {
      "id": "generator-reproduction",
      "topic": "examples",
      "value": "four platform traits reproduced from the token hash across the whole edition",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S04",
        "S02"
      ],
      "status": "reported",
      "note": "Submitted research result; not independently repeated by coordinator."
    },
    {
      "id": "trait-indexing-gap",
      "topic": "examples",
      "value": "token 84000198 carries an empty trait object",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S04"
      ],
      "status": "verified",
      "note": "Every other token in the edition carries fourteen traits. The hash is present and the generator reproduces values for it, so this is an indexing gap rather than a property of the token."
    },
    {
      "id": "first-token-minted",
      "topic": "mint",
      "value": "2021-06-05T06:41:58+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S03",
        "S05"
      ],
      "status": "verified",
      "note": "Three days before activation. The artist states this was his own proof mint, and the token carries the rare wireframe trait. Calendar date 5 June 2021 in UTC."
    },
    {
      "id": "activated",
      "topic": "mint",
      "value": "2021-06-08T14:38:25+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "Five days before the second mint. Activation did not begin the sale in any practical sense."
    },
    {
      "id": "second-token-minted",
      "topic": "mint",
      "value": "2021-06-13T15:00:21+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "start_datetime carries the same value, so the two do not independently mark a public opening. This timestamp is what the project page renders as 14 June 2021 in a UTC+10 browser."
    },
    {
      "id": "completed",
      "topic": "mint",
      "value": "2021-07-16T21:19:25+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "Calendar date 16 July 2021 in UTC."
    },
    {
      "id": "second-to-complete-interval",
      "topic": "mint",
      "value": "33 days 6 hours 19 minutes 4 seconds",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "inferred",
      "note": "Independently recalculated from fresh second mint and completion timestamps; not a public sale duration."
    },
    {
      "id": "current-price",
      "topic": "mint",
      "value": "100000000000000000 wei (0.1 ETH)",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "reported",
      "note": "Currently configured price on a completed project. Not proof of the price paid at mint."
    },
    {
      "id": "release-date-display",
      "topic": "work-context",
      "value": "page renders 14 June 2021 from a UTC+10 browser",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S01",
        "S02"
      ],
      "status": "verified",
      "note": "The underlying start_datetime is 2021-06-13T15:00:21Z, which is 13 June in UTC. Activation was 8 June in UTC. Three defensible dates depending on event and timezone."
    },
    {
      "id": "motion",
      "topic": "examples",
      "value": "Continuous WEBGL animation; requested frame rate30",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S07",
        "S02",
        "S01"
      ],
      "status": "verified",
      "note": "Motion observed independently; exact frame rate not measured."
    },
    {
      "id": "interaction",
      "topic": "examples",
      "value": "Pause and trail effects observed; drag/reset attempted",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S07",
        "S01",
        "S02"
      ],
      "status": "verified",
      "note": "Camera values not measured independently; do not treat all controls as fully quantified."
    },
    {
      "id": "pause-partial",
      "topic": "examples",
      "value": "the play and pause control pauses only the orbit",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S07",
        "S02"
      ],
      "status": "verified",
      "note": "Measured: the orbit counter froze at 709 while the per-shape counter advanced sixty frames in two seconds and the canvas continued to change. No control stops the motion entirely."
    },
    {
      "id": "audio",
      "topic": "examples",
      "value": "No mechanism found in artist code; not auditioned",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S07",
        "S02"
      ],
      "status": "verified",
      "note": "No claim of listening or autoplay policy measurement."
    },
    {
      "id": "licence-field-uncontrolled",
      "topic": "rights",
      "value": "34 distinct licence label strings across 359 projects on this contract",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S09"
      ],
      "status": "reported",
      "note": "Submitted research result; not independently repeated by coordinator."
    }
  ],
  "rights": {
    "artwork": {
      "reportedLabel": "CC BY-NC 4.0",
      "category": "creative-commons",
      "termsUrl": "https://creativecommons.org/licenses/by-nc/4.0/",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S12"
      ],
      "note": "Current indexed label CC BY-NC4.0. Standard deed identified independently despite missing index link. Historical grant/revisions not reconstructed.",
      "unresolvedConflicts": []
    },
    "code": {
      "reportedLabel": null,
      "category": "unknown",
      "termsUrl": null,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S01"
      ],
      "note": "No licence statement accompanies the artist script. Fully on-chain storage establishes readability, not redistribution rights.",
      "unresolvedConflicts": []
    },
    "thirdParty": [
      {
        "component": "p5.js 1.0.0",
        "reportedLabel": "LGPL 2.1",
        "category": "custom",
        "termsUrl": "https://raw.githubusercontent.com/processing/p5.js/1.0.0/license.txt",
        "observedAt": "2026-09-18",
        "sourceIds": [
          "S13"
        ],
        "note": "Upstream licence heading independently inspected; separate from artwork and artist code."
      }
    ]
  },
  "sections": [
    {
      "id": "work-context",
      "heading": "The work and its context",
      "bodyMarkdown": "PrimiDance arranges familiar computer-generated solids around a large central sphere. Rings, boxes, cylinders and angular forms turn through a composition that can suggest a planet with satellites, while remaining openly constructed from simple geometry. The solid and wireframe examples offer sharply different ways of seeing that arrangement: one depends on light and concealment, the other on a dense crossing of edges. [^S07][^S08]\n\nThe project is credited to wuwa in the indexed record and to Ben Benhorin on the current Art Blocks page. It is project 84 on its Ethereum contract, a Factory release containing 256 works. Its animation and viewer controls make a still image only one state of the work. The controls affect camera position, orbital movement and trails; the observed effects are discussed below. [^S01][^S02]\n\nBenhorin presents PrimiDance as the opening work of his Primitive Trilogy, followed by PrimiLife and PrimiEnd. That context places its elementary shapes within a continuing investigation rather than treating them as a vocabulary exhausted by this one edition. [^S05][^S06]"
    },
    {
      "id": "conception",
      "heading": "Conception and development",
      "bodyMarkdown": "Ben Benhorin’s account places PrimiDance at the beginning of his Primitive Trilogy. He connects its basic geometric vocabulary to an early interest in computer graphics and to the creative pressure of technical constraints. The account is retrospective; no publication date was visible in the inspected text. [^S05]\n\nHe describes wanting recognisable continuity across the edition while allowing differences to unfold through animation. Palette, size and orbital speed made that variation more conspicuous. Palette types and background choices then introduced further combinations, and wireframe was added as a deliberately uncommon view of the underlying geometry. His reported outcome of eight wireframe works can be compared separately with token data. [^S05]\n\nThe account also explains his hesitation about interaction. Letting viewers alter a composition shares decisions normally reserved for the artist, but he considered that exchange appropriate to a work experienced over time. Trails and camera movement became ways for collectors to explore the system after minting. This establishes the artist’s stated reasoning; the deployed code and observed controls establish what the work actually permits. [^S05][^S02]"
    },
    {
      "id": "construction",
      "heading": "How the work was constructed",
      "bodyMarkdown": "The artist script was retrieved from the indexed project record by an HTTP POST to the public GraphQL endpoint, filtered on the exact slug and corroborated against the contract address and project ID returned in the same response [^S02]. It is 3,813 bytes and hashes to SHA-256 `5cfa4f55dfea88f747c6a89a6a74103f306832970f0f3fd4ab8bd4a223dfc277`. The record reports a script count of 1, and the single `scripts` row reproduces the `script` field exactly. This was an index retrieval, not a direct read of contract storage, and no block reference was pinned. The whole program was read; what follows describes it without reproducing it.\n\nThe canvas is WEBGL, sized to the smaller viewport dimension less fifty pixels, with a requested frame rate of thirty, not a measured guarantee. Randomness comes from a compact xorshift generator seeded by parsing the first sixteen characters of `tokenData.hash`, including `0x` and therefore fourteen hexadecimal digits, with decimals produced by taking the state modulo one thousand and dividing by one thousand. The first bitwise operations coerce the parsed value to thirty-two bits. Similarity to another implementation does not establish a source or a relationship between artists. [^S02]\n\nA table of twenty-nine three-colour palettes is defined literally in the script. The generator makes its draws in a fixed order: palette, then background index between 0 and 2, then the wireframe flag, then the primitive count, then the orbit speed. The wireframe flag is set when a draw from 0 to 100 exceeds 98, which selects integer outcomes 99 and 100. Under equally weighted thousandth-step generator outputs, those outcomes occupy nineteen of a thousand buckets; this is a conditional calculation rather than an audited probability for the minted edition. [^S02]\n\nThe primitive count is drawn between 20 and 60. For each primitive the script pushes one of seven drawing functions, a size, three coordinates, a rotation and a small integer variance value. The size draw is written with its bounds in descending order, the larger value first, and the helper adds one to its second argument before interpolating and flooring. Reversing these arguments therefore cannot simply be treated as an ordinary ascending inclusive range. [^S02]\n\nThe seven drawing functions are a torus, a box, a sphere, a cylinder, a four-sided cone, a flattened box and a second smaller torus with variable subdivisions. The artist's own account names six primitives, \"plane(), box(), cylinder(), cone(), torus(), sphere()\" [^S05]. The code uses seven functions rather than six, because the torus appears twice at different proportions and subdivision counts, and because what reads as a plane is a box flattened to an eighth of its width rather than a plane call. The platform's trait names map onto those functions legibly: Bagels to the toruses, Boxes to the box, Balls to the sphere, Cylinders to the cylinder, Pyramids to the four-sided cone, Sticks to the flattened box, and Others to the second torus. [^S02]\n\nThe draw routine sets an ambient light and four point lights, clears the background unless trails are enabled, then for each primitive applies three rotations driven by a global orbit counter, translates to the primitive's position, applies its fixed rotation and draws it. A separate counter drives extra local rotations for the two torus routines, the box, cone and elongated box. The sphere and cylinder routines have no such additional rotation. It is therefore inaccurate to say that every primitive has a separate self-spin. A large sphere is drawn at the origin on every frame, after the smaller shapes. Its radius depends on the eighth stored size, and it retains the fill or stroke left by the last primitive. The visual suggestion of a planet comes from this central mass and surrounding movement. [^S02]\n\nWireframe mode changes three things at once. The background becomes the palette's first colour regardless of the background index, fills are replaced by a stroke in a darkened version of that colour, and several mesh subdivision counts are reduced, so the central sphere drops from a smooth fifty by fifty to sixteen by six and the toruses to a coarse low-poly shell. Some shapes retain their existing subdivision choices. The mode changes selected geometry settings as well as fill and stroke; it is not only a final image filter. [^S02]\n\nTwo counters drive everything that moves: one for the orbit, one for the per-shape spin. The four documented controls map onto them directly. The key `p` toggles the orbit counter only. The key `t` toggles whether the background is cleared each frame. The key `r` calls the p5 camera reset. A mouse press sets a flag that enables p5's orbit control from that point on, enabling camera manipulation after a press. Actual drag behaviour needs a separate runtime test. Pausing the orbit does not stop the second counter, so it does not freeze all local movement. No audio mechanism was found in the inspected program; that is not an audio audition. [^S02]"
    },
    {
      "id": "mint",
      "heading": "The mint",
      "bodyMarkdown": "The fresh Art Blocks index records the first mint on 5 June 2021, activation on 8 June, the second mint on 13 June and completion on 16 July. These fields describe different events. The full offset-bearing timestamps are retained in the source record; a displayed release date should not be substituted for all of them. [^S02]\n\nBenhorin recalls minting #0 himself before the project went live and receiving a wireframe output. The indexed chronology and Wireframe label are consistent with that account. They do not, by themselves, reconstruct every allocation or establish the public opening time. [^S05][^S03]\n\nSubtracting the second mint timestamp, 13 June at 15:00:21, from completion, 16 July at 21:19:25, gives 33 days, 6 hours, 19 minutes and 4 seconds. That is an interval between indexed events, not a verified public-sale duration. The earlier activation field also cannot establish when public purchasing became possible without additional evidence. [^S02]\n\nThe currently configured price is 0.1 ETH. No contemporaneous price announcement was recovered in this review, so this setting is not presented as a verified opening price or the amount paid for every token. The submitted token record dates the AB5D holding, #200, to roughly two hours before recorded completion. [^S02][^S03]"
    },
    {
      "id": "rights",
      "heading": "Copyright and licensing",
      "bodyMarkdown": "The current project record labels the artwork CC BY-NC 4.0, although its terms-link field is empty. The named Creative Commons deed can nevertheless be identified. It describes sharing and adaptation subject to attribution, indication of changes and a noncommercial restriction. The link supplied here explains the standard named by the index; it does not reconstruct the history of the artist’s licence choices. [^S02][^S12]\n\nThe contract-wide variation in licence labels recorded by the submitted research does not make this recognisable standard impossible to identify. It remains useful to preserve the project’s exact reported label and distinguish it from evidence of earlier terms. A complete history of grants or revisions was not recovered. [^S09][^S02]\n\nThe rendering dependency is p5.js 1.0.0. Its upstream licence file identifies the GNU Lesser General Public License, version 2.1. That is a separate software record, not a grant for every artwork or artist program rendered with the library. No separate reuse grant for Benhorin’s artist script was found in the inspected program. [^S13][^S02]\n\nInteraction allows viewers to select different states and viewpoints, but that fact alone does not settle rights in any particular reproduction or establish a new licence. This essay makes no such inference. Its original prose is dedicated to CC0; the artwork, artist code and library retain their distinct rights records. [^S02]"
    },
    {
      "id": "examples",
      "heading": "Close reading of examples",
      "bodyMarkdown": "The comparison uses #0, #1, #10 and #200, whose full token identifiers are 84000000, 84000001, 84000010 and 84000200 on the project’s Ethereum contract. Fresh indexed records confirm their identities. All four original renderers were inspected, with sustained motion and control observations concentrated on #200. Submitted preview and canonical-page checks remain separately attributed in the research record. [^S03][^S07][^S08][^S11]\n\nIn #0, dark lines on a saturated violet ground describe a sphere crowded by smaller geometric meshes. A large detached ring toward the upper right pulls attention away from the centre, while a faceted sphere below it provides a smaller counterweight. At the centre, rectangular outlines and triangular subdivisions overlap so densely that assigning every line to an object becomes difficult. The viewer can recognise the sphere as a whole while losing track of its individual edges. Transparency here does not make the construction completely legible; it substitutes one kind of ambiguity for the occlusion of solid objects. [^S03][^S02]\n\nThe ring’s coarse polygonal contour is especially revealing beside the central sphere. Both are familiar three-dimensional primitives, but their different subdivisions make one seem almost emblematic and the other like an exposed framework. The flat ground holds those lines together as a graphic composition. At the observed moment, the largest satellite’s separation from the central cluster gives the image a directional imbalance that a static diagram of evenly distributed objects would lack. This is a reading of one rendered state, not a claim that the arrangement stays fixed as the animation continues. [^S03]\n\nIn #10, a green ground supports another dark wireframe arrangement. Long narrow bars cross above the central sphere, and a large faceted ring toward the lower left shifts the weight away from #0’s upper-right emphasis. The sphere’s upper and right regions carry dense crossings; elsewhere, larger open polygons let the ground dominate. Comparing these two works shows that wireframe is a means of varying visual density as well as a way of exposing geometry. Their shared mode does not reduce them to differently coloured copies. [^S03][^S02]\n\nIn #1, the central sphere is solid and close in colour to its muted purple-grey ground. Orange circular forms emerge above and below its right side, while dark rings and small angular objects remain more subdued. The sphere hides parts of its surroundings, replacing the crossings of the wireframe examples with interruptions. Its low contrast makes that large mass initially quieter than its size suggests. Smaller saturated objects can command attention even though the central form occupies much more space. [^S03]\n\nThe AB5D holding, #200, has a golden central sphere against a dark purple-brown field. Orange objects and yellow polygons give the surrounding cluster a brighter, more insistent rhythm than #1. Dark toruses and boxes nearly merge with the ground, becoming evident when an edge catches light or a neighbouring form moves. The first inspected view placed an angular yellow ring above the sphere and a darker box below and to the right. Later views changed what was concealed behind the central mass. The fresh ownership check confirms this token in one of the complete linked-wallet set retrieved for AB5D. [^S07][^S10][^S03]\n\nIn #200, the sphere acts both as an anchor and an obstruction. It gives the composition a stable centre while making the orbit perceptible through arrivals and disappearances at its edges. The smaller shapes do not need to travel across the whole square to change the composition substantially. A ring tipping toward the viewer can open a visible hole; a box turning away can lose the broad face that previously made it prominent. The code distinguishes these local rotations from the movement of the surrounding constellation. [^S07][^S02]\n\nThe pause test made that distinction visible. After pressing `p`, two screenshots retained the broad arrangement while the top ring and lower-right box changed orientation. Pressing `p` again resumed the orbit. Enabling `t` produced broader swept forms as earlier positions accumulated around the sphere; disabling it restored clean surfaces. These observations establish the visible response without claiming an exact measured frame rate. The additional drag and reset actions produced a changed, then centred view, but the review did not isolate camera coordinates from the continuing orbit. Audio was not auditioned; no sound mechanism was found in the script. [^S07][^S02]\n\nA fresh retrieval of all 256 token records confirms eight indexed wireframe labels, at #0, #2, #10, #85, #110, #121, #129 and #152. This agrees with the artist’s retrospective count. Token #198 currently has an empty features object. That is a gap in the retrieved metadata, not proof that the artwork lacks features. The submitted research also includes a generator reimplementation and comparisons with selected traits; those remain attributed to its original researcher rather than claimed as independently repeated here. [^S04][^S05]"
    },
    {
      "id": "significance",
      "heading": "Significance and limitations",
      "bodyMarkdown": "PrimiDance makes a familiar vocabulary of computer graphics available for sustained looking. A solid central sphere hides and reveals surrounding forms as they move; wireframe exposes overlapping meshes instead. The difference is not simply between two surface treatments. It changes how the viewer reads depth, whether through occlusion and light or through the uncertain crossing of lines. The deployed program makes both readings possible using a compact set of shapes. [^S02][^S07][^S08]\n\nThe controls extend that comparison into time. In the independently observed #200, pausing the orbit leaves local rotations visible, while enabling trails allows earlier positions to accumulate. The viewer can therefore change how movement is presented without changing the token’s underlying palette and shape selections. Those observations support a specific account of interaction rather than a general claim that it was unprecedented on the platform. [^S07][^S02]\n\nBenhorin’s development account provides useful evidence of decisions and intentions, but it should be read alongside the program rather than treated as a line-by-line technical specification. The artwork script contains colour triples, for example, while names such as Weak Coffee belong to a separate descriptive layer. Similarly, the declared frame rate is a request to the renderer, not a measured constant across devices. Careful distinctions preserve the usefulness of both the artist’s account and the executable work. [^S05][^S02]\n\nUnresolved research questions:\n\n- Recover launch-era price and allocation evidence before asserting a public sale duration.\n- Locate any separate artist-code licence and reconstruct earlier artwork terms if available.\n- Compare the indexed script against a pinned chain retrieval.\n- Recover the platform feature extractor and resolve the traits not independently reproduced.\n- Establish the timing of revisions to the artist’s retrospective account. [^S04][^S05]"
    }
  ],
  "examples": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "84000000",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000000",
      "sourceIds": [
        "S03",
        "S04",
        "S05",
        "S08"
      ],
      "selectionNote": "First indexed token, minted before activation; wireframe example discussed in the artist account. Allocation is not established by mint order alone.",
      "observationNote": "Coordinator original-renderer observation: Dark wireframe meshes on saturated violet. Large central sphere overlaid with rectangular and triangular meshes, large detached angular ring upper right, faceted sphere lower right. Transparency makes front/back relationships ambiguous. Single frame only; motion not tested for this token."
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "84000001",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000001",
      "sourceIds": [
        "S03",
        "S08",
        "S11"
      ],
      "selectionNote": "Invocation 1, the first token minted after activation and the ordinary shaded counterpart to the wireframe cases.",
      "observationNote": "Coordinator original-renderer observation: Low-contrast muted purple-grey central sphere and ground, with orange circular forms emerging above and below right. Sparse peripheral dark rings/cylinders and small pale angular forms; solid sphere hides many objects. Single frame only; motion not tested for this token."
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "84000010",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000010",
      "sourceIds": [
        "S03",
        "S04",
        "S08",
        "S11"
      ],
      "selectionNote": "Invocation 10, a second wireframe token, selected to confirm that the wireframe ground colour follows the token's palette rather than being fixed.",
      "observationNote": "Coordinator original-renderer observation: Green ground with dark wireframe central sphere. Long narrow bars cross above it; a large faceted ring lower left offsets the central mass. Overlapping linework is especially dense along upper/right sphere. Single frame only; motion not tested for this token."
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "84000200",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000200",
      "sourceIds": [
        "S03",
        "S07",
        "S08",
        "S10"
      ],
      "selectionNote": "The AB5D holding, verified against the current linked wallet set. Selected for the sustained motion and interaction analysis.",
      "observationNote": "Large golden central sphere on muted purple-brown square; orange cylinders and spheres, yellow polygons and dark toruses/boxes overlap and surround it. Dark shapes nearly merge with background. Later views reveal shifting occlusion. Orbit pause and trails visibly tested; actual frame rate not measured; audio not auditioned."
    }
  ],
  "mediaIds": [],
  "provenance": {
    "operator": "Phil (AB5D coordinator), via the Claude desktop application",
    "agent": "Claude in Cowork mode, Claude Agent SDK session",
    "model": "Claude (submitted claude-opus-5), reviewed by OpenAI Codex",
    "modelVersion": "claude-opus-5 (session-reported exact model id; the routing label on this batch was 'claude', which is not a model identifier)",
    "tools": [
      "Art Blocks public GraphQL index over HTTP POST",
      "browser pane on the operator's computer for page rendering, text extraction, image inspection, live renderer execution, keyboard and mouse input, and sketch state sampling",
      "independent reimplementation of the artist's pseudo-random generator, run against every token hash in the edition",
      "SHA-256 over the retrieved script bytes computed in the browser using the Web Crypto API",
      "local shell and file tools for package assembly and validation"
    ],
    "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",
    "coordinatorReview": {
      "reviewer": "OpenAI Codex",
      "scope": "Full script reading, fresh project/edition/holding query, artist chapter, four original-renderer observations, #200 control checks, standard rights sources, corrected chronology and revised prose. Submitted reimplementation and broader licence census were not independently repeated.",
      "usage": null,
      "usageNote": "No per-essay metered usage available; submitted model identity retained as reported."
    },
    "generation": {
      "schema": "ab5d-essay-generation/1",
      "model": "Claude (submitted claude-opus-5), reviewed by OpenAI Codex",
      "displayName": "Claude (submitted model: claude-opus-5), reviewed and revised by OpenAI Codex",
      "scope": "One submitted Claude essay with independent source, script, visual, chronology and rights review",
      "essayCount": 1,
      "usage": null,
      "perEssayUsage": null,
      "usageDetail": "Claude supplied no token telemetry. Review usage is not separately measured. Submitted model identifier is retained without independent runtime verification.",
      "contributors": {
        "operator": "Phil (AB5D coordinator), via the Claude desktop application",
        "agent": "Claude in Cowork mode, Claude Agent SDK session",
        "model": "claude-opus-5",
        "modelVersion": "claude-opus-5 (session-reported exact model id; the routing label on this batch was 'claude', which is not a model identifier)",
        "tools": [
          "Art Blocks public GraphQL index over HTTP POST",
          "browser pane on the operator's computer for page rendering, text extraction, image inspection, live renderer execution, keyboard and mouse input, and sketch state sampling",
          "independent reimplementation of the artist's pseudo-random generator, run against every token hash in the edition",
          "SHA-256 over the retrieved script bytes computed in the browser using the Web Crypto API",
          "local shell and file tools for package assembly and validation"
        ],
        "humanEditorialInvolvement": "None. No human reviewed, edited or fact-checked the prose before submission. Status is draft-for-human-review.",
        "originalProseLicense": "CC0-1.0",
        "coordinatorReview": {
          "reviewer": "OpenAI Codex",
          "scope": "Full script reading, fresh project/edition/holding query, artist chapter, four original-renderer observations, #200 control checks, standard rights sources, corrected chronology and revised prose. Submitted reimplementation and broader licence census were not independently repeated.",
          "usage": null,
          "usageNote": "No per-essay metered usage available; submitted model identity retained as reported."
        }
      }
    }
  },
  "codeInspection": {
    "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
    "locator": "POST projects_metadata where slug _eq primidance-by-wuwa, selecting script and scripts{index script}; identity corroborated by contract_address 0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270 and project_id 84",
    "sha256": "5cfa4f55dfea88f747c6a89a6a74103f306832970f0f3fd4ab8bd4a223dfc277",
    "retrievedAt": "2026-09-17T23:28:00+00:00",
    "method": "Index retrieval over HTTPS, not a direct read of contract storage. SHA-256 computed over the UTF-8 bytes of the returned script field. The single indexed script fragment reproduces the script field exactly.",
    "executed": true,
    "chainBlock": null
  },
  "editorialExceptions": [
    {
      "id": "rights-terms-missing",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "Named CC BY-NC4.0standard deed located and cited; historical grant changes remain unreconstructed."
    },
    {
      "id": "code-rights-unknown",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "No licence statement was located for the artist script."
    },
    {
      "id": "interactive-still-attribution",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "Coordinator original-renderer observations include documented interactions for200and default live states for0,1,10. Distinguish these from submitted static previews."
    },
    {
      "id": "original-price-unverified",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The 0.1 ETH figure is the currently configured project price, not a verified original mint price."
    },
    {
      "id": "artist-account-not-independent",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The development narrative comes entirely from the artist's own site, is undated at the level of individual decisions, and was written after the edition sold. It checks out where it can be checked, but it is not independent corroboration."
    },
    {
      "id": "trait-extractor-absent",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "The platform's fourteen traits are not computed in the retrieved script. Four were reproduced from first principles; the other ten, including the Colors mono, duo and tritone axis, were not reduced to a rule and are not claimed."
    },
    {
      "id": "platform-trait-gap",
      "status": "pending",
      "reviewer": "publication coordinator",
      "reason": "Fresh response confirms198has empty features; filtering behaviour depends on the consuming tool and is not universally known."
    }
  ],
  "presentation": {
    "editionSize": 256,
    "maximumEdition": 256,
    "mintDate": "2021-06-05T06:41:58+00:00",
    "mintDateMeaning": "First indexed mint",
    "artwork": {
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "token_id": "84000200",
      "invocation": 200,
      "owner_address": "0xdd19308a9731cdecb67e0d80ca6823394208c045",
      "canonicalUrl": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000200",
      "preview_asset_url": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000200.png",
      "live_view_url": "/series/primidance-by-wuwa/artwork.html",
      "canonicalLiveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000200",
      "mode": "live",
      "copyrightStatus": "CC BY-NC 4.0",
      "copyrightUrl": "https://creativecommons.org/licenses/by-nc/4.0/",
      "displayBasis": "remote platform media, embedded from the Art Blocks live renderer; nothing redistributed in this package"
    }
  },
  "observationImages": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "84000000",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000000",
      "sourceIds": [
        "S03",
        "S04",
        "S05",
        "S08"
      ],
      "selectionNote": "First indexed token, minted before activation; wireframe example discussed in the artist account. Allocation is not established by mint order alone.",
      "observationNote": "Coordinator original-renderer observation: Dark wireframe meshes on saturated violet. Large central sphere overlaid with rectangular and triangular meshes, large detached angular ring upper right, faceted sphere lower right. Transparency makes front/back relationships ambiguous. Single frame only; motion not tested for this token.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000000.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000000"
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "84000001",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000001",
      "sourceIds": [
        "S03",
        "S08",
        "S11"
      ],
      "selectionNote": "Invocation 1, the first token minted after activation and the ordinary shaded counterpart to the wireframe cases.",
      "observationNote": "Coordinator original-renderer observation: Low-contrast muted purple-grey central sphere and ground, with orange circular forms emerging above and below right. Sparse peripheral dark rings/cylinders and small pale angular forms; solid sphere hides many objects. Single frame only; motion not tested for this token.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000001.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000001"
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "84000010",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000010",
      "sourceIds": [
        "S03",
        "S04",
        "S08",
        "S11"
      ],
      "selectionNote": "Invocation 10, a second wireframe token, selected to confirm that the wireframe ground colour follows the token's palette rather than being fixed.",
      "observationNote": "Coordinator original-renderer observation: Green ground with dark wireframe central sphere. Long narrow bars cross above it; a large faceted ring lower left offsets the central mass. Overlapping linework is especially dense along upper/right sphere. Single frame only; motion not tested for this token.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000010.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000010"
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "84000200",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000200",
      "sourceIds": [
        "S03",
        "S07",
        "S08",
        "S10"
      ],
      "selectionNote": "The AB5D holding, verified against the current linked wallet set. Selected for the sustained motion and interaction analysis.",
      "observationNote": "Large golden central sphere on muted purple-brown square; orange cylinders and spheres, yellow polygons and dark toruses/boxes overlap and surround it. Dark shapes nearly merge with background. Later views reveal shifting occlusion. Orbit pause and trails visibly tested; actual frame rate not measured; audio not auditioned.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000200.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/84000200"
    }
  ],
  "publication": {
    "date": "2026-09-18",
    "url": "https://ab5d.xyz/series/primidance-by-wuwa/",
    "authorization": "Phil requested website publication on 2026-09-17.",
    "reviewSnapshot": "/docs/series-essays/production/primidance-by-wuwa/record.json",
    "unresolvedResearchQuestionsRetained": true
  }
}
