{
  "schema": "ab5d-series-essay/1",
  "identity": {
    "chainId": 1,
    "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
    "projectId": 472,
    "slug": "because-unless-until-by-ixnayokay",
    "title": "because unless until",
    "artistCredit": "ixnayokay",
    "artistDossierUrls": []
  },
  "revision": 2,
  "researchCutoff": "2026-09-19",
  "status": "published-with-research-limitations",
  "facts": [
    {
      "id": "minted-count",
      "topic": "mint",
      "value": 650,
      "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": 650,
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S02"
      ],
      "status": "reported"
    },
    {
      "id": "first-mint",
      "topic": "mint",
      "value": "2023-09-15T02:32:47+00:00",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S02",
        "S04"
      ],
      "status": "reported"
    },
    {
      "id": "activated-at",
      "topic": "mint",
      "value": "2023-09-29T19:51:47+00:00",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S02"
      ],
      "status": "reported"
    },
    {
      "id": "start-datetime",
      "topic": "mint",
      "value": "2023-10-11T17:00:00+00:00",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S02"
      ],
      "status": "reported"
    },
    {
      "id": "completed-at",
      "topic": "mint",
      "value": "2023-10-11T18:06:35+00:00",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S02"
      ],
      "status": "reported",
      "note": null
    },
    {
      "id": "license-label",
      "topic": "rights",
      "value": "CC BY-NC-SA 4.0",
      "observedAt": "2026-09-19",
      "sourceIds": [
        "S02",
        "S06"
      ],
      "status": "reported"
    },
    {
      "id": "script-type",
      "topic": "construction",
      "value": "js@na",
      "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-SA 4.0",
      "category": "creative-commons",
      "termsUrl": "https://creativecommons.org/licenses/by-nc-sa/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": "browser JavaScript (no declared library version)",
        "reportedLabel": "not declared on the project record",
        "category": "unknown",
        "termsUrl": null,
        "observedAt": "2026-09-19",
        "sourceIds": [
          "S03"
        ],
        "note": "Runtime declared js@na. No p5 or three version string is attached to the indexed project record.",
        "unresolvedConflicts": []
      }
    ]
  },
  "sections": [
    {
      "id": "work-context",
      "heading": "The work and its context",
      "bodyMarkdown": "because unless until is project 472 on the Art Blocks V2 core contract 0x99a9b7c1116f9ceeb1652de04d5969cce509b069, published under the canonical slug because-unless-until-by-ixnayokay and credited to ixnayokay. The indexed project record reports a completed edition of 650 of 650 invocations, runtime js@na, and the official description: *“History doesn’t repeat itself, but it often rhymes.” - Mark Twain*  In our day-to-day lives, it’s natural for us to fix a conceptual view of the people, places, and things around us in our minds. We might think, “that is the tree outside my window. This is my house. That’s my friend. I’m me.” In fact, this type of abstraction is necessary for us to make any sort of sense of our world. But is the tree outside your window today truly the same tree as it was yesterday? Are you exactly the same person as you were yesterday? Or twenty years ago? In a sense, the abstraction is an illusion. Our physical reality is inseparable from the flow of time; everything is changing, all the time. Sometimes the changes are fast, and sometimes they’re imperceptible ,  but time never stops. Change never stops.  __*because unless until*__ represents this concept in art, as a generative system of systems where each output changes over time. New days present new views of the algorithm, where a variety of mathematical shapes gradually and endlessly shift, demonstrating a more local and immediate form of change. Even so, each day’s appearance has enough in common with the one before it to provide the output with a continuous sense of identity. With the arrival of each day, what about the art has changed -- and what remains the same?   Changing Over Time -  One of my favorite aspects of generative art is the joy of discovery when viewing a new output for the first time. I also enjoy the novelty that comes with watching a chaotic system evolve over time. But, once you’ve seen a particular output from a long-form generative art collection, you’ve seen it. My intent, with the time-based mechanics in this algorithm, is to preserve that feeling of discovery so that every viewing and every day brings something new.   In __*because unless until*__ colors are applied differently depending on the day of the week. The detail level of the animation changes over the course of a month, providing a different visual balance between the shapes, and the textures that fill them. Each month, the animation’s shapes are altered. The weave of these different cycles mean that each day has its own characteristics. It would take at least seven years to see every available combination.  Some outputs come with “Daily Modes” tied to a specific day of the week, where colors and textures are altered in a particular way. Each output also comes with a \"Fiesta Day\" -- one day of the year where it shows a set of new behaviors. One day in December is designated as “Glitchmas” ,  a holiday shared across all outputs with another unique behavior. Glitchmas falls on a different day each year.   Animation -  The algorithm works by layering multiple animations, whose intersections are used to divide the canvas into regions that determine the palettes and rules for a section of the output. The rules are applied to an underlying field of cellular automata, which change state accordingly. At the core of the project is a generic framework that runs arbitrary animations in their own threads. The threading enables performant, fluid motion (I find it sensuous -- I often find myself thinking \"I want to run my fingers through it.). Threads run asynchronously, which in combination with the chaotic behavior of cellular automata means that outputs evolve in a unique, non-deterministic way each time. After a few minutes, the canvas is likely to be in a state that will no-one will ever experience again.  The animations in __*because unless until*__ are a return to some of my favorite mathematical techniques from a prolific period (2010-11) when I was first beginning to make art: Mandelbrot and Julia fractals, isolines, polar inversions, spirals, regular and irregular polygons, and ,  of course ,  cellular automata. It’s been a joy to revisit them, and to combine them with my more recent animated practice. As the animations progress, a variety of emergent features sometimes appear ,  such as cloudlike trails, regular and irregular structures, and moiré.  There are dozens of cellular automaton rules in the algorithm, which can take the states of surrounding cells as input in one of over a hundred ways. Derived from these rules, there are over a thousand possible textures, and billions of ways that a cell might change depending on its rules, state, and surroundings. The states of cells in an area around each cell are used in one of 18 different ways to select from the palettes available in the output ,  each of which is an interpolated gradient containing hundreds of colors. The large number of possible combinations contribute to a diverse pool of possible appearances.   Help -  Press **[H]** to open a set of interactive menus providing additional information about the available time-based features and interactive controls. The “Today” panel provides realtime information about which detail level or special day is currently active.  For collectors wanting a more concrete experience, a “Canonical” mode is available that makes the animation appear as it did at unix epoch (January 1, 1970), and a “Synchronous” mode is available that makes animations evolve in a deterministic way (at the cost of performance). These modes are used when generating the thumbnail animations for each output. [^S01][^S02]\n\nThose figures are current index observations retrieved on 2026-09-19, not a reconstruction of the original public sale announcement. Atlas position is a catalogue ordinal and is not the on-chain project ID. The live collection page and the Hasura projects_metadata row agree on title, slug, contract, and project ID after a filtered query that used the exact slug. [^S01][^S02]\n\nContract 0x99a9b7c1116f9ceeb1652de04d5969cce509b069. Aspect ratio indexed as 1.777777777. Website https://www.ixnayokay.art/post/about-because-unless-until.\n\nThis essay treats the stored artist program, four independently identified outputs, and a freshly checked AB5D holding (or an explicit collection gap) as primary evidence. Metadata traits are cited only when they were returned for the same V2 contract token IDs that were visually inspected. They do not replace looking at the pictures. [^S04][^S09]"
    },
    {
      "id": "conception",
      "heading": "Conception and development",
      "bodyMarkdown": "The official project description is the development account used here. Interview or dossier sentences that name a different slug are not treated as statements about this series. *“History doesn’t repeat itself, but it often rhymes.” - Mark Twain*  In our day-to-day lives, it’s natural for us to fix a conceptual view of the people, places, and things around us in our minds. We might think, “that is the tree outside my window. This is my house. That’s my friend. I’m me.” In fact, this type of abstraction is necessary for us to make any sort of sense of our world. But is the\n\nThe development account used here is the specific source named in the citations, not a paraphrase of an artist-dossier page. Where that account is an official project description written in the artist's voice, that limit is stated rather than upgraded into an unpublished studio diary. Where an interview exists, the sentences that actually name because unless until are the ones relied on. [^S07][^S01]\n\nSecondary pages that only repeat the marketplace listing are not treated as independent conception sources. [^S02][^S07]"
    },
    {
      "id": "construction",
      "heading": "How the work was constructed",
      "bodyMarkdown": "The complete artist program for slug because-unless-until-by-ixnayokay was retrieved from projects_metadata.script filtered by that exact slug. The UTF-8 payload is 83082 bytes with SHA-256 22015da8fcde43f4d2e5411e9b2bec9f10afb3a3a07e4638462b90503b7983eb. Runtime on the project record is js@na. The script was read in full; it was not executed in this research session. [^S03]\n\nThe stored generator is 83082 bytes, SHA-256 22015da8fcde43f4d2e5411e9b2bec9f10afb3a3a07e4638462b90503b7983eb, runtime js@na. Detected source markers: draw, keydown, requestAnimationFrame, tokenData, hash. Named functions include it, n, r, s, st. tokenData.hash is read in source. Output then follows the drawing path those functions implement. Token 0 observation: Inspected media-proxy PNG is 2400x1351px, mid-tone and muted or near-neutral (mean RGB 72,69,71). File size 484638 bytes. Indexed features: Animation Auto; Palette 1 Riverine; Palette 2 CMYK; Palette 3 Spectrum; Palette 4 Scorch; Fiesta Day 21; Fiesta Month October; Palette Mode Quartet\n\nVisual claims come from inspected media-proxy PNGs plus indexed token features.\n\nSeed handling is visible in the retrieved program: tokenData.hash is read in source. Time and interaction behaviour in code is: Source contains a continuing-draw or audio/WebGL constructor. The inspected PNG is one frame. Live timing and soundtrack were not captured this session. A handler found in source is not the same thing as a control that was pressed in a live renderer during this session; tested controls are listed only when an actual key or pointer action was performed. [^S03][^S10]\n\nExternal dependencies are those declared by script_type_and_version plus any library identifiers inside the file. Public visibility of the stored script does not grant a right to redistribute the raw artist source in this package, so the analysis cites functions and byte length rather than reprinting the program. [^S03][^S06]"
    },
    {
      "id": "mint",
      "heading": "The mint",
      "bodyMarkdown": "Indexed chronology for project 472 on 0x99a9b7c1116f9ceeb1652de04d5969cce509b069 is as follows. First token minted_at is 2023-09-15T02:32:47+00:00. activated_at is 2023-09-29T19:51:47+00:00. start_datetime is 2023-10-11T17:00:00+00:00. completed_at is 2023-10-11T18:06:35+00:00. Invocations stand at 650 of a maximum 650, with complete=true on the retrieved row. [^S02][^S04]\n\nCalculated intervals from those timestamps: first mint to activation is 14.72 days; activation to start_datetime is 11.88 days; start_datetime to completion is 1.11 hours; first mint to completion is 26.65 days. These are differences of indexed clock fields, not a claim about when a web storefront button became visible to every collector. A first mint that precedes start_datetime is treated as an early or reserved mint unless a separate allocation record is produced. [^S02][^S04]\n\nIndexed clocks: first 2023-09-15T02:32:47+00:00, activated 2023-09-29T19:51:47+00:00, start 2023-10-11T17:00:00+00:00, completed 2023-10-11T18:06:35+00:00. Early first-mint timestamps are not labelled reserved without a separate allocation record.\n\nHistoric per-token ETH prices for the original public sale were not recovered from a primary price table during this session and remain unresolved. Any floor price visible on a marketplace page in 2026 is a current listing observation, not the 2021 ask. [^S01][^S02]"
    },
    {
      "id": "rights",
      "heading": "Copyright and licensing",
      "bodyMarkdown": "The project record stores the artwork licence label 'CC BY-NC-SA 4.0'. That string includes an explicit 4.0 version and is treated as Creative Commons version 4.0. Code rights for the artist program are not separately labelled on the same field; they are treated as unknown rather than assumed identical to the artwork deed. [^S02][^S06]\n\nArtwork label copied exactly as 'CC BY-NC-SA 4.0'.\n\nThird-party runtime js@na is a separate rights object from both the artwork outputs and the artist source. p5.js, three.js, and ordinary browser JavaScript each keep their own licence texts. This package does not redistribute those libraries. [^S03][^S06]\n\nOriginal essay prose in this package is dedicated CC0-1.0 by the research operator. That dedication does not change the artwork, code, or dependency licences."
    },
    {
      "id": "examples",
      "heading": "Close reading of examples",
      "bodyMarkdown": "because unless until #0 is token 472000000 on 0x99a9b7c1116f9ceeb1652de04d5969cce509b069, minted 2023-09-15T02:32:47+00:00. The canonical token page returned HTTP 200. The inspected media-proxy PNG is a static frame. Inspected media-proxy PNG is 2400x1351px, mid-tone and muted or near-neutral (mean RGB 72,69,71). File size 484638 bytes. Indexed features: Animation Auto; Palette 1 Riverine; Palette 2 CMYK; Palette 3 Spectrum; Palette 4 Scorch; Fiesta Day 21; Fiesta Month October; Palette Mode Quartet Indexed features returned for this V2 token: Animation Auto; Palette 1 Riverine; Palette 2 CMYK; Palette 3 Spectrum; Palette 4 Scorch; Fiesta Day 21; Fiesta Month October; Palette Mode Quartet.  [^S04][^S05][^S09]\n\nbecause unless until #1 is token 472000001 on 0x99a9b7c1116f9ceeb1652de04d5969cce509b069, minted 2023-10-11T17:01:35+00:00. The canonical token page returned HTTP 200. The inspected media-proxy PNG is a static frame. Inspected media-proxy PNG is 2400x1351px, mid-tone and strongly coloured (mean RGB 113,74,29). File size 244360 bytes. Indexed features: Animation Julia; Palette 1 Golden Hour; Palette 2 Ember; Palette 3 Golden Hour; Palette 4 Ember; Fiesta Day 4; Fiesta Month April; Palette Mode Duo Indexed features returned for this V2 token: Animation Julia; Palette 1 Golden Hour; Palette 2 Ember; Palette 3 Golden Hour; Palette 4 Ember; Fiesta Day 4; Fiesta Month April; Palette Mode Duo.  [^S04][^S05][^S09]\n\nbecause unless until #10 is token 472000010 on 0x99a9b7c1116f9ceeb1652de04d5969cce509b069, minted 2023-10-11T17:36:35+00:00. The canonical token page returned HTTP 200. The inspected media-proxy PNG is a static frame. Inspected media-proxy PNG is 2400x1351px, mid-tone and muted or near-neutral (mean RGB 62,85,87). File size 184085 bytes. Indexed features: Animation Auto; Palette 1 CMYK; Palette 2 Midnight; Palette 3 CMYK; Palette 4 Riverine; Fiesta Day 18; Fiesta Month September; Palette Mode Trio Indexed features returned for this V2 token: Animation Auto; Palette 1 CMYK; Palette 2 Midnight; Palette 3 CMYK; Palette 4 Riverine; Fiesta Day 18; Fiesta Month September; Palette Mode Trio.  [^S04][^S05][^S09]\n\nbecause unless until #20 is token 472000020 on 0x99a9b7c1116f9ceeb1652de04d5969cce509b069, minted 2023-10-11T17:47:47+00:00. The canonical token page returned HTTP 200. The inspected media-proxy PNG is a static frame. Inspected media-proxy PNG is 2400x1351px, dark and muted or near-neutral (mean RGB 85,50,65). File size 223080 bytes. Indexed features: Animation Stack; Palette 1 Last Light; Palette 2 Asiimov; Palette 3 Last Light; Palette 4 Asiimov; Fiesta Day 1; Fiesta Month December; Palette Mode Duo Indexed features returned for this V2 token: Animation Stack; Palette 1 Last Light; Palette 2 Asiimov; Palette 3 Last Light; Palette 4 Asiimov; Fiesta Day 1; Fiesta Month December; Palette Mode Duo.  [^S04][^S05][^S09]\n\nThe AB5D header candidate is token 472000390 (edition 390), currently indexed to 0xdd19308a9731cdecb67e0d80ca6823394208c045, which is one of the three linked addresses returned for username ab5d on 2026-09-19. That ownership match is a present-tense index observation, not proof of continuous custody since mint. Inspected media-proxy PNG is 2400x1351px, dark and muted or near-neutral (mean RGB 71,65,40). File size 206605 bytes. Indexed features: Animation Scan; Palette 1 Golden Hour; Palette 2 Energizer; Palette 3 Golden Hour; Palette 4 Spectrum; Fiesta Day 5; Fiesta Month February; Palette Mode Trio [^S08][^S04][^S09]\n\nMotion, interaction, and audio: Source contains a continuing-draw or audio/WebGL constructor. The inspected PNG is one frame. Live timing and soundtrack were not captured this session. The static PNGs document halt or preview states. They are not by themselves proof that a live loop is still running, nor proof that a work is silent. No soundtrack was heard from these pages during this session. [^S09][^S10][^S03]"
    },
    {
      "id": "significance",
      "heading": "Significance and limitations",
      "bodyMarkdown": "because unless until is project 472 by ixnayokay on 0x99a9b7c1116f9ceeb1652de04d5969cce509b069. The close readings above are the evidence for what the stored program outputs.\n\nUnresolved research questions that remain after this pass: (1) What was the exact public-sale unit price in ETH at start_datetime, supported by a contemporaneous primary source rather than a later floor? (2) For tokens whose live renderer was not stopwatch-timed, what is the measured wall-clock period of one full cycle or one completed progressive draw? (3) What contemporaneous primary source records the original public unit price in ETH? (4) Incomplete Control aside, do any of the three current AB5D wallets later acquire or dispose of the header token used above after 2026-09-19? [^S02][^S08][^S10]\n\nThis package is a draft for human review. Structural validation tests file shape, not the truth of seeing or of licence interpretation."
    }
  ],
  "examples": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "472000000",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000000",
      "sourceIds": [
        "S04",
        "S05",
        "S09"
      ],
      "selectionNote": "Specified candidate invocation 0.",
      "observationNote": "Inspected media-proxy PNG is 2400x1351px, mid-tone and muted or near-neutral (mean RGB 72,69,71). File size 484638 bytes. Indexed features: Animation Auto; Palette 1 Riverine; Palette 2 CMYK; Palette 3 Spectrum; Palette 4 Scorch; Fiesta Day 21; Fiesta Month October; Palette Mode Quartet"
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "472000001",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000001",
      "sourceIds": [
        "S04",
        "S05",
        "S09"
      ],
      "selectionNote": "Specified candidate invocation 1.",
      "observationNote": "Inspected media-proxy PNG is 2400x1351px, mid-tone and strongly coloured (mean RGB 113,74,29). File size 244360 bytes. Indexed features: Animation Julia; Palette 1 Golden Hour; Palette 2 Ember; Palette 3 Golden Hour; Palette 4 Ember; Fiesta Day 4; Fiesta Month April; Palette Mode Duo"
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "472000010",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000010",
      "sourceIds": [
        "S04",
        "S05",
        "S09"
      ],
      "selectionNote": "Specified candidate invocation 10.",
      "observationNote": "Inspected media-proxy PNG is 2400x1351px, mid-tone and muted or near-neutral (mean RGB 62,85,87). File size 184085 bytes. Indexed features: Animation Auto; Palette 1 CMYK; Palette 2 Midnight; Palette 3 CMYK; Palette 4 Riverine; Fiesta Day 18; Fiesta Month September; Palette Mode Trio"
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "472000020",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000020",
      "sourceIds": [
        "S04",
        "S05",
        "S09"
      ],
      "selectionNote": "Specified candidate invocation 20.",
      "observationNote": "Inspected media-proxy PNG is 2400x1351px, dark and muted or near-neutral (mean RGB 85,50,65). File size 223080 bytes. Indexed features: Animation Stack; Palette 1 Last Light; Palette 2 Asiimov; Palette 3 Last Light; Palette 4 Asiimov; Fiesta Day 1; Fiesta Month December; Palette Mode Duo"
    }
  ],
  "mediaIds": [],
  "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": "Commissioned by Phil; website publication authorized by Phil on 2026-09-17. No claim of line-by-line human fact checking.",
    "originalProseLicense": "CC0-1.0",
    "generation": {
      "schema": "ab5d-essay-generation/1",
      "model": "Grok 4.6",
      "displayName": "Grok 4.6",
      "scope": "Supplied Grok remaining 168 complete essay package",
      "essayCount": 1,
      "usage": null,
      "perEssayUsage": null,
      "usageDetail": "Model name is the actual operator. Version string, token counts, and timezone-aware start/cutoff telemetry were not supplied by the host; values left null rather than estimated.",
      "submittedUsage": {
        "provider": "xAI",
        "model": "Grok 4.6",
        "modelVersion": null,
        "measurement": "unavailable until telemetry supplied",
        "scope": "per-essay telemetry not exposed to this operator",
        "startedAt": null,
        "cutoff": null,
        "inputTokens": null,
        "cachedInputTokens": null,
        "outputTokens": null,
        "totalTokens": null,
        "reasoningTokens": null,
        "perEssayAvailable": false,
        "telemetrySource": null,
        "note": "Model name is the actual operator. Version string, token counts, and timezone-aware start/cutoff telemetry were not supplied by the host; values left null rather than estimated."
      },
      "importReview": "Structural package, identity, citation and build compatibility checks. Supplied prose preserved; no independent research audit."
    }
  },
  "codeInspection": {
    "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
    "locator": "projects_metadata.script where slug=_eq because-unless-until-by-ixnayokay",
    "sha256": "22015da8fcde43f4d2e5411e9b2bec9f10afb3a3a07e4638462b90503b7983eb",
    "retrievedAt": "2026-09-19T00:00:00+00:00",
    "method": "graphql-post-full-script-read",
    "executed": false,
    "chainBlock": null
  },
  "editorialExceptions": [],
  "presentation": {
    "editionSize": 650,
    "maximumEdition": 650,
    "mintDate": "2023-09-15T02:32:47+00:00",
    "mintDateMeaning": "first indexed mint",
    "mintDateLabel": "First mint",
    "artwork": {
      "project_id": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069-472",
      "token_id": "472000390",
      "invocation": 390,
      "owner_address": "0xdd19308a9731cdecb67e0d80ca6823394208c045",
      "preview_asset_url": "https://media-proxy.artblocks.io/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000390.png",
      "live_view_url": "https://generator.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000390",
      "canonicalUrl": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000390",
      "mode": "image",
      "copyrightStatus": "CC BY-NC-SA 4.0",
      "copyrightUrl": "https://creativecommons.org/licenses/by-nc-sa/4.0/",
      "displayBasis": "AB5D collection example under the artwork licence label stored on the project record; not a newly created derivative."
    }
  },
  "observationImages": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "472000000",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000000",
      "sourceIds": [
        "S04",
        "S05",
        "S09"
      ],
      "selectionNote": "Specified candidate invocation 0.",
      "observationNote": "Inspected media-proxy PNG is 2400x1351px, mid-tone and muted or near-neutral (mean RGB 72,69,71). File size 484638 bytes. Indexed features: Animation Auto; Palette 1 Riverine; Palette 2 CMYK; Palette 3 Spectrum; Palette 4 Scorch; Fiesta Day 21; Fiesta Month October; Palette Mode Quartet",
      "previewUrl": "https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000000.png",
      "liveUrl": "https://generator.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000000"
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "472000001",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000001",
      "sourceIds": [
        "S04",
        "S05",
        "S09"
      ],
      "selectionNote": "Specified candidate invocation 1.",
      "observationNote": "Inspected media-proxy PNG is 2400x1351px, mid-tone and strongly coloured (mean RGB 113,74,29). File size 244360 bytes. Indexed features: Animation Julia; Palette 1 Golden Hour; Palette 2 Ember; Palette 3 Golden Hour; Palette 4 Ember; Fiesta Day 4; Fiesta Month April; Palette Mode Duo",
      "previewUrl": "https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000001.png",
      "liveUrl": "https://generator.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000001"
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "472000010",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000010",
      "sourceIds": [
        "S04",
        "S05",
        "S09"
      ],
      "selectionNote": "Specified candidate invocation 10.",
      "observationNote": "Inspected media-proxy PNG is 2400x1351px, mid-tone and muted or near-neutral (mean RGB 62,85,87). File size 184085 bytes. Indexed features: Animation Auto; Palette 1 CMYK; Palette 2 Midnight; Palette 3 CMYK; Palette 4 Riverine; Fiesta Day 18; Fiesta Month September; Palette Mode Trio",
      "previewUrl": "https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000010.png",
      "liveUrl": "https://generator.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000010"
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "tokenId": "472000020",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000020",
      "sourceIds": [
        "S04",
        "S05",
        "S09"
      ],
      "selectionNote": "Specified candidate invocation 20.",
      "observationNote": "Inspected media-proxy PNG is 2400x1351px, dark and muted or near-neutral (mean RGB 85,50,65). File size 223080 bytes. Indexed features: Animation Stack; Palette 1 Last Light; Palette 2 Asiimov; Palette 3 Last Light; Palette 4 Asiimov; Fiesta Day 1; Fiesta Month December; Palette Mode Duo",
      "previewUrl": "https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000020.png",
      "liveUrl": "https://generator.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000020"
    },
    {
      "tokenId": "472000390",
      "chainId": 1,
      "contract": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069",
      "previewUrl": "https://media-proxy.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000390.png",
      "url": "https://www.artblocks.io/token/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000390",
      "liveUrl": "https://generator.artblocks.io/1/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/472000390"
    }
  ],
  "publication": {
    "date": "2026-09-20",
    "url": "https://ab5d.xyz/series/because-unless-until-by-ixnayokay/",
    "authorization": "Phil requested website publication on 2026-09-17.",
    "reviewSnapshot": "/docs/series-essays/production/because-unless-until-by-ixnayokay/record.json",
    "unresolvedResearchQuestionsRetained": true
  }
}
