{
  "schema": "ab5d-series-essay/1",
  "identity": {
    "chainId": 1,
    "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
    "projectId": 414,
    "slug": "karma-by-kala",
    "title": "KARMA",
    "artistCredit": "KALA",
    "artistDossierUrls": []
  },
  "revision": 2,
  "researchCutoff": "2026-09-20",
  "status": "published-with-research-limitations",
  "facts": [
    {
      "id": "minted-count",
      "topic": "mint",
      "value": 33,
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "note": "Current index invocations, equal to maximum on this completed project."
    },
    {
      "id": "max-invocations",
      "topic": "mint",
      "value": 33,
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S01"
      ],
      "status": "reported"
    },
    {
      "id": "first-mint",
      "topic": "mint",
      "value": "2023-01-24T17:30:11+00:00",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "previousRevisionSourceIds": [
        "S02",
        "S04"
      ]
    },
    {
      "id": "activated-at",
      "topic": "mint",
      "value": "2023-01-26T16:57:35+00:00",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S01"
      ],
      "status": "reported"
    },
    {
      "id": "start-datetime",
      "topic": "mint",
      "value": "2023-02-24T18:00:00+00:00",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S01"
      ],
      "status": "reported"
    },
    {
      "id": "completed-at",
      "topic": "mint",
      "value": "2024-03-12T04:52:59+00:00",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "note": null
    },
    {
      "id": "license-label",
      "topic": "rights",
      "value": "CC BY-NC 4.0",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S01"
      ],
      "status": "reported",
      "previousRevisionSourceIds": [
        "S02",
        "S06"
      ]
    },
    {
      "id": "script-type",
      "topic": "construction",
      "value": "p5@1.0.0",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S01"
      ],
      "status": "verified",
      "previousRevisionSourceIds": [
        "S02",
        "S03"
      ]
    },
    {
      "id": "historic-unit-price-eth",
      "topic": "mint",
      "value": null,
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S01"
      ],
      "status": "unknown",
      "note": "No contemporaneous primary price table recovered this session.",
      "previousRevisionSourceIds": [
        "S01",
        "S02"
      ]
    }
  ],
  "rights": {
    "artwork": {
      "reportedLabel": "CC BY-NC 4.0",
      "category": "creative-commons",
      "termsUrl": "https://creativecommons.org/licenses/by-nc/4.0/",
      "observedAt": "2026-09-20",
      "sourceIds": [
        "S01"
      ],
      "note": "Label copied from projects_metadata.license. Unversioned CC strings are not inferred as 4.0.",
      "unresolvedConflicts": [],
      "previousRevisionSourceIds": [
        "S02",
        "S06"
      ]
    },
    "code": {
      "reportedLabel": null,
      "category": "unknown",
      "termsUrl": null,
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S01"
      ],
      "note": "No separate artist-code licence field was present on the project record.",
      "unresolvedConflicts": [],
      "previousRevisionSourceIds": [
        "S02",
        "S03"
      ]
    },
    "thirdParty": [
      {
        "name": "p5.js 1.0.0",
        "reportedLabel": "LGPL-2.1 (p5.js project license; confirm version-specific notice)",
        "category": "custom",
        "termsUrl": "https://github.com/processing/p5.js/blob/main/license.txt",
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S01"
        ],
        "note": "Runtime declared script_type_and_version p5@1.0.0. p5.js is third-party; the artist program is a separate rights object.",
        "unresolvedConflicts": []
      }
    ]
  },
  "sections": [
    {
      "id": "the-work-and-its-context",
      "heading": "The work and its context",
      "bodyMarkdown": "KARMA is project 414 on the Art Blocks contract `0x99a9b7c1116f9ceeb1652de04d5969cce509b069`. The index records 33 invocations against a maximum of 33, the runtime `p5@1.0.0`, an aspect ratio of 0.707 (close to the A-series paper ratio) and the licence `CC BY-NC 4.0`. It files the project in the Presents vertical [^S01]. Art Blocks now counts it among the Art Blocks 500, the set of projects released between 2020 and 2025 that the platform treats as \"a finite and complete set\" [^S02][^S03].\n\nThe project text opens: \"Karma, the original algorithm of Indian thought.\" It goes on to say that \"the past is only the fading imprint on memory\" and that \"The past's fading, thus, is a necessity\" [^S01]. The program makes that idea literal. Each output is a flock of rotating cubes and connecting threads that grows, swirls and then shrinks to nothing, leaving only the marks it has already laid down [^S01].\n\nKALA is the working name of Ujjwal Agarwal, a generative artist and educator based in Bangalore. His own site lists Karma among his works under the handle @kalatalk, the same account the index gives as the project website [^S04][^S05][^S01]. He studied at MNIT Jaipur and took an MA in Computational Arts at Goldsmiths, University of London [^S04][^S06]. He teaches generative art at the Srishti Manipal Institute [^S07]."
    },
    {
      "id": "conception-and-development",
      "heading": "Conception and development",
      "bodyMarkdown": "KARMA was KALA's second Art Blocks project. The first, Pizza 1o1, was a 200-edition Factory release of 1 March 2022, with the one-line description \"You can't make everyone happy. You're not Pizza.\" [^S01]. The index lists four later projects under the same artist address: TIMELINES (2023), Songs of Utopia (2025), \"Unlived; Unliveable\" (2025) and Raga.fm (2026) [^S01]. Agarwal's site dates Karma to 2022, which suggests the work was made in the year before its January 2023 activation [^S05][^S01].\n\nThe project record credits two sources. The first is \"Dan Shiffman's coding train version of the Boid's Flocking Algorithm\", and the second is \"colour tricks by Joshua Davis\" [^S01]. Shiffman's Coding Challenge 124 implements Craig Reynolds's boids, in which each agent steers by alignment, cohesion and separation with its neighbours [^S08][^S09]. The KARMA program keeps that structure almost unchanged and builds its variation on top of it (code reading) [^S01].\n\nAgarwal's project page describes the result as \"a deterministic flocking system\" whose agents \"align, cohere, and separate according to forces derived from the transaction hash\". It adds that \"The system runs to completion, accumulating trails into an unrepeatable, individualized composition\" [^S05]. The artist's display note is short: \"The piece is best experienced on large format prints\" [^S01].\n\nThe trait names come from Jain philosophy. The \"Act\" trait uses seven of the eight main types of karma in Jain thought: Darshanavaraniya (perception-obscuring), Antaraya (obstacle-creating), Mohaniya (deluding), Naam (body-determining), Aayu (life-span), Gotra (status) and Vedaniya (feeling-producing) [^S10][^S01]. The eighth, knowledge-obscuring Jnanavaraniya, does not appear in any published token [^S01]."
    },
    {
      "id": "how-the-work-was-constructed",
      "heading": "How the work was constructed",
      "bodyMarkdown": "The program is a single script of 11,561 bytes, SHA-256 `f2a17d5392d53edcfc4792a18a3661da1ae9575c81a7f4f09f768647bf614e69`. It was retrieved from the Art Blocks index on 20 September 2026 and read in full. No code is reproduced here [^S01]. It runs in p5's WEBGL mode, with ambient and directional light, on a canvas 0.707 times the window height in width [^S01].\n\nA seeded generator makes the first four draws: a mode number V from 0 to 90, a composition number, an origin number and a palette from ten [^S01]. V picks one of seven parameter sets. Each set fixes the flock's \"age\", its number of boids, their maximum size, and the radius and weight of each of the three flocking forces. The published Act trait names the set. For this draft the generator was reproduced in JavaScript and run on all 33 hashes. The published Act, Art, Actors and Composition values match the program for every token (own computation) [^S01].\n\n| Act (published) | V range and share | Age drawn | Boids (\"Actors\") drawn | Tokens |\n| --- | --- | --- | --- | --- |\n| Mohaniya | 0 to 19, 22% | 2 to 5 | 15 to 40 | 5 |\n| Antaraya | 20 to 29, 11% | 1 to 2 | 20 to 100 | 1 |\n| Vedaniya | 30 to 39, 11% | 1 to 2 | 20 to 80 | 6 |\n| Aayu | 40 to 59, 22% | 2 to 3 | 20 to 100 | 8 |\n| Naam | 60 to 70, 12% | 1 to 3 | 20 to 80 | 6 |\n| Gotra | 70 to 79, 11% | 1 to 2 | 20 to 40 | 2 |\n| Darshanavaraniya | 80 to 90, 12% | 1 to 2 | 20 to 50 | 5 |\n\n*Shares are the program's odds; token counts are from the index [^S01].*\n\nEach boid starts at a random point with a random heading, a random colour offset and a random size. On every frame each boid steers, moves and wraps round the edges of the canvas. It draws a thread to each neighbour between 10 and 200 units away, then draws a spinning cube at its own position [^S01]. Thread weight and cube size both follow a half sine wave over the flock's lifetime of 380 frames times the age. Marks start at zero, swell, and shrink back to zero. After that the flock stops drawing, and the accumulated image is the work [^S01]. At p5's default target of 60 frames a second, that lifetime runs from about six seconds (age 1) to about 32 seconds (age 5) (own computation).\n\nThe ten palettes are published as the \"Art\" trait. They are Attraction, Fire, Peace, Sky, Birth, Soft, Shine and Race, plus two two-colour palettes: Monochrome1 (black ground) and Monochrome2 (white ground) [^S01]. Each palette is stretched into a 200-step looping gradient, and its first colour is the background. A cube's colour follows its horizontal position and the frame count, so hues shift across the canvas as the flock moves [^S01].\n\nThe \"Composition\" trait is Circle when the composition number exceeds 0.8 and V falls between 20 and 39. In that case, boids are held inside a disc instead of wrapping at the edges. The program's odds are about 4.4 per cent, and only #20 has it [^S01]."
    },
    {
      "id": "quirks-in-the-algorithm",
      "heading": "Quirks in the algorithm",
      "bodyMarkdown": "A full reading of the program, checked against all 33 token records, found the following.\n\n1. **A generator seeded from decimals.** The random generator splits the hash into eight-character chunks and parses them without a hex radix. Each seed is therefore only the leading decimal digits of its chunk, and any chunk that begins with a letter becomes zero. That happened in 96 of the 264 chunks across the edition (own computation). In #13, all four seeds of the second stream are zero. The outputs are still distinct, but the effective seed space is far smaller than the hash implies (code reading) [^S01].\n2. **The Age label is off by one in Mohaniya.** The program draws Mohaniya ages from 2 to 5. The published Age is one higher than the program's value in four of the five Mohaniya tokens (#2, #7, #21, #31), and equal only where both read 5 (#3). The labels fit a draw from 3 to 5 [^S01] (own computation). So #31, the only \"Age 4\", runs for the program's age 3, and #21, labelled 5, runs for age 4.\n3. **Vedaniya boids never meet.** In the Vedaniya set all three force radii are zero, so no boid ever counts a neighbour, and every boid flies straight until it wraps. Threads are still drawn between passing boids, but the flock has no behaviour at all. This makes \"feeling-producing\" karma the one mode without interaction (code reading) [^S01].\n4. **A separation weight that does nothing.** The Darshanavaraniya set gives separation its heaviest weight in the program, but gives it a radius of zero, so the force is never applied. What remains is weak cohesion across the whole canvas and short-range alignment (code reading) [^S01].\n5. **An overlap at V = 70.** The Naam set runs for V up to and including 70, and the Gotra set from 70. A token with V of 70 would run both, and Gotra's values would win. None of the 33 has V = 70 (own computation) [^S01].\n6. **An origin that never happened.** When the origin number exceeds 0.9 and V is 20 to 39, every boid starts at the centre. The chance is about 2 per cent, and all 33 tokens are published as \"Origin: Random\" [^S01].\n7. **Dead code.** The palette chain handles values up to 12, but only 0 to 9 can be drawn. A noise seed is set but noise is never used. Slider variables, a second flocking method and a spare drawing method are declared and never called. A save-to-file key handler is overridden by the later arrow-key handler, so it can never run (code reading) [^S01].\n8. **Depth and resolution.** Velocities have a depth component, and edge wrapping checks only width and height, so the flock drifts toward and away from the WEBGL camera. Thread weight is scaled by the resolution factor twice, so threads grow heavier relative to the image at larger sizes (code reading) [^S01].\n9. **Clicks reach into the past.** Clicking spawns up to ten new \"K\" boids at random positions that are drawn toward the pointer, but they only draw once the main flock has died. Each click also advances the token's generator, so an interactive session diverges from the stored hash's sequence (code reading) [^S01]."
    },
    {
      "id": "the-most-coveted-variants",
      "heading": "The most coveted variants",
      "bodyMarkdown": "No published collector commentary, grail list or notable sale for KARMA was found. VERSE's series page, read through an automated extraction, reported a highest sale of $1,509 and total volume of $6,526, without naming the token [^S11]. The index recorded a lowest listing of 2.28 ETH on 20 September 2026 [^S01]. What follows is therefore a description of structural rarity, not of market demand.\n\n**#20: Circle and Antaraya (1 of 33 each).** The only Circle composition is also the only Antaraya token and has the largest flock, 83 boids. It is a pale grey disc of threads and cubes on black in Monochrome1 [^S01]. It is pictured at the head of this essay.\n\n**#16, the AB5D token.** An Aayu flock of 66 boids, age 3, in Fire. Bands of red, orange and white threads run across the top and bottom, with tangled loops in between, on black. AB5D holds it [^S01].\n\n![KARMA #16: bands of red and orange threads above and below a tangle of loops on black](https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000016.png)\n*KARMA #16, Aayu, Fire, 66 actors. Held by AB5D. Render: Art Blocks media proxy.*\n\n**#0, the artist's token.** Minted on 24 January 2023, a month before the public sale, and still held by the artist's address [^S01]. It is an Aayu flock of 37 boids in Soft, with violet bands on a pale pink ground.\n\n![KARMA #0: violet and pink horizontal strands on a pale pink ground](https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000000.png)\n*KARMA #0, held by the artist. Render: Art Blocks media proxy.*\n\n**#31, the only \"Age 4\".** A Mohaniya flock of 28 boids in Sky, with dense coils of pink and teal on cyan. As quirk 2 explains, its program age is 3, so its rarest label reflects a labelling offset [^S01].\n\n![KARMA #31: coiled pink, purple and teal ribbons on a bright cyan ground](https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000031.png)\n*KARMA #31, Mohaniya, Sky. Render: Art Blocks media proxy.*\n\n**#21, the smallest flock.** Only 16 boids, Mohaniya, in Race, one of two Race tokens. It leaves four separate knots of red and slate ribbons joined by a few long lines on off-white [^S01][^S12].\n\n![KARMA #21: four knots of coral and dark slate ribbons linked by thin lines on off-white](https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000021.png)\n*KARMA #21, Mohaniya, Race, 16 actors. Render: Art Blocks media proxy.*\n\n**#32, the last mint.** A Vedaniya flock of 67 boids in Monochrome1. As quirk 3 predicts, its boids travel in straight lines, and the image is a dense lattice of straight grey and white ribbons [^S01].\n\n![KARMA #32: a dense lattice of straight white and grey ribbons on black](https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000032.png)\n*KARMA #32, Vedaniya, Monochrome1. Render: Art Blocks media proxy.*\n\nAt retrieval, 28 addresses held the 33 tokens, and no address held more than two [^S01]. No source ties any of these addresses to a named collector or institution."
    },
    {
      "id": "drawing-into-the-flock",
      "heading": "Drawing into the flock",
      "bodyMarkdown": "The project text invites the viewer to draw: \"Click/Hold anywhere to start drawing. Press the 'down arrow' to clear the canvas\" [^S01]. In the program, both actions wait until the main flock has died. Holding the mouse then sets a second flock moving toward the pointer, drawn with the same threads and cubes, and the down arrow paints the canvas with the background colour [^S01]. A cleared canvas cannot be restored without reloading.\n\nThis fits the project text. The first image is the \"past\" laid down by the hash, and the viewer's own marks are added on top and can be erased. Only a reload restores the original, and the same program still produces it (code reading) [^S01][^S05]."
    },
    {
      "id": "the-mint",
      "heading": "The mint",
      "bodyMarkdown": "Invocation 0 was minted on 24 January 2023 at 17:30:11 UTC, before the project was activated on 26 January [^S01]. The sales notes describe a 24-hour allowlist \"for 5 collectors who appreciated the light side of the pizza project\", followed by \"an exponential Dutch Auction with settlement from 12 ETH down to 0.24 ETH\" [^S01]. The index's minter records match. An allowlist minter priced at 0.3 ETH issued #1 and #2 on 23 February. The Dutch auction minter started at 12 ETH at 18:00 UTC on 24 February, with a price half-life of 319 seconds and a resting price of 0.24 ETH [^S01]. On those figures the price reached 0.24 ETH about 30 minutes in (own computation).\n\nThe auction minter issued the other 30 tokens. Its recorded settled price is 0.24 ETH, so every auction buyer paid the resting price in the end, with any excess refundable [^S01]. Twenty tokens were minted within the first hour after the auction began, 26 within 24 hours, and the last, #32, on 1 March 2023 [^S01]. The index gives a completion date of 12 March 2024, a year after the last mint. Nothing in the sources explains the gap [^S01].\n\nThe project record commits 10 per cent of \"all proceeds above the base price\" to Commutiny, The Youth Collective [^S01]. Commutiny is a youth-work organisation headquartered in New Delhi [^S13]."
    },
    {
      "id": "copyright-and-licensing",
      "heading": "Copyright and licensing",
      "bodyMarkdown": "The index records `CC BY-NC 4.0` with a link to the Creative Commons licence [^S01]. On that label, images of the work may be shared and adapted non-commercially with attribution; commercial use needs the artist's permission. The program carries no separate code licence, and the earlier AB5D essay treated the code's rights as unknown, a caution this draft keeps [^S14]. p5.js is loaded by the platform at view time [^S01]."
    },
    {
      "id": "significance-and-limitations",
      "heading": "Significance and limitations",
      "bodyMarkdown": "KARMA is a small, quiet project. It has 33 outputs, few sales and no critical literature. It is worth reading for how closely the program matches the text. Each flock grows, acts and fades by a fixed schedule, and only its marks remain. The Jain karma names are a real parameter switch, not decoration: each one sets how the flock behaves, and one of them, Vedaniya, removes behaviour altogether. The code also shows its origins as a teaching sketch, with an unused interface and a generator seeded from partly parsed hex. The published Age trait departs from the program in the Mohaniya branch [^S01].\n\nThe main limitations of this draft are the lack of any interview with the artist about the work and the lack of secondary-market data beyond one aggregator.\n\nUnresolved research questions:\n\n1. Did KALA leave out Jnanavaraniya on purpose, or was it meant for the overlapping V = 70 case? The features script, not the on-chain program, would settle this.\n2. Why do the published Mohaniya ages run one higher than the program's? Was the features script written with a range of 3 to 5?\n3. Has KALA made any large-format prints of KARMA, as the display note suggests? Were any shown, for example alongside TIMELINES in India?\n4. How many allowlist places were used (the index shows two of five), and did any proceeds end up \"above the base price\" for the Commutiny pledge, given that the auction settled at its resting price?\n5. The VERSE market figures and the phrase on the legacy Pizza 1o1 page, that the name KALA means \"tomorrow is made of art\", came through automated extraction and are not confirmed. KALA's posts on X (@kalatalk) about the release are leads that could not be fetched."
    }
  ],
  "examples": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "414000000",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000000",
      "sourceIds": [
        "S01"
      ],
      "selectionNote": "Specified candidate invocation 0.",
      "observationNote": "Inspected media-proxy PNG is 1697x2400px, light and muted or near-neutral (mean RGB 216,176,191). File size 5325320 bytes. Indexed features: Act Aayu; Age 2; Art Soft; Actors 37; Origin Random; Composition Rectangle",
      "previousRevisionSourceIds": [
        "S04",
        "S05",
        "S09"
      ]
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "414000001",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000001",
      "sourceIds": [
        "S01"
      ],
      "selectionNote": "Specified candidate invocation 1.",
      "observationNote": "Inspected media-proxy PNG is 1697x2400px, mid-tone and strongly coloured (mean RGB 76,171,208). File size 3136654 bytes. Indexed features: Act Darshanavaraniya; Age 1; Art Sky; Actors 37; Origin Random; Composition Rectangle",
      "previousRevisionSourceIds": [
        "S04",
        "S05",
        "S09"
      ]
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "414000010",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000010",
      "sourceIds": [
        "S01"
      ],
      "selectionNote": "Specified candidate invocation 10.",
      "observationNote": "Inspected media-proxy PNG is 1697x2400px, light and muted or near-neutral (mean RGB 236,219,206). File size 2877947 bytes. Indexed features: Act Gotra; Age 1; Art Shine; Actors 36; Origin Random; Composition Rectangle",
      "previousRevisionSourceIds": [
        "S04",
        "S05",
        "S09"
      ]
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "414000020",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000020",
      "sourceIds": [
        "S01"
      ],
      "selectionNote": "Specified candidate invocation 20.",
      "observationNote": "Inspected media-proxy PNG is 1697x2400px, dark and muted or near-neutral (mean RGB 42,42,42). File size 2988769 bytes. Indexed features: Act Antaraya; Age 1; Art Monochrome1; Actors 83; Origin Random; Composition Circle",
      "previousRevisionSourceIds": [
        "S04",
        "S05",
        "S09"
      ]
    }
  ],
  "mediaIds": [],
  "provenance": {
    "operator": "Grok research session for coordinator handoff",
    "agent": "OpenAI Codex (editorial synthesis)",
    "model": null,
    "modelVersion": null,
    "tools": [
      "Hasura GraphQL",
      "media-proxy PNG retrieval",
      "canonical token HEAD checks",
      "full script read"
    ],
    "humanEditorialInvolvement": "Editorial synthesis of the earlier essay and supplied revision, published at Phil’s request. Research limitations retained.",
    "originalProseLicense": "CC0-1.0",
    "revisionAttribution": "AB5D editorial synthesis of the supplied revision and earlier essay. Supplied-revision author and model were not specified. Earlier research provenance is retained in previousRevisionResearch.",
    "revisionUsage": null,
    "generation": null
  },
  "codeInspection": {
    "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
    "locator": "projects_metadata.script where slug=_eq karma-by-kala",
    "sha256": "f2a17d5392d53edcfc4792a18a3661da1ae9575c81a7f4f09f768647bf614e69",
    "retrievedAt": "2026-09-19T00:00:00+00:00",
    "method": "graphql-post-full-script-read",
    "executed": false,
    "chainBlock": null
  },
  "editorialExceptions": [],
  "manuscriptFormat": "supplied-markdown",
  "manuscriptPreamble": "# KARMA by KALA\n\n*Art Blocks Presents, project 414 · 33 outputs · public mint 24 February 2023 · CC BY-NC 4.0*\n\n![KARMA #20: a disc of grey and white ribbons and cubes on black, the only Circle composition](https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000020.png)\n*KARMA #20, the only Circle composition and the only Antaraya. Render: Art Blocks media proxy.*\n\n",
  "bibliographyMarkdown": "\n### Primary\n\n[^S01]: Art Blocks public GraphQL index, `projects_metadata` for project 414 (including the full program), `tokens_metadata` for all 33 tokens, `project_minter_configurations`, `receipt_metadata` and `primary_purchases`, and the artist's other project records. Retrieved 2026-09-20 via https://artblocks-mainnet.hasura.app/v1/graphql. Collection page: https://www.artblocks.io/collection/karma-by-kala\n[^S02]: Art Blocks, KARMA by KALA project page. https://www.artblocks.io/collections/presents/projects/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414\n[^S03]: Art Blocks, \"Introducing Art Blocks 500\". https://www.artblocks.io/articles/art-blocks-500-complete-collection\n[^S04]: Ujjwal Agarwal, personal website, biography and works. https://www.ujjwalagarwal.com/\n[^S05]: Ujjwal Agarwal, \"Karma\". https://www.ujjwalagarwal.com/work/karma/ (see also \"Raga.fm\", which gives the same @kalatalk handle: https://www.ujjwalagarwal.com/work/raga-fm/)\n[^S07]: Srishti Manipal Institute of Art, Design and Technology, faculty profile, \"Ujjwal Agarwal\". https://srishtimanipalinstitute.in/teaching_faculty/ujjwal-agarwal/\n[^S14]: AB5D, earlier essay on KARMA by KALA. https://ab5d.xyz/series/karma-by-kala/\n\n### Video and audio\n\n[^S09]: \"Coding Challenge 124: Flocking Simulation\", The Coding Train, YouTube (title and channel confirmed by YouTube oEmbed, 20 September 2026; not watched for this draft). https://www.youtube.com/watch?v=mhjuuHl6qHM\n\n### Criticism, collecting and market\n\n[^S06]: Mediabrief, \"India Art Fair 2023, Tezos India partner for Computational Art installation\", 4 February 2023. https://mediabrief.com/india-art-fair-2023-tezos-india-partner-for-computational-art-installation/\n[^S11]: VERSE, \"KARMA by KALA\" series page, market data read 20 September 2026 by automated extraction. https://verse.works/series/karma-by-kala\n[^S12]: VERSE, \"KARMA #21 by KALA\". https://verse.works/items/ethereum/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000021\n[^S13]: Commutiny, The Youth Collective, \"About Us\". https://commutiny.in/about-us\n\n### Further reading\n\n[^S08]: The Coding Train, \"Flocking Simulation\", Coding Challenge 124. https://thecodingtrain.com/challenges/124-flocking-simulation/\n[^S10]: Wikipedia, \"Types of Karma (Jainism)\". https://en.wikipedia.org/wiki/Types_of_Karma_(Jainism)\n\n- Method Kala Ghoda, \"Ujjwal Agarwal (KALA)\", artist collection (physical works: Timelines, Time, In Code). https://themethod.art/collections/ujjwal-agarwal-kala\n- Art Blocks, Pizza 1o1 by KALA. https://www.artblocks.io/legacy/collections/presents/projects/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/240\n- OpenSea, KARMA by KALA collection. https://opensea.io/collection/karma-by-kala\n",
  "referenceOrder": [
    "S01",
    "S02",
    "S03",
    "S04",
    "S05",
    "S06",
    "S07",
    "S08",
    "S09",
    "S10",
    "S11",
    "S12",
    "S13",
    "S14"
  ],
  "previousRevisionResearch": {
    "facts": [
      {
        "id": "minted-count",
        "topic": "mint",
        "value": 33,
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S02"
        ],
        "status": "reported",
        "note": "Current index invocations, equal to maximum on this completed project."
      },
      {
        "id": "max-invocations",
        "topic": "mint",
        "value": 33,
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S02"
        ],
        "status": "reported"
      },
      {
        "id": "first-mint",
        "topic": "mint",
        "value": "2023-01-24T17:30:11+00:00",
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S02",
          "S04"
        ],
        "status": "reported"
      },
      {
        "id": "activated-at",
        "topic": "mint",
        "value": "2023-01-26T16:57:35+00:00",
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S02"
        ],
        "status": "reported"
      },
      {
        "id": "start-datetime",
        "topic": "mint",
        "value": "2023-02-24T18:00:00+00:00",
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S02"
        ],
        "status": "reported"
      },
      {
        "id": "completed-at",
        "topic": "mint",
        "value": "2024-03-12T04:52:59+00:00",
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S02"
        ],
        "status": "reported",
        "note": null
      },
      {
        "id": "license-label",
        "topic": "rights",
        "value": "CC BY-NC 4.0",
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S02",
          "S06"
        ],
        "status": "reported"
      },
      {
        "id": "script-type",
        "topic": "construction",
        "value": "p5@1.0.0",
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S02",
          "S03"
        ],
        "status": "verified"
      },
      {
        "id": "historic-unit-price-eth",
        "topic": "mint",
        "value": null,
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S01",
          "S02"
        ],
        "status": "unknown",
        "note": "No contemporaneous primary price table recovered this session."
      }
    ],
    "rights": {
      "artwork": {
        "reportedLabel": "CC BY-NC 4.0",
        "category": "creative-commons",
        "termsUrl": "https://creativecommons.org/licenses/by-nc/4.0/",
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S02",
          "S06"
        ],
        "note": "Label copied from projects_metadata.license. Unversioned CC strings are not inferred as 4.0.",
        "unresolvedConflicts": []
      },
      "code": {
        "reportedLabel": null,
        "category": "unknown",
        "termsUrl": null,
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S02",
          "S03"
        ],
        "note": "No separate artist-code licence field was present on the project record.",
        "unresolvedConflicts": []
      },
      "thirdParty": [
        {
          "name": "p5.js 1.0.0",
          "reportedLabel": "LGPL-2.1 (p5.js project license; confirm version-specific notice)",
          "category": "custom",
          "termsUrl": "https://github.com/processing/p5.js/blob/main/license.txt",
          "observedAt": "2026-09-19",
          "sourceIds": [
            "S03"
          ],
          "note": "Runtime declared script_type_and_version p5@1.0.0. p5.js is third-party; the artist program is a separate rights object.",
          "unresolvedConflicts": []
        }
      ]
    },
    "examples": [
      {
        "id": "E01",
        "chainId": 1,
        "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
        "tokenId": "414000000",
        "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000000",
        "sourceIds": [
          "S04",
          "S05",
          "S09"
        ],
        "selectionNote": "Specified candidate invocation 0.",
        "observationNote": "Inspected media-proxy PNG is 1697x2400px, light and muted or near-neutral (mean RGB 216,176,191). File size 5325320 bytes. Indexed features: Act Aayu; Age 2; Art Soft; Actors 37; Origin Random; Composition Rectangle"
      },
      {
        "id": "E02",
        "chainId": 1,
        "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
        "tokenId": "414000001",
        "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000001",
        "sourceIds": [
          "S04",
          "S05",
          "S09"
        ],
        "selectionNote": "Specified candidate invocation 1.",
        "observationNote": "Inspected media-proxy PNG is 1697x2400px, mid-tone and strongly coloured (mean RGB 76,171,208). File size 3136654 bytes. Indexed features: Act Darshanavaraniya; Age 1; Art Sky; Actors 37; Origin Random; Composition Rectangle"
      },
      {
        "id": "E03",
        "chainId": 1,
        "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
        "tokenId": "414000010",
        "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000010",
        "sourceIds": [
          "S04",
          "S05",
          "S09"
        ],
        "selectionNote": "Specified candidate invocation 10.",
        "observationNote": "Inspected media-proxy PNG is 1697x2400px, light and muted or near-neutral (mean RGB 236,219,206). File size 2877947 bytes. Indexed features: Act Gotra; Age 1; Art Shine; Actors 36; Origin Random; Composition Rectangle"
      },
      {
        "id": "E04",
        "chainId": 1,
        "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
        "tokenId": "414000020",
        "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000020",
        "sourceIds": [
          "S04",
          "S05",
          "S09"
        ],
        "selectionNote": "Specified candidate invocation 20.",
        "observationNote": "Inspected media-proxy PNG is 1697x2400px, dark and muted or near-neutral (mean RGB 42,42,42). File size 2988769 bytes. Indexed features: Act Antaraya; Age 1; Art Monochrome1; Actors 83; Origin Random; Composition Circle"
      }
    ],
    "provenance": {
      "operator": "Grok research session for coordinator handoff",
      "agent": "Grok",
      "model": "Grok 4.6",
      "modelVersion": null,
      "tools": [
        "Hasura GraphQL",
        "media-proxy PNG retrieval",
        "canonical token HEAD checks",
        "full script read"
      ],
      "humanEditorialInvolvement": "none in this draft",
      "originalProseLicense": "CC0-1.0"
    },
    "codeInspection": {
      "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
      "locator": "projects_metadata.script where slug=_eq karma-by-kala",
      "sha256": "f2a17d5392d53edcfc4792a18a3661da1ae9575c81a7f4f09f768647bf614e69",
      "retrievedAt": "2026-09-19T00:00:00+00:00",
      "method": "graphql-post-full-script-read",
      "executed": false,
      "chainBlock": null
    },
    "sources": [
      {
        "id": "S01",
        "author": "Art Blocks",
        "title": "KARMA by KALA collection page",
        "url": "https://www.artblocks.io/collection/karma-by-kala",
        "publicationDate": null,
        "accessedAt": "2026-09-19",
        "accessMethod": "https-get",
        "accessOutcome": "inspected",
        "evidenceLocators": [
          "collection header and description for slug karma-by-kala",
          "edition size and project identity projectId 414"
        ]
      },
      {
        "id": "S02",
        "author": "Art Blocks Hasura index",
        "title": "projects_metadata record for karma-by-kala",
        "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
        "publicationDate": null,
        "accessedAt": "2026-09-19",
        "accessMethod": "graphql-post",
        "accessOutcome": "inspected",
        "evidenceLocators": [
          "query projects_metadata where slug=_eq karma-by-kala; fields project_id,license,invocations,max_invocations,first_token_minted_at,activated_at,start_datetime,completed_at,script_type_and_version,description,website",
          "returned project_id 414 contract_address 0x99a9b7c1116f9ceeb1652de04d5969cce509b069"
        ]
      },
      {
        "id": "S03",
        "author": "KALA",
        "title": "KARMA on-chain artist program",
        "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
        "publicationDate": null,
        "accessedAt": "2026-09-19",
        "accessMethod": "graphql-post",
        "accessOutcome": "inspected",
        "evidenceLocators": [
          "projects_metadata.script for slug karma-by-kala; SHA-256 f2a17d5392d53edcfc4792a18a3661da1ae9575c81a7f4f09f768647bf614e69; 11561 UTF-8 bytes",
          "full script 11561 bytes SHA-256 f2a17d5392d53edcfc4792a18a3661da1ae9575c81a7f4f09f768647bf614e69"
        ]
      },
      {
        "id": "S04",
        "author": "Art Blocks Hasura index",
        "title": "tokens_metadata for sampled KARMA token IDs",
        "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
        "publicationDate": null,
        "accessedAt": "2026-09-19",
        "accessMethod": "graphql-post",
        "accessOutcome": "inspected",
        "evidenceLocators": [
          "tokens_metadata where token_id in sampled set and contract_address = 0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
          "returned token_id, invocation, minted_at, owner_address, hash, features"
        ]
      },
      {
        "id": "S05",
        "author": "Art Blocks",
        "title": "Canonical token pages for sampled KARMA outputs",
        "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000000",
        "publicationDate": null,
        "accessedAt": "2026-09-19",
        "accessMethod": "https-head",
        "accessOutcome": "inspected",
        "evidenceLocators": [
          "HEAD https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000000 status 200",
          "matching HEAD 200 on the other three sampled canonical token URLs"
        ]
      },
      {
        "id": "S06",
        "author": "Creative Commons",
        "title": "Reported artwork licence label CC BY-NC 4.0",
        "url": "https://creativecommons.org/licenses/by-nc/4.0/",
        "publicationDate": null,
        "accessedAt": "2026-09-19",
        "accessMethod": "https-get",
        "accessOutcome": "inspected",
        "evidenceLocators": [
          "project license field exactly 'CC BY-NC 4.0'",
          "deed or project page text as cited; unversioned labels are not rewritten as 4.0"
        ]
      },
      {
        "id": "S07",
        "author": "KALA",
        "title": "KARMA official description",
        "url": "https://twitter.com/kalatalk",
        "publicationDate": null,
        "accessedAt": "2026-09-19",
        "accessMethod": "https-get",
        "accessOutcome": "inspected",
        "evidenceLocators": [
          "official indexed description used as the development account"
        ]
      },
      {
        "id": "S08",
        "author": "Art Blocks",
        "title": "AB5D linked wallet set and profile index",
        "url": "https://www.artblocks.io/profile/ab5d",
        "publicationDate": null,
        "accessedAt": "2026-09-19",
        "accessMethod": "https-get-and-graphql",
        "accessOutcome": "inspected",
        "evidenceLocators": [
          "GraphQL user_profiles where username=_eq ab5d; linked_accounts.public_address returned three addresses",
          "profile page HTTP 200 also listing 0xdd19308a9731cdecb67e0d80ca6823394208c045"
        ]
      },
      {
        "id": "S09",
        "author": "Art Blocks media proxy",
        "title": "Static PNG renders of sampled KARMA tokens",
        "url": "https://media-proxy.artblocks.io/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000000.png",
        "publicationDate": null,
        "accessedAt": "2026-09-19",
        "accessMethod": "https-get",
        "accessOutcome": "inspected",
        "evidenceLocators": [
          "downloaded PNG https://media-proxy.artblocks.io/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000000.png",
          "same proxy pattern for the other sampled token IDs used in visualObservations"
        ]
      },
      {
        "id": "S10",
        "author": "Art Blocks",
        "title": "Live generator renderer for KARMA",
        "url": "https://generator.artblocks.io/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000000",
        "publicationDate": null,
        "accessedAt": "2026-09-19",
        "accessMethod": "https-get",
        "accessOutcome": "inspected",
        "evidenceLocators": [
          "generator.artblocks.io live document for token 414000000",
          "used to distinguish preview PNG halt-state from the original renderer"
        ]
      }
    ]
  },
  "suppliedRevision": {
    "batch": "ab500-essays-batch-01",
    "date": "2026-09-20",
    "sourceFile": "karma-by-kala.md",
    "sourceSha256": "ea0a366e926757f2d94908b15f1da0d83d6cd133deab33cb25e30fd98a86e67f",
    "sourceCount": 14,
    "imageCount": 6,
    "headerLine": "Art Blocks Presents, project 414 · 33 outputs · public mint 24 February 2023 · CC BY-NC 4.0",
    "author": null,
    "usage": null,
    "draftNoticeRemoved": true,
    "editorialSynthesis": "Compared the supplied revision with the earlier essay. Retained the fuller technical and historical account, integrated useful visual interpretation where it added substance, and preserved unresolved research questions. Generic prior boilerplate was not retained."
  },
  "presentation": {
    "editionSize": 33,
    "maximumEdition": 33,
    "mintDate": "2023-01-24T17:30:11+00:00",
    "mintDateMeaning": "first indexed mint",
    "mintDateLabel": "First mint",
    "artwork": {
      "project_id": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069-414",
      "token_id": "414000016",
      "invocation": 16,
      "owner_address": "0xdd19308a9731cdecb67e0d80ca6823394208c045",
      "preview_asset_url": "https://media-proxy.artblocks.io/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000016.png",
      "live_view_url": "https://generator.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000016",
      "canonicalUrl": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000016",
      "mode": "image",
      "copyrightStatus": "CC BY-NC 4.0",
      "copyrightUrl": "https://creativecommons.org/licenses/by-nc/4.0/",
      "displayBasis": "AB5D collection example under the artwork licence label stored on the project record; not a newly created derivative."
    }
  },
  "observationImages": [],
  "publication": {
    "date": "2026-09-20",
    "url": "https://ab5d.xyz/series/karma-by-kala/",
    "authorization": "Phil requested live publication of the supplied revision on 2026-09-20.",
    "reviewSnapshot": "/docs/series-essays/production/karma-by-kala/record.json",
    "unresolvedResearchQuestionsRetained": true,
    "revisionDate": "2026-09-20"
  }
}
