{
  "sources": [
    {
      "id": "S01",
      "author": "Art Blocks",
      "title": "Rotor by Sebastián Brocher (CryptoArte), collection page",
      "url": "https://www.artblocks.io/collection/rotor-by-sebastian-brocher-cryptoarte",
      "publisher": "Art Blocks",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "browser pane; PROJECT DETAILS expanded",
      "archiveUrl": null,
      "inspectionScope": "Header, description and PROJECT DETAILS read on 2026-09-20.",
      "evidenceLocators": [
        "Header: 'by Sebastián Brocher (CryptoArte)', 'An Art Blocks 500 release, in the Factory category', 'Fixed edition of 285 unique artworks', 'Released on 18 June 2022' (UTC+10 rendering of 2022-06-17T17:00Z)",
        "WHAT TO EXPECT: full description including the automatic pause and the p, a/s, z/x, c, r commands",
        "PROJECT DETAILS: EDITION SIZE 285; LIBRARY p5@1.0.0; ASPECT RATIO 1; 21 ATTRIBUTES listed; no licence, website or sales notes shown"
      ]
    },
    {
      "id": "S02",
      "author": "Art Blocks",
      "title": "Art Blocks public GraphQL index, projects_metadata for project 315, 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": "ProjectBySlug with variables {\"slug\":\"rotor-by-sebastian-brocher-cryptoarte\"} (G02). The complete 8,551-byte program read end to end.",
      "evidenceLocators": [
        "Response id 0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-315; 285 = max; script_count 1; license CC BY-NC 4.0 with link; activated 2022-05-26T01:13:55; start 2022-06-17T17:00:00; completed 2022-06-20T22:43:48; price 0; website null",
        "Program: class Random, two sfc32-style streams from hash.substr(2,32) and substr(34,32), 1e6 warm-up draws, alternating",
        "Program, setVariables(): shape (8), palette pN (19 thresholds), partitions int(3,7) with 4 bumped to 5 for some shapes, transparency level e (6) then palettesTransparency[pN][e-1], strokes, iterationLengthDivider, halfMoon, decreasingMoon, decreasingDisplacement, negative shapes, modifier roll int(1,7), inverseRotation",
        "Program, setup(): nine alpha tables shared by 19 palettes; W = min(innerWidth, innerHeight); rotationIncrementDivisor 1800; background painted only in restart()",
        "Program, drawIt(): cD = cos f / sin f depth term; auto-pause rules: crazy2 draws > 2700; ellipses, saw or crazy4 cD < -1; waves draws > 1200; otherwise f > PI/2",
        "Program, keyTyped(): a/s initialLength x0.9 or /0.9; z/x displacementRadius; c constrainMode; r restart(); p paused toggle"
      ]
    },
    {
      "id": "S03",
      "author": "Art Blocks",
      "title": "Art Blocks public GraphQL index, tokens_metadata for all 285 tokens of project 315",
      "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": "TokensByProject with variables {\"pid\":\"0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-315\"} (G03); derivation checks run in the browser against every hash.",
      "evidenceLocators": [
        "All 21 keys reproduced 285/285 with modifier mapping crazy=Crazy, crazy2=Fade, crazy3=Loco, crazy4=Beats, shakes=Shakes, waves=Waves; Transparency label by level e: 1 Very high, 2 High, 3 Medium, 4 Low, 5 Very low, 6 Lowest",
        "Counts: Triangles 77, Flowers 59, Saws 32, Ellipses 29, Circles 26, Arcs 25, Rectangles 21, Circlets 16; Grayscale Bliss 7; Loco 63, Shakes 47, Fade 46, Crazy 32, Waves 31, Beats 19, none 47",
        "Mint: invocation 0 2022-05-23T21:55:30; first public 2022-06-17T17:02:58; 33 in 10 min, 70 in 1 h, 124 in 24 h; last 2022-06-20T22:43:48; 199 owners"
      ]
    },
    {
      "id": "S04",
      "author": "Art Blocks",
      "title": "Art Blocks public GraphQL index, tokens_metadata for the four example tokens of project 315",
      "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": "TokensByIds with the four exact composite keys (G04).",
      "evidenceLocators": [
        "Token 315000018: invocation 18, hash 0x2ca78f8cab48cde2b46f85121af193a0cc93fc3803e03136b1552a69fcd386cf, owner 0xdd19308a9731cdecb67e0d80ca6823394208c045, minted_at 2022-06-17T17:04:42+00:00, features {\"Fade\": \"No\", \"Loco\": \"No\", \"Beats\": \"No\", \"Crazy\": \"No\", \"Waves\": \"No\", \"Shakes\": \"Yes\", \"Shapes\": \"Saws\", \"Palette\": \"Lavander Fields\", \"Strokes\": \"None\", \"Half Moon\": \"No\", \"Partitions\": 6, \"Transparency\": \"High\", \"Negative Fill\": \"None\", \"Length Divider\": \"2\", \"Decreasing Moon\": \"Yes\", \"Inverse Rotation\": \"No\", \"Negative Circles\": \"No\", \"Negative Strokes\": \"None\", \"Negative Triangles\": \"No\", \"Negative Rectangles\": \"No\", \"Decreasing Displacement\": \"Yes\"}",
        "Token 315000195: invocation 195, hash 0x7992bddaf0d89b3974b9ce771672bec3e838f66ac08cabf3ef01306454e7f569, owner 0xb681e58b716c5719e8d868bc6bd3a7813fb4adbb, minted_at 2022-06-20T14:27:43+00:00, features {\"Fade\": \"Yes\", \"Loco\": \"No\", \"Beats\": \"No\", \"Crazy\": \"No\", \"Waves\": \"No\", \"Shakes\": \"No\", \"Shapes\": \"Circles\", \"Palette\": \"Breezy Night\", \"Strokes\": \"Auto\", \"Half Moon\": \"No\", \"Partitions\": 3, \"Transparency\": \"Very high\", \"Negative Fill\": \"None\", \"Length Divider\": \"2\", \"Decreasing Moon\": \"No\", \"Inverse Rotation\": \"No\", \"Negative Circles\": \"No\", \"Negative Strokes\": \"None\", \"Negative Triangles\": \"No\", \"Negative Rectangles\": \"No\", \"Decreasing Displacement\": \"No\"}",
        "Token 315000024: invocation 24, hash 0x4df5a4a28a600530394557aba8bbdf544574eec162f41f6987d1a5b637f93910, owner 0x3dad3fc7baf6e0c6d45a9b2c6f0331b37f574f13, minted_at 2022-06-17T17:05:18+00:00, features {\"Fade\": \"No\", \"Loco\": \"No\", \"Beats\": \"No\", \"Crazy\": \"No\", \"Waves\": \"No\", \"Shakes\": \"Yes\", \"Shapes\": \"Triangles\", \"Palette\": \"Fire & Ice\", \"Strokes\": \"Auto\", \"Half Moon\": \"No\", \"Partitions\": 5, \"Transparency\": \"Very high\", \"Negative Fill\": \"None\", \"Length Divider\": \"4\", \"Decreasing Moon\": \"No\", \"Inverse Rotation\": \"No\", \"Negative Circles\": \"No\", \"Negative Strokes\": \"None\", \"Negative Triangles\": \"No\", \"Negative Rectangles\": \"No\", \"Decreasing Displacement\": \"Yes\"}",
        "Token 315000216: invocation 216, hash 0xc032f7abce6e03895f784e05569df22dca3cec805a33fdc752bf49dbef2d9db9, owner 0x507cb3192622ae463215e16f2eb7b53135ae3eb4, minted_at 2022-06-20T18:49:52+00:00, features {\"Fade\": \"No\", \"Loco\": \"No\", \"Beats\": \"No\", \"Crazy\": \"Yes\", \"Waves\": \"No\", \"Shakes\": \"No\", \"Shapes\": \"Saws\", \"Palette\": \"Grayscale Bliss\", \"Strokes\": \"White\", \"Half Moon\": \"Yes\", \"Partitions\": 5, \"Transparency\": \"Medium\", \"Negative Fill\": \"None\", \"Length Divider\": \"2\", \"Decreasing Moon\": \"No\", \"Inverse Rotation\": \"Yes\", \"Negative Circles\": \"No\", \"Negative Strokes\": \"None\", \"Negative Triangles\": \"No\", \"Negative Rectangles\": \"No\", \"Decreasing Displacement\": \"No\"}"
      ]
    },
    {
      "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",
      "archiveUrl": null,
      "inspectionScope": "Discovery query for the ab5d profile (G01), refreshed once this session.",
      "evidenceLocators": [
        "linked_accounts returned three addresses: 0xce6dc14c5494d8a4325a81d3b257d130fa2039d1, 0x2247247ee0eee59557e6cd14f7e047f6a9309b5c, 0xdd19308a9731cdecb67e0d80ca6823394208c045",
        "The third address owns token 315000018, the only match across the 285 tokens"
      ]
    },
    {
      "id": "S06",
      "author": "Art Blocks",
      "title": "Art Blocks live renderer for project 315 tokens",
      "url": "https://generator.artblocks.io/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/315000018",
      "publisher": "Art Blocks",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "original renderer in the browser pane, pane displayed; automated canvas sampling, live globals, key events",
      "archiveUrl": null,
      "inspectionScope": "Four tokens observed (V01 to V04 in evidence.json).",
      "evidenceLocators": [
        "All four: inline script 8,551 bytes, SHA-256 3acdfa0df75409b208a695d7d18bc5bcd6be05fe8246bf9e60639c2be4b20333; p5.js 1.0.0 from cdnjs; handler keyTyped only; no audio; canvas 658x658 at dpr 2",
        "Auto-pause observed at draws 709 (315000018, 315000216), 451 (315000024), 2701 (315000195)",
        "315000018 key tests with recorded state changes; restart reproduces the pause angle",
        "Canonical token page checks from the artblocks.io origin: 315000018, 315000195, 315000024, 315000216 each HTTP 200"
      ]
    },
    {
      "id": "S07",
      "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, page text read",
      "archiveUrl": null,
      "inspectionScope": "Deed read.",
      "evidenceLocators": [
        "Share and Adapt permitted",
        "Attribution required",
        "NonCommercial: 'You may not use the material for commercial purposes.'",
        "No additional restrictions"
      ]
    },
    {
      "id": "S08",
      "author": "cdnjs",
      "title": "p5.js file at the 1.0.0 path, as loaded by the Rotor renderer",
      "url": "https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js",
      "publisher": "cdnjs",
      "publicationDate": null,
      "accessedAt": "2026-09-20",
      "accessOutcome": "inspected",
      "accessMethod": "GET via fetch from the generator.artblocks.io origin in the browser pane",
      "archiveUrl": null,
      "inspectionScope": "Fetched from the generator origin in the browser pane; banner and licence text searched.",
      "evidenceLocators": [
        "HTTP 200; 621,360 bytes; SHA-256 3e0d5d8be7c1179dd16e1f68651fc5783d71b05cd32c2f7ade571a7350f489ab",
        "First line: '/*! p5.js v0.10.2 February 29, 2020 */'",
        "Contains GNU Lesser General Public License notice text within the bundle",
        "p5.VERSION undefined in the running frame"
      ]
    }
  ]
}
