{
  "schema": "ab5d-series-essay/1",
  "identity": {
    "chainId": 1,
    "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
    "projectId": 90,
    "slug": "hashtractors-by-darien-brito",
    "title": "Hashtractors",
    "artistCredit": "Darien Brito",
    "artistDossierUrls": [
      "https://ab5d.xyz/artists/darien-brito/"
    ]
  },
  "revision": 2,
  "researchCutoff": "2026-09-18",
  "status": "published-with-research-limitations",
  "facts": [
    {
      "id": "invocations",
      "topic": "mint",
      "value": 128,
      "observedAt": "2026-09-17T21:36:44.315744+00:00",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "note": "Current indexed field; not independently replayed contract history."
    },
    {
      "id": "max_invocations",
      "topic": "mint",
      "value": 128,
      "observedAt": "2026-09-17T21:36:44.315744+00:00",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "note": "Current indexed field; not independently replayed contract history."
    },
    {
      "id": "first_token_minted_at",
      "topic": "mint",
      "value": "2021-06-16T07:10:38+00:00",
      "observedAt": "2026-09-17T21:36:44.315744+00:00",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "note": "Current indexed field; not independently replayed contract history."
    },
    {
      "id": "second_token_minted_at",
      "topic": "mint",
      "value": "2021-06-27T18:04:27+00:00",
      "observedAt": "2026-09-17T21:36:44.315744+00:00",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "note": "Current indexed field; not independently replayed contract history."
    },
    {
      "id": "activated_at",
      "topic": "mint",
      "value": "2021-06-24T21:51:30+00:00",
      "observedAt": "2026-09-17T21:36:44.315744+00:00",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "note": "Current indexed field; not independently replayed contract history."
    },
    {
      "id": "completed_at",
      "topic": "mint",
      "value": "2021-06-27T18:06:02+00:00",
      "observedAt": "2026-09-17T21:36:44.315744+00:00",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "note": "Current indexed field; not independently replayed contract history."
    },
    {
      "id": "start_datetime",
      "topic": "mint",
      "value": "2021-06-27T18:04:27+00:00",
      "observedAt": "2026-09-17T21:36:44.315744+00:00",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "note": "Current indexed field; not independently replayed contract history."
    },
    {
      "id": "price_per_token_in_wei",
      "topic": "mint",
      "value": "110000000000000000",
      "observedAt": "2026-09-17T21:36:44.315744+00:00",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "note": "Current indexed field; not independently replayed contract history."
    },
    {
      "id": "opening-price",
      "topic": "mint",
      "value": null,
      "observedAt": "2026-09-18",
      "sourceIds": [],
      "status": "unknown",
      "note": "Current setting is not historical opening-price proof."
    },
    {
      "id": "original-maximum",
      "topic": "mint",
      "value": null,
      "observedAt": "2026-09-18",
      "sourceIds": [],
      "status": "unknown",
      "note": "Original announced maximum not recovered."
    },
    {
      "id": "mint-allocations",
      "topic": "mint",
      "value": null,
      "observedAt": "2026-09-18",
      "sourceIds": [],
      "status": "unknown",
      "note": "Public, reserved and administrative allocations not separated."
    }
  ],
  "rights": {
    "artwork": {
      "reportedLabel": "NFT License",
      "category": "unknown",
      "termsUrl": null,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S01"
      ],
      "note": "Exact reported label lacks terms URL/version; operative grant unresolved.",
      "unresolvedConflicts": []
    },
    "code": {
      "reportedLabel": null,
      "category": "unknown",
      "termsUrl": null,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "note": "No separate artist-code licence found; no script redistribution.",
      "unresolvedConflicts": []
    },
    "thirdParty": [
      {
        "reportedLabel": "LGPL-2.1",
        "category": "custom",
        "termsUrl": "https://raw.githubusercontent.com/processing/p5.js/1.0.0/license.txt",
        "observedAt": "2026-09-18",
        "sourceIds": [
          "S04"
        ],
        "note": "p5.js library licence, separate from artist program.",
        "unresolvedConflicts": []
      }
    ]
  },
  "sections": [
    {
      "id": "work-context",
      "heading": "The work and its context",
      "bodyMarkdown": "Hashtractors makes a trajectory look like an object that could be lifted from the screen. Silver-grey beads curl into chambers, tighten into cords and separate into open chains against an almost black field. The pictures occupy an uncertain position between a mathematical plot and a sculptural rendering. Their apparent solidity comes from many small surfaces, while their larger organisation remains the trace of a changing numerical state. In the four outputs examined here, the same treatment supports a rounded enclosure, an unsettled knot, a vertical loop and a sharply folded wing. [^S05] [^S06] [^S07] [^S08]\n\nDarien Brito released the 128-work series through Art Blocks Factory. The official collection page identifies 27 June 2021 as its release date; an earlier first token appears in the index. The project describes its material as strange attractors, with token-hash data providing parameters. Its historical position is early in Brito's Art Blocks sequence, before Pigments. The [Darien Brito dossier](https://ab5d.xyz/artists/darien-brito/) supplies the broader account of his practice. [^S01] [^S03]\n\nThe restrained palette directs attention toward shape, spacing and illumination. A bright bead can establish the near edge of a curve, while an adjacent dark passage makes another section seem to recede. This is an interpretation of the rendered objects, not a claim that the artist intended to depict jewellery, machinery or anatomy. The interest lies partly in how readily a numerical construction invites those material associations without settling into one of them. [^S05] [^S06]"
    },
    {
      "id": "conception",
      "heading": "Conception and development",
      "bodyMarkdown": "In his August 2021 Art Blocks interview, Brito describes an education in violin, composition and electronic music. Computer graphics initially helped him understand sound algorithms because their results could be seen immediately. He subsequently developed an audiovisual practice through coding. That account makes visualisation an active part of his artistic method, rather than a neutral service applied to a finished mathematical idea. It is relevant background, but the interview does not provide a complete development diary for Hashtractors. [^S03]\n\nThe project's own description explicitly connects the images with mathematical dynamical systems. It reports a selection of twenty-nine equations. The inspected script, however, selects among thirty numbered branches using a remainder operation. Those statements should remain distinct: the public description's count and the deployed program's branch count are different observations. A complete mathematical comparison would be needed before deciding how many independently distinct systems those branches represent. [^S01] [^S02]\n\nBrito's later interview also explains that much of his earlier visual work used a restricted palette and that Pigments challenged him to explore colour differently. Hashtractors' monochrome presentation can be situated within that account without treating the later project's aims as intentions for this one. The interview is evidence of continuity and change in his practice, not permission to invent preliminary sketches or undocumented influences. [^S03]"
    },
    {
      "id": "construction",
      "heading": "How the work was constructed",
      "bodyMarkdown": "The full indexed script was inspected. It uses p5.js 1.0.0 and creates a WebGL canvas. Thirty-two pairs of hexadecimal characters become byte values. Their sum, reduced modulo thirty, selects an attractor branch. The first few bytes then contribute initial coordinates, an integration step and a presentation-state selection. There is no need to invoke fresh random numbers to explain these choices: they are derived from the token input. [^S01] [^S02]\n\nEach attractor class supplies a function describing changes to three coordinates. The shared update method calculates that change at the current position, multiplies it by the chosen time step and adds it to the position. Repetition produces a sequence through three-dimensional space. This is a numerical stepping procedure, not an exact symbolic solution. Different classes contain different equations, including products, powers and trigonometric terms. The inspected implementation, rather than the familiarity of an attractor's name, is the evidence for what this renderer calculates. [^S02]\n\nThe program collects ten thousand successive points. While doing so, it records minimum and maximum values along each coordinate and the distance between successive samples. Each axis is subsequently mapped separately into a common display range. That independent remapping matters: the displayed proportions are mediated by the fitting procedure, rather than guaranteed to preserve the original coordinate scale equally in every direction. The image is an authored visualisation of the trajectory. [^S02]\n\nThe state tables reinforce that authorship. Each branch has twelve prepared combinations of rotation, offset and scale. A hash-derived index selects a combination. The tables vary between attractors, so they are not merely one universal camera setting. Certain branches also substitute fixed starting coordinates or fixed integration steps. The resulting view emerges from both a selected equation and decisions about how its path will occupy the frame. [^S02]\n\nAt each recorded position, the renderer draws a sphere. The distance to the previous sample contributes to its radius, using branch-specific size parameters. Areas where successive points are closer can read as almost continuous cords; larger or more separated spheres expose the individual sampling. This relationship offers a way to connect the bead-like appearance to the computation without assuming that every visible gap has one simple cause. Projection and overlap also affect what can be distinguished. [^S02] [^S05] [^S06]\n\nThe sizing calculation is not clamped in the artist's call to the mapping function. Its named minimum and maximum therefore should not be reported as audited absolute bounds on every sphere. The first stored distance is also assigned a large sentinel value rather than measured from an earlier point. Those implementation details caution against converting a parameter name into a visual guarantee. This review describes the inspected procedure and selected outputs; it does not establish numerical stability for every possible hash. [^S02]\n\nLighting and material make the samples resemble polished objects. An ambient light and two directional lights illuminate the geometry. A cosine-based progression along the point sequence determines the greyscale material value, while specular treatment supplies highlights. The brightness of a bead therefore cannot be read simply as a larger coordinate or a faster local movement. It combines material assignment with illumination and the sphere's visible surface. [^S02]\n\nThe work is static in its normal presentation. The artist script performs its calculation and drawing in setup and contains no time-changing draw routine or interaction handlers. The original renderers were opened for the selected outputs, and the collection-held example remained unchanged across separated observations. Preserving this work still requires more than a thumbnail: hash input, script, p5.js version and a compatible WebGL environment participate in its appearance. Static does not mean independent of a rendering environment. [^S02] [^S09] [^S04]"
    },
    {
      "id": "mint",
      "heading": "The mint",
      "bodyMarkdown": "The current official index records a first mint on 16 June 2021 at 07:10:38, activation on 24 June at 21:51:30, and a second mint and scheduled start on 27 June at 18:04:27. Completion is recorded at 18:06:02 on 27 June. Full timestamps with offsets are retained in the evidence record. The collection page's release date agrees with the June 27 activity, while the earlier first token describes a separate event. [^S01]\n\nThe observation reports 128 invocations against a maximum of 128 and a configured price of 0.11 ETH. These are current indexed fields, not independently reconstructed opening terms. In particular, the configured price does not establish what every recipient paid, and the current maximum does not prove that no earlier edition limit was announced. The separation of artist, reserved, administrative and public mints remains unresolved. [^S01]\n\nThere are ninety-five seconds between the indexed second-mint and completion timestamps. That arithmetic is not presented as a verified public sellout duration: it lacks a demonstrated classification of the relevant transactions and a confirmed public-sale start event. The useful historical finding is a tightly grouped set of recorded June 27 events following an earlier token, with the limits of that interpretation retained. Gas costs and secondary-market prices are not substituted for mint-price evidence. [^S01]"
    },
    {
      "id": "rights",
      "heading": "Copyright and licensing",
      "bodyMarkdown": "The artist-set label observed in the project index is NFT License, with no operative terms URL supplied. This record preserves the label while classifying the unresolved grant as unknown. A generic licence title does not identify its version, restrictions or relationship to the artist's source code. No unrestricted reuse permission is inferred from the fact that the work and its code can be viewed publicly. [^S01]\n\nNo separate artist-code licence was identified in the inspected script or project material. The p5.js 1.0.0 repository includes the GNU Lesser General Public License, version 2.1, for the library; that is a separate rights record and does not settle Brito's artwork or program rights. The original prose of this essay is offered under CC0. Quoted material, the artwork and third-party software remain outside that dedication. [^S02] [^S04]"
    },
    {
      "id": "examples",
      "heading": "Close reading of examples",
      "bodyMarkdown": "The comparison uses editions 0, 1, 10 and 20, selected as an early-edition group before visual inspection. Their token IDs are 90000000, 90000001, 90000010 and 90000020 on Ethereum contract 0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270. Each original generator was viewed. This small group supports close comparison; it is not a representative survey of the 128 outputs or an audited rarity distribution. [^S05] [^S06] [^S07] [^S08]\n\nIn #0, indexed as Aizawa, a rounded cage of bead chains surrounds two tighter regions. The left interior resembles a stack of curling collars, while broader arches pass across the front and over the top. Large dark gaps remain between those arches, allowing the near and far structures to be read together. The image gains volume through enclosure rather than through a solid outer skin. Its individual beads simultaneously clarify the paths and keep the apparent object porous. [^S05]\n\nFollowing one curve in #0 changes the experience. What first looked like a continuous metallic cord resolves into differently lit spheres. Near the upper edge they separate conspicuously; around the left curl they gather into fine ridges. The image therefore alternates between an overall vessel-like form and the evidence of its discrete construction. Neither reading completely replaces the other. The composition's density is most effective where it leaves enough black space for the eye to keep disentangling the layers. [^S05]\n\nIn #1, indexed as Wang-Sun, the arrangement is less enclosed. A high arch rises toward the right, a tight spiral occupies the interior, and another loop folds below the centre. A chain of larger dark beads sweeps toward the lower left. Their separation makes the outer passage feel expansive beside the densely packed central knot. The picture's balance depends on that unequal distribution: it has no single shell that can organise every component into a stable container. [^S06]\n\nThe distinction from #0 is more than a different silhouette. In #1, several paths appear to exchange positions near the middle, where highlights concentrate and the curves compress. The larger lower beads then slow the eye, making individual intervals conspicuous again. These are visual effects of spacing, projection and material. They are not evidence that the program simulates a physical string under tension. [^S06] [^S02]\n\nIn #10, indexed as Finance, a tall inclined loop dominates the upper field. Its dark central opening gives the viewer a clear point of entry, but below it the paths narrow into a twisting bundle and scatter into detached-looking beads. The largest bright spheres near the bottom exaggerate the difference between the gathered top and the descending extremity. It reads as a suspended form whose apparent weight is unevenly distributed, an interpretation made possible by the lighting rather than a calculation of gravity. [^S07]\n\nIn #20, indexed as Act, the trajectory flattens into a sharp diagonal configuration. One narrow wing reaches upper left from a central turn; another broader set of nested paths sweeps down left. The bend on the right gathers the loops into a smooth pointed fold. Compared with #0's enclosure, this picture gives the surrounding black field more authority. It feels like a turning sheet assembled from beads, while the other images more readily suggest volumes. [^S08]\n\nAB5D's header example is #96, indexed as Rucklidge. Its larger silver and black spheres crowd around a funnel-like recess, with a dense central passage dropping into a lower curl. The owner was rechecked against the known AB5D wallet in the official index. It supplies a collection-specific point of comparison: the bead vocabulary persists, but the substantial foreground spheres make the result feel heavier than the four early examples. [^S09]"
    },
    {
      "id": "significance",
      "heading": "Significance and limitations",
      "bodyMarkdown": "Hashtractors' particular achievement lies in making a sequence seem materially present without concealing its sampled construction. A mathematical path becomes a field of lit spheres, then an apparent object with openings, folds and uncertain weight. The restricted palette makes those transformations unusually legible. Across the inspected works, the authored presentation states are as consequential to the image as the selection of an equation. [^S02] [^S05] [^S06] [^S07] [^S08]\n\nThe work can be appreciated without reading its implementation, but inspecting the implementation changes what can responsibly be claimed. A prepared rotation is not an interactive camera; a static rendering is not a moving simulation; a public count of equations is not necessarily a count of code branches. Keeping those distinctions visible preserves both the visual pleasure and the specificity of the procedure. [^S01] [^S02]\n\nUnresolved research questions:\n\n- Recover original price and edition announcements and classify public versus reserved mints.\n- Reconcile the description's twenty-nine equations with the thirty numbered implementation branches.\n- Identify operative artwork terms and any separate artist-code licence.\n- Compare the indexed script against a pinned chain retrieval and broaden output inspection beyond this small sample."
    }
  ],
  "examples": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "90000000",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000000",
      "sourceIds": [
        "S05"
      ],
      "selectionNote": "Preselected editions0,1,10,20, early-edition comparison, not distribution survey.",
      "observationNote": "Rounded beaded enclosure with larger outer arches; tighter left collars and dark internal gaps.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000000.png",
      "indexedFeatures": {
        "Axis": "y",
        "Angle": 144,
        "Scale": 1.2,
        "Attractor": "Aizawa",
        "Time delta": 0.010569
      },
      "mintedAt": "2021-06-16T07:10:38+00:00"
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "90000001",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000001",
      "sourceIds": [
        "S06"
      ],
      "selectionNote": "Preselected editions0,1,10,20, early-edition comparison, not distribution survey.",
      "observationNote": "Open asymmetric knot, upper-right arch and inner spiral, lower-left separated large dark beads.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000001.png",
      "indexedFeatures": {
        "Axis": "xz",
        "Angle": 36,
        "Scale": 1.05,
        "Attractor": "Wang-Sun",
        "Time delta": 0.071176
      },
      "mintedAt": "2021-06-27T18:04:27+00:00"
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "90000010",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000010",
      "sourceIds": [
        "S07"
      ],
      "selectionNote": "Preselected editions0,1,10,20, early-edition comparison, not distribution survey.",
      "observationNote": "Tall inclined loop, dark opening, twisted lower bundle and large separated spheres descending.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000010.png",
      "indexedFeatures": {
        "Axis": "xz",
        "Angle": 90,
        "Scale": 1.3,
        "Attractor": "Finance",
        "Time delta": 0.045765
      },
      "mintedAt": "2021-06-27T18:04:27+00:00"
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "90000020",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000020",
      "sourceIds": [
        "S08"
      ],
      "selectionNote": "Preselected editions0,1,10,20, early-edition comparison, not distribution survey.",
      "observationNote": "Two diagonal wing-like paths meet at rightward pointed fold, nested lower-left loops, ample black ground.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000020.png",
      "indexedFeatures": {
        "Axis": "y",
        "Angle": 288,
        "Scale": 1.1,
        "Attractor": "Act",
        "Time delta": 0.012212
      },
      "mintedAt": "2021-06-27T18:04:27+00:00"
    }
  ],
  "mediaIds": [],
  "provenance": {
    "operator": "AB5D commissioned workflow",
    "agent": "OpenAI Codex research subagent",
    "model": "gpt-6-astra",
    "modelVersion": null,
    "tools": [
      "Official Art Blocks GraphQL",
      "Web source reading",
      "Full script inspection",
      "Original generator browser inspection"
    ],
    "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",
    "usage": {
      "inputTokens": 3636095,
      "cachedInputTokens": 3593216,
      "outputTokens": 9524,
      "reasoningOutputTokens": 289,
      "totalTokens": 3645619,
      "model": "gpt-6-astra",
      "status": "measured",
      "scope": "Hashtractors delegated research, drafting and handoff; editorial integration and publication excluded.",
      "generationRecord": "/data/series-generation-expansion-53.json"
    },
    "generation": {
      "schema": "ab5d-essay-generation/1",
      "model": "gpt-6-astra",
      "displayName": "GPT-6 Astra",
      "scope": "Hashtractors delegated research, drafting and handoff; editorial integration and publication excluded.",
      "essayCount": 1,
      "perEssayUsage": {
        "inputTokens": 3636095,
        "cachedInputTokens": 3593216,
        "outputTokens": 9524,
        "reasoningOutputTokens": 289,
        "totalTokens": 3645619
      },
      "usage": {
        "inputTokens": 3636095,
        "cachedInputTokens": 3593216,
        "outputTokens": 9524,
        "reasoningOutputTokens": 289,
        "totalTokens": 3645619
      },
      "usageSummary": "across the Hashtractors delegated research, drafting and handoff.",
      "usageDetail": "Measured delegated-agent usage between the preceding completed assignment and this completed handoff, including shared conversation context and cached input. Coordinator review and publication are excluded.",
      "accounting": "Cached input is included in input tokens; reasoning output is included in output tokens. Total is input plus output.",
      "source": "Difference between completed delegated Codex assignment telemetry boundaries",
      "measurementStart": "2026-09-17T21:35:11.244Z",
      "recordedAt": "2026-09-17T21:40:22.517Z"
    }
  },
  "codeInspection": {
    "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
    "locator": "projects_metadata.script filtered by slug hashtractors-by-darien-brito",
    "sha256": "3f678fe20e32b51b4b38857c5d5d58a1e7d70fa33b7e6c58606129d9a1695178",
    "retrievedAt": "2026-09-18",
    "method": "Full indexed script static read; official renderer opened for five outputs.",
    "executed": true,
    "chainBlock": null
  },
  "editorialExceptions": [
    {
      "id": "historical-rights",
      "status": "pending",
      "reviewer": "Phil",
      "reason": "Original sale terms/allocation and operative NFT License terms unresolved; index not pinned to chain block."
    },
    {
      "id": "equation-count",
      "status": "pending",
      "reviewer": "Phil",
      "reason": "Description says29 equations, script selects30 branches. Both accurately distinguished; mathematical equivalence not audited."
    }
  ],
  "presentation": {
    "editionSize": 128,
    "maximumEdition": 128,
    "mintDate": "2021-06-16T07:10:38+00:00",
    "mintDateMeaning": "First indexed mint",
    "artwork": {
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "token_id": "90000096",
      "invocation": 96,
      "owner_address": "0xdd19308a9731cdecb67e0d80ca6823394208c045",
      "canonicalUrl": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000096",
      "preview_asset_url": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000096.png",
      "live_view_url": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000096",
      "mode": "image",
      "copyrightStatus": "NFT License (terms unverified)",
      "copyrightUrl": null,
      "displayBasis": "Official remote preview recommended, not downloaded or relicensed; operative terms unresolved for coordinator review."
    }
  },
  "observationImages": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "90000000",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000000",
      "sourceIds": [
        "S05"
      ],
      "selectionNote": "Preselected editions0,1,10,20, early-edition comparison, not distribution survey.",
      "observationNote": "Rounded beaded enclosure with larger outer arches; tighter left collars and dark internal gaps.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000000.png",
      "indexedFeatures": {
        "Axis": "y",
        "Angle": 144,
        "Scale": 1.2,
        "Attractor": "Aizawa",
        "Time delta": 0.010569
      },
      "mintedAt": "2021-06-16T07:10:38+00:00",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000000"
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "90000001",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000001",
      "sourceIds": [
        "S06"
      ],
      "selectionNote": "Preselected editions0,1,10,20, early-edition comparison, not distribution survey.",
      "observationNote": "Open asymmetric knot, upper-right arch and inner spiral, lower-left separated large dark beads.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000001.png",
      "indexedFeatures": {
        "Axis": "xz",
        "Angle": 36,
        "Scale": 1.05,
        "Attractor": "Wang-Sun",
        "Time delta": 0.071176
      },
      "mintedAt": "2021-06-27T18:04:27+00:00",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000001"
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "90000010",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000010",
      "sourceIds": [
        "S07"
      ],
      "selectionNote": "Preselected editions0,1,10,20, early-edition comparison, not distribution survey.",
      "observationNote": "Tall inclined loop, dark opening, twisted lower bundle and large separated spheres descending.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000010.png",
      "indexedFeatures": {
        "Axis": "xz",
        "Angle": 90,
        "Scale": 1.3,
        "Attractor": "Finance",
        "Time delta": 0.045765
      },
      "mintedAt": "2021-06-27T18:04:27+00:00",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000010"
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "90000020",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000020",
      "sourceIds": [
        "S08"
      ],
      "selectionNote": "Preselected editions0,1,10,20, early-edition comparison, not distribution survey.",
      "observationNote": "Two diagonal wing-like paths meet at rightward pointed fold, nested lower-left loops, ample black ground.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000020.png",
      "indexedFeatures": {
        "Axis": "y",
        "Angle": 288,
        "Scale": 1.1,
        "Attractor": "Act",
        "Time delta": 0.012212
      },
      "mintedAt": "2021-06-27T18:04:27+00:00",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000020"
    },
    {
      "tokenId": "90000096",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000096.png",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000096",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/90000096"
    }
  ],
  "publication": {
    "date": "2026-09-18",
    "url": "https://ab5d.xyz/series/hashtractors-by-darien-brito/",
    "authorization": "Phil requested website publication on 2026-09-17.",
    "reviewSnapshot": "/docs/series-essays/production/hashtractors-by-darien-brito/record.json",
    "unresolvedResearchQuestionsRetained": true
  }
}
