# Mental pathways by fabianospeziari x donnoh

## The work and its context

Mental pathways is Art Blocks project 190 on the contract at `0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270`, on Ethereum mainnet. The public index records the artist as `fabianospeziari x donnoh` [^S02]. The row returns 128 invocations against a maximum of 128, a declared dependency of `p5@1.0.0`, an aspect ratio of 1, a licence string of `CC BY-NC 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 128 unique artworks, released on 27 October 2021, and carries a View live control [^S01].

The credit needs settling before anything else, because the platform's own surfaces disagree. The slug is `mental-pathways-by-fabianospeziari-x-donnoh` and the browser title renders "Mental pathways by fabianospeziari x donnoh", but the headline byline on the collection page reads simply "by donnoh" [^S01]. Further down, the same page carries two separate MEET THE ARTIST panels, one for donnoh and one for Fabiano Speziari [^S01]. The website of record resolves to a link hub created in September 2021 that names both collaborators in full, Fabiano Speziari and Luca Donnoh, and links to each one's profiles on other platforms [^S07]. This is a two-person work whose most prominent byline names one person. This package credits the artists as the index does.

The image is a set of horizontal stripes with a line drawn through them. The canvas is divided into a number of equal horizontal bands, each stroked in a colour taken cyclically from the token's palette, and over that field a single continuous trail descends from the top edge to the bottom, made of straight segments and quarter-circle turns. The trail passes in front of some stripes and behind others, so it reads as a cord threaded through a loom. On some tokens there are two such trails rather than one.

That trail is not decorative routing. It is the solution to a maze. The program builds a random maze over a square grid, then runs Dijkstra's shortest-path algorithm from a random cell on the top row to a random cell on the bottom row, and draws the resulting path. When a token has two trails, the second is the shortest path through the same maze after the first path's edges have been deleted from it. The mint description states the metaphor plainly: each trail "needs to follow a path from one point to another in order to complete itself and arrive at its final solution", and a work can be "made up of different thoughts and afterthoughts" [^S02][^S01]. The published traits are called `Thoughts`, `Thought length` and `Afterthought length` [^S03]. The metaphor is implemented literally, which is rarer than it sounds.

Two structural facts should be fixed here. The work is not animated: the program calls p5's `noLoop` at the end of its single draw pass, and at the live renderer the frame counter read 1 and stayed at 1 while the canvas was identical across a four-second interval [^S02][^S06]. The index's `display_static` value of false is therefore wrong, as it is for two other projects in this batch. And the work has no controls: there is no key, mouse or touch handler anywhere in the program, and `keyPressed`, `keyTyped` and `mousePressed` are all undefined in the running instance [^S02][^S06]. There is no audio [^S06].

## Conception and development

The mint description is the only statement about the work by anyone connected to it, and it is four sentences plus an auction schedule. It is worth quoting for what it claims: Mental pathways is "a graphical representation of our thoughts", each trail must "follow a path from one point to another in order to complete itself and arrive at its final solution or understanding", roads can be "short and simple, other long and complex, or even made up of different thoughts and afterthoughts", and "colors are the sensations we experience while we think" [^S02].

Most artist statements of this kind are loose. This one is unusually load-bearing, and the construction section below shows that every clause maps onto something specific in the program. A path from one point to another is a literal path-finding problem. Short and simple against long and complex is the `Thought length` trait, which ranges across the edition from 7 to 144 cells [^S03]. Thoughts and afterthoughts are successive solutions of a maze that has had the previous solution removed from it. Only the claim about colour is decorative, and even there the palettes are hand-named for sensations and scenes rather than numbered: Calm, Wonder, Rave party, Rainy day outfit, Onion and blue cheese salad [^S03].

Those names are the clearest trace of authorship in the project. The program contains sixty-one hand-assembled palettes, written out as raw colour triples with no names attached, plus a family that simply picks two colours at random from a long list [^S02]. The names live only in the platform's published trait values. Recovering the mapping between the two, which this package did, turns an anonymous table of numbers into a list of things two people looked at and labelled. One of them is called `donnoh`, after one of the two collaborators, and it is the only palette in the work that sets its own background and line colour rather than taking the default black or white [^S03][^S06]. Another is called `Rainbow`, and its six colours are the standard six-stripe rainbow flag values, read directly from the running sketch [^S06].

The indexed `artist_interview` field is null [^S02]. The website of record is not a project page but a Linktree hub, created in September 2021, a month before the release, whose entire content is seven outbound links to the two artists' accounts on Twitter, SuperRare, KnownOrigin, Art Blocks and Hic et Nunc [^S07]. It confirms who made the work and where else they publish, and says nothing about how this work was made. There is no development account, no process writing and no interview.

What can be inferred from the program itself is that it went through real iteration and was shipped without tidying. Five palette arrays are declared and never filled or used. A helper function that generates a random token hash from `Math.random`, which is the standard way of testing an Art Blocks sketch locally before deployment, is defined in the shipped program and never called; it is still present as a function in the running instance [^S02][^S06]. Two `console.log` statements survive, one printing the token hash at setup and one printing the length of each path as it is computed [^S02][^S06]. None of this affects the image. All of it is permanently part of the record, and the second log turns out to be useful evidence, as the examples section shows.

## How the work was constructed

The script was retrieved as the `script` field of the `projects_metadata` row for `0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-190`, from the Art Blocks public GraphQL index, on 2026-09-18 at 07:47:46Z [^S02]. It is 10,910 bytes and its SHA-256 digest, computed in the browser over the exact returned bytes using the Web Crypto API, is `696f551de2fdf53cc46acead712506953dbcac81a2f53a26e68c4a11f10c2809` [^S06]. The row reports `script_count` of 1 and the declared runtime is `p5@1.0.0` [^S02]. The program is minified in its identifiers but keeps its structure, and it can be read directly without execution. No artist code is reproduced here.

The random generator is the same construction that appears on the Amoeba and Blockbob Rorschach projects elsewhere in this batch, down to both of its quirks. The seed is `parseInt(tokenData.hash.slice(0, 16), 16)`, a slice that includes the `0x` prefix and so parses fourteen hexadecimal digits, which is fifty-six bits and therefore already rounded before use; the first shift then coerces it to a signed 32-bit integer. The output step returns the absolute value of the state modulo 1,000 divided by 1,000, so every draw in the work is one of exactly 1,000 values [^S02]. Three projects by three different artists, released within days of each other, sharing an identical generator with identical defects, is strong evidence of a template circulating among Art Blocks contributors in 2021. This package records the match; it does not claim to have found the source.

Six draws are made before any geometry. The first selects the grid size from a weighted choice: 60 per cent give 14, 30 per cent give 8 and 10 per cent give 30, and those three values are the published `Dimension` trait values Medium, Small and Big [^S02][^S03]. The second selects a palette family from a number drawn in the range 0 to 512, partitioned into seven bands. The third decides polarity: a draw in the range 0 to 3 yields a black line on a white ground three times in four, and a white line on a black ground otherwise, which is the published `Inverted` trait [^S02]. The remaining draws pick an index inside the chosen palette family.

The palette families are worth itemising because they are the whole of the colour rarity structure. Thirty-two three-colour palettes carry the largest band, seventeen four-colour palettes the next, then seven five-colour palettes, three greyscale palettes that override the line colour, one six-colour palette, and one palette that overrides both background and line. The eighth outcome, covering the top third of the range, ignores all of those and picks two distinct colours at random from a list of sixty-nine; that is the published value `Bicolor`, which is by a wide margin the most common palette in the edition at 36 of 128 tokens [^S02][^S03].

An independent reimplementation of this draw order was run against all 128 token hashes. `Dimension` reproduces on 128 of 128 and `Inverted` on 128 of 128 [^S03]. `Palette` reproduces on 128 of 128 in the sense that matters: every distinct family-and-index pair maps to exactly one published palette name across the whole edition, with no pair ever carrying two names and no name ever appearing under two pairs [^S03]. That bijection recovers the artists' own name for each palette index that minted, and it also shows what did not mint. Fifty of the sixty-one named palettes appear in the edition. The other eleven exist only as unnamed colour triples in the program and as names in an unpublished feature script, and no token carries them.

Getting that result required one correction. An initial reading counted the two-colour list by eye as sixty-seven entries, and the reproduction then matched 126 of 128 tokens, failing on two. Both failures were `Bicolor` tokens, which is the only branch whose number of draws is variable, because it redraws until the two indices differ. Parsing the array programmatically rather than counting it gave sixty-nine entries, and with the corrected length all 128 tokens matched [^S03]. The two failures were diagnostic rather than incidental: only a branch with a data-dependent draw count could have shifted the downstream sequence for some tokens and not others.

The geometry is the interesting part. For a token whose `Dimension` value is D, the maze is built on a grid of D minus one cells square. Maze generation is a randomised depth-first walk: from a random cell on the top row, the program repeatedly asks for an unvisited neighbour in a random rotation of the four directions, carves a connection to it and moves there; when a cell has no unvisited neighbour it takes the oldest cell off a queue and continues from there, until the queue empties [^S02]. The result is a spanning tree over the grid, which means exactly one path exists between any two cells.

The path itself is then found by Dijkstra's algorithm, written out in full in the program rather than taken from a library, from a random cell on the top row to a random cell on the bottom row [^S02]. Because the maze is a tree, the shortest path is the only path, so the algorithm is doing less work than it appears to; it is nonetheless the real thing, complete with a distance table, a predecessor table and a repeated search for the nearest unvisited node.

This entire pipeline was reimplemented and run against all 128 token hashes. The `Thought length` trait, which is the number of cells in that path, reproduces on 128 of 128 tokens [^S03]. That is the strongest reproduction in this batch: it requires the generator, the draw order, the maze walk including its queue discipline and its direction rotation, and the path search including its tie-breaking, all to agree exactly, across editions whose paths range from 7 to 144 cells.

After a path is drawn, the program deletes every edge the path used from the maze and tries again. The second solve starts and ends in a region constrained by where the first one went, and its path is the published `Afterthought length`. The loop runs at most three times and stops early when a solve returns a path shorter than the grid is tall, which is what happens when wall deletion has disconnected the two rows. Across the edition it produces one trail on 93 tokens and two on 35; three never occurs [^S03]. Extending the reimplementation to cover this, including the stochastic pass that decides where the trail dips behind a stripe, reproduced `Thoughts` on 128 of 128 and `Afterthought length` on 128 of 128 [^S03]. All six published traits are therefore accounted for exactly.

Drawing is simple by comparison. The canvas is square at the smaller window dimension. A horizontal line is stroked across it for each of the D grid rows, coloured by cycling through the palette, at a weight of one over twice D, so a Big token has thirty fine stripes and a Small token has eight thick ones. The path is then stroked over that field at six tenths of the stripe weight, in the line colour. Finally the program revisits a subset of the path's cells and repaints a short piece of the stripe over the trail, which is what makes the trail appear to pass behind. Whether a given cell dips behind is decided by a running flag that flips on roughly a third of a set of draws, so the over-and-under pattern is neither regular nor purely random [^S02].

External dependencies are p5.js version 1.0.0 and nothing else. There are no network fetches, no external assets and no audio library [^S02][^S06].

## The mint

The index records activation at 2021-10-23T18:04:15Z, a public opening at 2021-10-26T19:00:00Z, and completion at 2022-07-16T11:29:37Z [^S02]. The collection page states 27 October 2021 [^S01], which is the opening instant rendered in a timezone ahead of UTC.

As on three other projects in this batch, the first mint precedes the recorded activation. Tokens 190000000 and 190000001 were minted at 2021-10-18T06:01:28Z and shortly after [^S03], five days before activation and eight days before the public opening. They are the only two tokens minted before the opening, and the artist address still holds invocation 0 [^S02][^S03]. Four projects in one batch now show the same pattern, which settles that `activated_at` is not a first-mint date in this contract.

The published sale mechanism is a short Dutch auction: 0.6 ETH reducing every five minutes through 0.45, 0.35 and 0.25 [^S02][^S01]. Four rungs at five minutes each put the resting price fifteen minutes after the opening, and the index's `price_per_token_in_wei` of 250000000000000000 [^S02] is that resting price rather than the starting price, the same trap this batch has now produced twice.

Taking the opening as the start endpoint and the final mint as the end endpoint, the public phase ran from 2021-10-26T19:00:00Z to 2022-07-16T11:29:37Z, a span of 262.69 days, and covered 126 mints [^S03]. As elsewhere in this batch the single figure conceals the shape. The first public mint came at 2021-10-26T19:01:58Z, 1.97 minutes after the opening, which on the published schedule is the opening rung at 0.6 ETH. Anchored on the opening, 28 tokens were minted within the first hour, 37 within six hours, 45 within a day, 58 within a week and 69 within thirty days, leaving 57 to arrive across the following eight months [^S03]. This is the slowest-selling small edition in the batch: it took more than eight months to place 128 works, and more than half of them went after the first month.

Assigning each mint to a rung by its timestamp on the published schedule gives 3 tokens in the 0.6 ETH window, 3 in the 0.35 window and 120 at the 0.25 resting price [^S03]. Six tokens, under five per cent of the edition, were minted while the price was above the floor. That reconstruction carries the same caveat it does elsewhere in this batch: it is computed from the published schedule and the indexed mint timestamps, not from the value of the mint transactions, which this session did not read. It is a reproducible inference from two stated sources rather than a measurement of what buyers paid.

Across the 128 tokens the index reports 101 distinct owner addresses [^S03], so the edition is held almost one to one.

The 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 128 token rows [^S05][^S03]. Exactly one token in this edition sits in that set: token 190000047, invocation 47, held by `0xdd19308a9731cdecb67e0d80ca6823394208c045` and minted at 2021-10-28T03:06:22Z [^S04][^S05], a little over a day after the opening and well after the price reached its floor.

## Copyright and licensing

The index records a licence string of `CC BY-NC 4.0` for this project and a `link_to_license` of null [^S02]. Like the identifier on the Blockbob Rorschach project and unlike the bare family name on Amoeba, this one is fully specified: it names a licence, a version and an international scope, and resolves unambiguously to one deed even though the record does not link to it.

Read against that deed, Attribution-NonCommercial 4.0 International permits sharing and adaptation in any medium, subject to attribution, and prohibits use of the material for commercial purposes, with a further prohibition on applying additional legal or technological restrictions [^S08]. Adaptation is permitted, so a crop or a composite plate is not forbidden in the way a NoDerivatives term would forbid it; what is forbidden is commercial use of the material, by anyone, including a token holder.

That last point deserves emphasis for a project sold at auction and traded since. A NonCommercial licence recorded on the project is not a term of sale and confers nothing on a purchaser; the record states no terms of sale and no terms for holders at all. Nothing in the project record addresses the relationship between owning one of these tokens and the commercial-use restriction on the images.

The attribution term also interacts with the credit problem described above. Attribution requires appropriate credit to the creators, and the most prominent byline the platform itself publishes names one of the two people who made the work [^S01]. A catalogue that copies that byline is propagating an under-credit. The index's artist field, the slug and the artists' own link hub all name both [^S02][^S07], and this package uses the index's form.

Three rights domains should be kept apart, as elsewhere in this batch.

The first is the artwork, covered above.

The second is the artist's code. The program is retrievable from the index by anyone, which establishes visibility and nothing else. No licence statement or copyright notice appears anywhere in the program text, and the project licence is recorded on the project rather than on the code. 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 without holding a copy of the script.

The third is the dependency. The work declares `p5@1.0.0` and does not render without it. The library is supplied by the renderer at view time and carries its own licence, which is not the project's licence and is not stated in the project record. This session did not establish the library's licence terms.

One further item belongs here because it is a rights question in practice. The palette names are not in the artists' program. They exist only in the platform's published token metadata, generated by a feature-extraction script that is not part of the project record and was not retrieved. Names like `donnoh`, `Onion and blue cheese salad` and `Rainbow` are authored material, and where they sit in the rights structure of this project is not addressed anywhere in the record.

## Close reading of examples

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 on two of them the renderer console was read, because the program prints the length of each path it computes.

Token 190000047 is the Art Blocks 500 holding and was the first sustained observation. Its hash begins `0x0c978547` and it was minted at 2021-10-28T03:06:22Z to `0xdd19308a9731cdecb67e0d80ca6823394208c045` [^S04]. Its published traits are Medium dimension, Inverted true, the Colored chalks palette, Thought length 19 and one Thought [^S04]. On screen it is a black field carrying fourteen stripes that cycle through sky blue, pink, salmon and cream, with a thin white trail descending the left half, ducking behind four of the stripes and crossing in front of the rest.

Every published value was confirmed against the running sketch. The grid size read 14, which is Medium; the background read pure black and the line colour pure white, which is the inverted polarity; the palette read as the four Colored chalks values; and ten cells were registered as passing behind a stripe [^S06]. The frame counter read 1 and stayed at 1 while the sampled grid was identical across four seconds, and the canvas measured 1324 by 1324 device pixels, square as the index says [^S06]. The handler globals `keyPressed`, `keyTyped` and `mousePressed` were all undefined, so there are no controls to test. The development helper that generates a random hash was present in the running instance as a defined but unused function [^S06].

The renderer console then supplied the best single piece of evidence in this package. It carried one line, `Length 0: 19`, printed by the program's own surviving debug statement [^S06]. The published `Thought length` is 19, and there was exactly one such line, which is why the published `Thoughts` value is 1. The reimplementation described above predicted 19 for this hash. Three independent routes, the platform's metadata, the program's own output and a reconstruction from the hash, agree on the same number.

Token 190000010 is one of four tokens carrying the `donnoh` palette and was the second sustained observation, chosen because it has two trails. Its hash begins `0x1aaa188a` and it was minted at 2021-10-26T19:19:37Z to `0x2982cec331b781defd2f3bf1aae78c53b4ed5876` [^S04]. Its published traits are Medium dimension, Inverted false, the donnoh palette, Thought length 27, Afterthought length 24 and two Thoughts [^S04].

On screen it is the most distinctive of the four: a charcoal ground rather than black or white, stripes in cream, taupe and pale yellow, and two thick dark red trails rather than one, each wandering down the canvas and weaving over and under. The live globals show why it looks unlike anything else in the edition. Its background read as a dark grey and its line colour as a dark red, and this is the only palette family in the program that overrides both; every other token draws black on white or white on black [^S06]. Thirty-three cells were registered as passing behind a stripe.

Its console carried two lines, `Length 0: 27` and `Length 1: 24` [^S06]. Those are the published Thought length and Afterthought length exactly, and their count is the published number of Thoughts. The two-solve structure, a path found through a maze and then a second path found through the same maze with the first path's edges removed, is visible in the picture as two trails that never share a segment.

Token 190000046 carries the only `Rainbow` palette in the edition. Its hash begins `0x659e791b` and it was minted at 2021-10-27T12:26:28Z to `0x4dd5a4d1fcb6f8938aa8ad070aefe1b19e8f9c0c` [^S04]. Its published traits are Medium dimension, Inverted true, Rainbow palette, Thought length 40 and one Thought [^S04]. The live palette read as six colours [^S06], and those six are the standard six-stripe rainbow flag values. On screen, fourteen stripes cycle through that sequence a little over twice, separated by black gaps, with a white trail looping across the upper half and dropping straight down the middle. It is the only token in 128 that carries this palette, and the six-colour family it comes from contains exactly one entry, so its rarity is structural rather than incidental.

Token 190000044 carries the longest path in the edition. Its hash begins `0x1140fe99` and it was minted at 2021-10-27T12:26:28Z to the same address as the previous token, in what appears from the identical timestamp to be a single multi-token purchase [^S04]. Its published traits are Big dimension, Inverted false, the Mediterranean Sea palette, Thought length 144 and one Thought [^S04]. The live globals read a grid size of 30, a white background with a black line, a five-colour palette of aquas and blues, and thirty-three cells passing behind a stripe [^S06].

The Big dimension changes the character of the work completely. Thirty stripes at a weight of one sixtieth of the canvas are fine lines rather than bands, and a 144-cell path has room to wander laterally instead of descending directly, so the trail reads as a route on a map rather than as a cord through a loom. It is the clearest token in this group for seeing that the trail is a maze solution: the long horizontal runs and the abrupt reversals are exactly what a shortest path through a spanning tree looks like when the tree happens to be inconvenient.

## Significance and limitations

The most useful thing this project offers is a complete reproduction. All six published traits reproduce from the token hash on all 128 tokens, and doing so required rebuilding the entire generative pipeline: the random generator with its quantisation to a thousand values, the exact draw order, a randomised depth-first maze walk with its queue discipline, Dijkstra's algorithm with its tie-breaking, the wall-deletion re-solve, and the stochastic pass that decides where the trail dips behind a stripe. Nothing was left over and nothing was approximated. That matters beyond this project, because a complete reproduction is what makes a claim about a missing or wrong trait credible elsewhere: the same method applied to four other projects in this batch found real gaps, and the difference between a gap in the metadata and a gap in the research is exactly whether the rest of the system reproduces.

The second contribution is the palette mapping. Sixty-one palettes are hand-assembled in the program as unnamed colour triples; the names exist only in the platform's published metadata. Because the family-and-index pair maps injectively onto the published names across the whole edition, the mapping can be recovered, and doing so shows that eleven of the sixty-one never minted. Those eleven are authored work, named and coloured by two people, that no token in the edition carries and no viewer has seen. It also identifies which palette is named after one of the collaborators, and that the only six-colour palette in the program is the rainbow flag, present on exactly one token.

The third is a piece of comparative evidence. This is the third project in this batch whose random generator is character for character the same construction, with the same sixteen-character seed slice that includes the `0x` prefix and the same modulo-1000 output step. The other two are Amoeba and Blockbob Rorschach, by different artists, released within four days of this one. Three independent arrivals at the same generator with the same two defects is not plausible; a shared snippet is. This package records the match as a fact a wider survey could test.

The limitations should be stated as plainly as the findings. The four visual observations cover four tokens out of 128, chosen for their extremes rather than sampled at random, so nothing here supports a claim about the typical appearance of the edition. The claim that eleven palettes never minted rests on the absence of their names across 128 tokens plus the reading of the program; those palettes were not observed, because there is nothing to observe. The reproduction was validated against the published metadata for all 128 tokens and against the program's own console output on two tokens, which is strong, but the feature-extraction script itself was not obtained, so the agreement is empirical rather than a reading of the code that produces the traits. The rung-by-rung reconstruction of the Dutch auction is an inference from the published schedule and indexed timestamps, not a reading of transaction values. The collection page's detail accordions were not expanded. No contact was made with either artist and no inference about intent is drawn beyond what the mint description says.

Several questions remain open, and this package records them as open rather than filling them.

Why does the platform's most prominent byline name one of two collaborators? The index field, the slug, the page title and the artists' own link hub all name both, and the same page carries two artist panels, so the single-name headline is not a considered editorial choice so much as an artefact of something. Whether it can be corrected, and by whom, is a question for the platform.

Where do the palette names live, and who owns them? They are not in the artists' program. They are authored strings in an unpublished feature script, and they are the most human part of this project's output. Obtaining that script would also confirm the family-and-index mapping recovered here by inference.

Why does the work allow three thoughts and produce at most two? The loop is written to run three times and stops early when wall deletion disconnects the grid. Across 128 tokens it produced one trail 93 times and two 35 times and three never. Whether a third was ever reachable for some grid size, or whether the early-exit condition makes it impossible, is a question the reimplementation could answer by exhaustive search over seeds and was not run here.

What does `activated_at` denote in this index? The first mint precedes it by five days here, by two days on the LIA project, by eight on Amoeba and by five on Blockbob Rorschach. Four projects is enough to say the field does not mean what a catalogue would assume and not enough to say what it does mean.

Does the shared generator idiom have a common source? The same construction and the same two defects appear on three projects in this batch. A survey of Art Blocks scripts from 2021 for the same seed slice and the same modulo-1000 output step would establish how widely it spread and how many editions inherit its quantisation.

Finally, what terms actually govern a holder of one of these tokens? The licence is NonCommercial and is recorded on the project with no link, no terms of sale and no statement about holders. A purchaser at auction acquired a token; what they may do with the image is not addressed anywhere in the record.

[^S01]: Art Blocks. [Mental pathways by fabianospeziari x donnoh, collection page](https://www.artblocks.io/collection/mental-pathways-by-fabianospeziari-x-donnoh). Accessed 2026-09-18.
[^S02]: Art Blocks. [Art Blocks public GraphQL index, projects_metadata for project 190](https://artblocks-mainnet.hasura.app/v1/graphql). Accessed 2026-09-18.
[^S03]: Art Blocks. [Art Blocks public GraphQL index, tokens_metadata for all 128 tokens of project 190](https://artblocks-mainnet.hasura.app/v1/graphql). Accessed 2026-09-18.
[^S04]: Art Blocks. [Art Blocks public GraphQL index, tokens_metadata for the four example tokens of project 190](https://artblocks-mainnet.hasura.app/v1/graphql). Accessed 2026-09-18.
[^S05]: Art Blocks. [Art Blocks public GraphQL index, user_profiles for the AB5D collection](https://artblocks-mainnet.hasura.app/v1/graphql). Accessed 2026-09-18.
[^S06]: Art Blocks. [Art Blocks live renderer for project 190 tokens](https://generator.artblocks.io/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/190000047). Accessed 2026-09-18.
[^S07]: fabianospeziari x donnoh. [mentalpathways link hub, the website of record](https://linktr.ee/mentalpathways). Accessed 2026-09-18.
[^S08]: Creative Commons. [Deed: Attribution-NonCommercial 4.0 International](https://creativecommons.org/licenses/by-nc/4.0/). Accessed 2026-09-18.
