{
  "sources": [
    {
      "id": "S01",
      "author": "Art Blocks",
      "title": "Return by Aaron Penne, collection page",
      "url": "https://www.artblocks.io/collection/return-by-aaron-penne",
      "publisher": "Art Blocks",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "browser pane, visible text extracted; PROJECT DETAILS accordion expanded and re-read",
      "archiveUrl": null,
      "inspectionScope": "Page rendered in the browser pane on 2026-09-20. Header block, WHAT TO EXPECT and PROJECT DETAILS read in full. The COLLECTIONS and FROM THE JOURNAL accordions were not expanded.",
      "evidenceLocators": [
        "Header block: 'Return', 'by Aaron Penne', 'An Art Blocks 500 release, in the Playground category', 'Fixed edition of 300 unique artworks', 'Released on 2 June 2021'",
        "The displayed release date of 2 June 2021 is the 2021-06-01T14:03:27Z first public mint rendered in the browser's timezone of UTC+10",
        "WHAT TO EXPECT: reproduces the mint description beginning 'Return is a meditation on returning inward, cyclical change, and the beauty of iteration'",
        "PROJECT DETAILS expanded: EDITION SIZE 300 unique artworks; WEBSITE https://twitter.com/aaronpenne; LIBRARY p5@1.0.0; ASPECT RATIO 1; CONTRACT TYPE Fully on-chain; ATTRIBUTES Palette, Form, Skeleton, Rotation, Direction, Speed, Background; no licence field present",
        "BROWSE ARTWORKS: '8 listings available, starting from 0.1499 ETH', a current secondary-market observation, not mint history"
      ]
    },
    {
      "id": "S02",
      "author": "Art Blocks",
      "title": "Art Blocks public GraphQL index, projects_metadata for project 77, including the complete program",
      "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
      "publisher": "Art Blocks",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "HTTP POST from the artblocks.io origin in the browser pane",
      "archiveUrl": null,
      "inspectionScope": "Named operation ProjectBySlug with variables {\"slug\":\"return-by-aaron-penne\"}; full query, variables and timings in evidence.json (G02). The complete 6,686-byte program was read end to end.",
      "evidenceLocators": [
        "Response id = 0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-77; name 'Return'; artist_name 'Aaron Penne'; artist_address 0x92fb249865ae0d26120031868ba07434674a1600",
        "Response invocations 300, max_invocations 300, complete true, paused false, script_count 1, aspect_ratio 1, display_static false, vertical_name 'playground'",
        "Response activated_at 2021-06-01T04:07:09+00:00, start_datetime 2021-06-01T14:03:27+00:00, completed_at 2021-06-01T16:09:12+00:00",
        "Response license 'CC BY-NC 4.0', link_to_license null, price_per_token_in_wei 150000000000000000, currency_symbol ETH, website https://twitter.com/aaronpenne, artist_interview null",
        "Response description: 'a meditation on returning inward, cyclical change, and the beauty of iteration' and 'The composition of each piece slowly loops'",
        "Program line 1: a comment giving 'CC BY-NC 4.0' and the artist's GitHub URL",
        "Program, gs() and rnd(): seed parseInt of hash.slice(0,16) including the 0x prefix; three-shift xorshift (13, 17, 5) returning abs(state) mod 1000 / 1000",
        "Program, hti() and mvs(): the 32 hash bytes scaled to 0..1 as six-decimal strings; the last nstp bytes, sorted, plus 0 and 1 become the band boundaries",
        "Program, rndC(): index = floor(r * 0.99 * length), so with r at most 0.999 the last ~1.1 per cent of any weighted list is unreachable",
        "Program, palette table: 17 weighted palettes plus Oracle (black, off-white, one colour from the 24-entry Zephyr list), total weight 295",
        "Program, draw order: Oracle colour, ground, speed, palette, band count (Light and Darkness override to 15/20/25), black count, white count, form, mask, rotation, direction, band colours, shuffle",
        "Program: rotation overridden to Balanced when form is Circle and mask is Hidden; Light and Darkness force the Hidden mask and zero black/white swaps",
        "Program, fragment shader: signed distance to a circle, sharp square (radius -1) or rounded square (radius 0.03); d = mod(distance*scale -/+ time - 0.25, 1); alternating smoothstep and step mixes per band",
        "Program, fragment shader: the final mix is always smoothstep(1., 1., d) because the boundary list always ends with '1.'",
        "Program, draw(): time increases by 0.0002 when frameCount mod speed is 0 and frameCount exceeds 60 x pause; Meditative speed 1 with no pause, Conceptual speed 20 with a 300-frame pause",
        "Program, keyTyped(): keys 1-7 set speed to 1, 2, 7.25, 43, 260, 520, 1040; 0 sets 0; 's' calls save with get_timestamp(), which is not defined anywhere in the program",
        "Program: shader comment 'ty @piterpasma for the anti-aliasing routine'; eight-sample anti-aliasing loop; console.log of the token hash in setup; no mouse, touch, audio or network code"
      ]
    },
    {
      "id": "S03",
      "author": "Art Blocks",
      "title": "Art Blocks public GraphQL index, tokens_metadata for all 300 tokens of project 77",
      "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
      "publisher": "Art Blocks",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "HTTP POST from the artblocks.io origin in the browser pane",
      "archiveUrl": null,
      "inspectionScope": "Named operation TokensByProject with variables {\"pid\":\"0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-77\"} (G03), returning the complete edition. An independent reimplementation of the trait derivation was run in the browser against all 300 hashes.",
      "evidenceLocators": [
        "Form, Speed, Palette, Skeleton, Direction and Background each reproduced 300 of 300; Rotation reproduced 300 of 300 after the program's Circle-plus-Hidden override, and 214 of 300 without it (86 tokens overridden)",
        "Published Background 'Dark' corresponds to the program's 'Darkness' ground name",
        "Unpublished band count across the edition: 4 bands 43, 5 bands 54, 6 bands 59, 10 bands 29, 15 bands 50, 20 bands 46, 25 bands 19",
        "Trait counts: Speed Conceptual 273, Meditative 27; Direction Out 293, In 7; Palette Zephyr 45 (most common), Oracle 20, Light 4, Darkness 6",
        "Exactly one token, 77000228, is both Meditative and In",
        "Mint: invocation 0 at 2021-05-31T22:18:12+00:00, the only mint before 2021-06-01T14:03:27Z; invocation 1 at exactly 2021-06-01T14:03:27+00:00",
        "Mint pace from 14:03:27Z: 78 within 10 minutes, 172 within 1 hour, 299 within 6 hours; last mint 2021-06-01T16:09:12+00:00, 125.75 minutes after the first public mint",
        "Invocation order and timestamp order agree on all 300; 50 timestamps are shared by more than one token",
        "137 distinct owner addresses at retrieval; exactly one token, 77000263, held by an address in the refreshed AB5D linked-wallet set"
      ]
    },
    {
      "id": "S04",
      "author": "Art Blocks",
      "title": "Art Blocks public GraphQL index, tokens_metadata for the four example tokens of project 77",
      "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
      "publisher": "Art Blocks",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "HTTP POST from the artblocks.io origin in the browser pane",
      "archiveUrl": null,
      "inspectionScope": "Named operation TokensByIds with the four exact composite token keys (G04), so that every example token's hash, owner and mint time is read from a response.",
      "evidenceLocators": [
        "Token 77000263: invocation 263, hash 0x77ed63e34c603553f3e2bd743416cd7b379f8099f8135ec5661a2fe8a035a097, owner 0xdd19308a9731cdecb67e0d80ca6823394208c045, minted_at 2021-06-01T15:54:47+00:00, features {\"Form\": \"Circle\", \"Speed\": \"Conceptual\", \"Palette\": \"Thaddeus\", \"Rotation\": \"Tilted\", \"Skeleton\": \"Slice\", \"Direction\": \"Out\", \"Background\": \"Light\"}",
        "Token 77000228: invocation 228, hash 0x7ba52291716d4bd81090758f6121059b4b5da374a29340bee64cccf3bfa39013, owner 0xf99016c1928965c391268db98b8ce1a6d8c229f1, minted_at 2021-06-01T15:39:12+00:00, features {\"Form\": \"Circle\", \"Speed\": \"Meditative\", \"Palette\": \"South Beach\", \"Rotation\": \"Balanced\", \"Skeleton\": \"Hidden\", \"Direction\": \"In\", \"Background\": \"Light\"}",
        "Token 77000099: invocation 99, hash 0x2dbf3a956afc2f5af8f8fbaa89f38cf7f7a76a09164eaa4451704b3be1566479, owner 0x7af2e406bcc85580f2994f6cee959b280c6e0c32, minted_at 2021-06-01T14:20:07+00:00, features {\"Form\": \"Hard\", \"Speed\": \"Meditative\", \"Palette\": \"Zephyr\", \"Rotation\": \"Tilted\", \"Skeleton\": \"Hidden\", \"Direction\": \"Out\", \"Background\": \"Light\"}",
        "Token 77000296: invocation 296, hash 0x3a14a95551f265dc98660fa12a01ccaadd0d0e54483a1d5ae6196c3ad105c739, owner 0xf39ec750fa88ece57304340bc2b02ebe6f8a00f1, minted_at 2021-06-01T16:08:16+00:00, features {\"Form\": \"Soft\", \"Speed\": \"Conceptual\", \"Palette\": \"Oracle\", \"Rotation\": \"Tilted Mirror\", \"Skeleton\": \"Half\", \"Direction\": \"In\", \"Background\": \"Light\"}"
      ]
    },
    {
      "id": "S05",
      "author": "Art Blocks",
      "title": "Art Blocks public GraphQL index, user_profiles for the AB5D collection",
      "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
      "publisher": "Art Blocks",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "HTTP POST from the artblocks.io origin in the browser pane, parked on https://www.artblocks.io/profile/ab5d",
      "archiveUrl": null,
      "inspectionScope": "Discovery query for the ab5d profile (G01) with variables {}, returning the complete linked_accounts set; refreshed once this session and reused across the batch.",
      "evidenceLocators": [
        "user_profiles[0].linked_accounts returned three addresses: 0xce6dc14c5494d8a4325a81d3b257d130fa2039d1, 0x2247247ee0eee59557e6cd14f7e047f6a9309b5c, 0xdd19308a9731cdecb67e0d80ca6823394208c045",
        "The third address is the indexed owner of token 77000263, the only match across all 300 tokens"
      ]
    },
    {
      "id": "S06",
      "author": "Art Blocks",
      "title": "Art Blocks live renderer for project 77 tokens",
      "url": "https://generator.artblocks.io/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/77000263",
      "publisher": "Art Blocks",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "original renderer opened in the browser pane with the pane displayed; canvas sampling, live globals, key dispatch and WebGL diagnostics by page script",
      "archiveUrl": null,
      "inspectionScope": "Four tokens opened at generator.artblocks.io, which resolves to /1/<contract>/<tokenId>. Observations V01 to V04 in evidence.json with windows, methods and sampled states.",
      "evidenceLocators": [
        "All four pages: inline script of 6,686 bytes whose in-page SHA-256 is a2458278576427c5a7d96fa6ae917a634850d4071828a11ac9410e51d1d3ecd0, identical to the index retrieval; p5 1.0.0 loaded from cdnjs.cloudflare.com",
        "Token 77000263: canvas 1324 x 1324; frame rate 59.99 fps; time rising 0.0006 per second at Conceptual speed; 9 of 10 signatures distinct over 27 s; disc flat at the palette's last colour (64,69,106)",
        "Token 77000263: key 1 set speed to 1 and time rose 0.012 per second; key 0 set speed 0 and four signatures over 6 s were identical while frameCount advanced; key 2 gave 0.006 per second",
        "Token 77000263: replacing only 'smoothstep(1., 1., d)' with 0.0 in a separate canvas with the live uniforms restored banded output; the unmodified shader rendered one flat colour",
        "WebGL renderer string 'ANGLE (Apple, ANGLE Metal Renderer: Apple M5 Pro, Unspecified Version)'; a standalone probe smoothstep(1.,1.,x) with a uniform x returned 0 for x in 0, 0.25, 0.5, 0.99",
        "Token 77000228: 17 of 17 signatures distinct over 48 s; time rising 0.012 per second; faint ghost ring radius 43, 37, 30, 24, 18, 11, 5 device pixels at one-second intervals, then gone",
        "Token 77000228 diagnostic render with the final mix set to zero: radial profile shifted about 3 pixels toward the centre (400-pixel canvas) between time 0.10 and 0.12",
        "Token 77000099: flat (221,170,153) diamond, scale 1.325 and shadow threshold 0.005 read live; signatures differed across 5 s",
        "Token 77000296: Oracle colour #A33 read live; flat #222 diamond; time 0.002 at frame 512, consistent with the 300-frame Conceptual pause",
        "keyTyped defined; keyPressed and mousePressed undefined; no audio or video elements; p5.SoundFile undefined",
        "Canonical token page checks by fetch from the artblocks.io origin: 77000263, 77000228, 77000099 and 77000296 each returned HTTP 200"
      ]
    },
    {
      "id": "S07",
      "author": "Art Blocks",
      "title": "Art Blocks rendered still images for project 77 tokens",
      "url": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/77000263.png",
      "publisher": "Art Blocks",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "opened in the browser pane; media-proxy redirects to artblocks-mainnet.s3.amazonaws.com",
      "archiveUrl": null,
      "inspectionScope": "The platform's 2400 x 2400 PNG stills for tokens 77000263, 77000296 and 77000228, viewed as images and compared with the live renderer. The rendering environment that produced the stills is not documented.",
      "evidenceLocators": [
        "77000263.png: orange outer band, deep teal field, pale ring, thin orange rings, glowing pale centre, black diagonal bar at 45 degrees with white gradient ends (Slice mask)",
        "77000296.png: rounded diamond; red gradient band on the upper-left half only; off-white elsewhere; black nested diamond; graded centre with a red fleck (Half mask, Oracle red)",
        "77000228.png: blue and pink rim, broad white band, wide pink field, black-edged peach core, small pale blue centre",
        "All three stills show multiple bands; the live renderer on the observation machine showed each as a single flat colour"
      ]
    },
    {
      "id": "S08",
      "author": "Aaron Penne",
      "title": "Aaron Penne: Apparitions on Art Blocks",
      "url": "https://www.artxcode.io/journal/aaron-penne-apparitions-on-art-blocks",
      "publisher": "ARTXCODE",
      "publicationDate": "2021-03-31",
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "browser pane, full article text extracted",
      "archiveUrl": null,
      "inspectionScope": "The full article body read. It concerns Apparitions, not Return; used only for the artist's own account of palette naming and colour methods that Return reuses.",
      "evidenceLocators": [
        "Behind the Scenes: 'The color palette Riley is of course named for Bridget Riley'; 'There was a week or so where everything was Rileys, just black and white'; 'As an opart fan'",
        "Behind the Scenes: black and red 'was the basis for the Oracle palette picker where one randomly selected color is used alongside black and white'",
        "COLORS: Zephyr, The Oracle and Three Fates 'are not color palettes'; 'A Zephyr picks a new random color with every band or stripe'",
        "COLORS: 'Light and Darkness having increased rarity'; Features: statistical rarity is 'a small subset of ways to interpret Apparitions'"
      ]
    },
    {
      "id": "S09",
      "author": "Aaron Penne",
      "title": "Aaron Penne, artist website (home and About pages)",
      "url": "https://www.aaronpenne.io/",
      "publisher": "Aaron Penne",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "browser pane, visible text and link targets extracted from / and /about",
      "archiveUrl": null,
      "inspectionScope": "Home page project list and link targets, and the About page biography, interview and exhibition lists, read in full.",
      "evidenceLocators": [
        "Home: entry 'Return / Art Blocks' linking to https://archipelago.art/collections/return, which repeats the mint description only",
        "Home: Return listed after 'Sotheby's Natively Digital Auction' and before 'Saying The Same Thing', and after 'Apparitions / Art Blocks Curated'",
        "About, Bio: 'Aaron Penne (b. 1988) is an artist and engineer working with systems in Seattle'; 'He founded the Generative Artists Club in 2018'",
        "About, Interviews: ArtyNFT (link returns 404), 'Art Blocks w/Jeff Davis' (https://beta.cent.co/artblocks/+dlg37p), DigitalFruit, and two podcasts"
      ]
    },
    {
      "id": "S10",
      "author": "Aaron Penne",
      "title": "aaronpenne on GitHub, profile and repository list",
      "url": "https://github.com/aaronpenne?tab=repositories",
      "publisher": "GitHub",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "browser pane, profile and full repository list read",
      "archiveUrl": null,
      "inspectionScope": "The account named in the program's first-line comment. Profile page and all 15 listed public repositories read by name and description.",
      "evidenceLocators": [
        "Profile: 'Engineer & Artist', website https://www.aaronpenne.io/",
        "Repository list (15): data_visualization, get_noaa_ghcn_data, dsp, embedded_systems, a p5.gui fork, a React-P5-Template fork and others; none is named for Return or contains Art Blocks project code by its description"
      ]
    },
    {
      "id": "S11",
      "author": "Creative Commons",
      "title": "Deed: Attribution-NonCommercial 4.0 International",
      "url": "https://creativecommons.org/licenses/by-nc/4.0/",
      "publisher": "Creative Commons",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "browser pane, deed read in full; legal code not opened",
      "archiveUrl": null,
      "inspectionScope": "The canonical deed for the identifier in the record and in the program comment.",
      "evidenceLocators": [
        "You are free to: 'Share' and 'Adapt', with no 'even commercially' qualifier",
        "Under the following terms: Attribution, including 'provide a link to the license'; NonCommercial 'You may not use the material for commercial purposes'; 'No additional restrictions'",
        "Footnote: 'A commercial use is one primarily intended for commercial advantage or monetary compensation'"
      ]
    },
    {
      "id": "S12",
      "author": "Khronos Group",
      "title": "smoothstep, OpenGL ES 3 Reference Pages",
      "url": "https://registry.khronos.org/OpenGL-Refpages/es3.0/html/smoothstep.xhtml",
      "publisher": "Khronos Group",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "browser pane, page read in full",
      "archiveUrl": null,
      "inspectionScope": "The reference page for the function whose degenerate use collapses the live render.",
      "evidenceLocators": [
        "Description: equivalent to t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); return t * t * (3.0 - 2.0 * t)",
        "Description: 'Results are undefined if edge0 ≥ edge1.'",
        "Version Support: available in OpenGL ES Shading Language 1.00, the language WebGL 1 shaders such as this one use"
      ]
    },
    {
      "id": "S13",
      "author": "Jeff Davis",
      "title": "In Conversation with Aaron Penne",
      "url": "https://beta.cent.co/artblocks/+dlg37p",
      "publisher": "Art Blocks on Cent",
      "publicationDate": "2021-03-16",
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "browser pane, page text extracted by script",
      "archiveUrl": null,
      "inspectionScope": "The complete Aaron Penne interview read; later posts on the same page ignored. It predates Return and discusses Apparitions.",
      "evidenceLocators": [
        "AP: his mentor 'taught me to treat coding as a creative meditation, something deeper and more beautiful than just control logic'",
        "AP on Apparitions: 'To be able to draw repetitive lines and create dynamic movement is such a powerful thing to me'",
        "AP: 'This series is really about exploring color and motion'; 'There is emotion contained in the level of movement, the direction, the structure or chaos'"
      ]
    },
    {
      "id": "S14",
      "author": "Art Blocks",
      "title": "Art Blocks public GraphQL index, projects_metadata script for project 190 (Mental pathways), generator cross-check",
      "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
      "publisher": "Art Blocks",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "HTTP POST from the artblocks.io origin in the browser pane",
      "archiveUrl": null,
      "inspectionScope": "Operation ScriptById with variables {\"id\":\"0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-190\"} (G05). Only the seed and generator passages were compared; the rest of that program was not re-read for this package.",
      "evidenceLocators": [
        "Response name 'Mental pathways', artist_name 'fabianospeziari x donnoh', start_datetime 2021-10-26T19:00:00+00:00; script 10,910 bytes, SHA-256 696f551de2fdf53cc46acead712506953dbcac81a2f53a26e68c4a11f10c2809",
        "random_dec(): seed^=seed<<13, seed^=seed>>17, seed^=seed<<5, then (seed<0?1+~seed:seed) modulo 1000 divided by 1000; seed parsed from tokenData.hash.slice(0,16)",
        "Return's rnd() performs the same three shifts, the same 1+~ absolute value and the same modulo 1000 as a bare function"
      ]
    }
  ]
}
