{
  "schema": "ab5d-series-essay/1",
  "identity": {
    "chainId": 1,
    "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
    "projectId": 91,
    "slug": "planets-by-donnoh",
    "title": "planets",
    "artistCredit": "donnoh",
    "artistDossierUrls": [
      "https://ab5d.xyz/artists/donnoh/"
    ]
  },
  "revision": 2,
  "researchCutoff": "2026-09-18",
  "status": "published-with-research-limitations",
  "facts": [
    {
      "id": "edition-size",
      "topic": "work-context",
      "value": 512,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S01"
      ],
      "status": "verified",
      "note": "Indexed invocations 512 against max_invocations 512; page states a fixed edition of 512."
    },
    {
      "id": "project-id",
      "topic": "work-context",
      "value": 91,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "On-chain project id. The AB5D atlas position 90 is a catalogue index, not this."
    },
    {
      "id": "title-case",
      "topic": "work-context",
      "value": "planets",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S01",
        "S02"
      ],
      "status": "verified",
      "note": "Lower case in both the index and the page heading. Preserve."
    },
    {
      "id": "script-bytes",
      "topic": "construction",
      "value": 3791,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "Single script fragment."
    },
    {
      "id": "no-prng",
      "topic": "construction",
      "value": "no random number generator",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "Every parameter is a mapped value read directly from the token hash. The only use of randomness-like machinery is a Perlin noise call seeded with a fixed constant shared by the whole edition."
    },
    {
      "id": "overlapping-hash-windows",
      "topic": "construction",
      "value": "the hash accessor reads overlapping eight-bit windows, not successive bytes",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "Consecutive indices return windows offset by one hexadecimal character, so neighbouring parameters share four bits. Indices 0 through 62 are used, that is sixty-three overlapping windows from a sixty-four character hash. Whether this was intended is not established."
    },
    {
      "id": "orbit-spacing-rule",
      "topic": "construction",
      "value": "each orbit radius is computed from the contents of the orbit inside it",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S07"
      ],
      "status": "verified",
      "note": "Authored spacing rule accumulates geometric clearances from the preceding body."
    },
    {
      "id": "fixed-two-colour-palette",
      "topic": "construction",
      "value": "Charcoal and cream, with hash-selected inversion",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S04"
      ],
      "status": "verified",
      "note": "Selection rule does not establish an exact percentage."
    },
    {
      "id": "incidence-constants",
      "topic": "construction",
      "value": "Divisibility tests with constants 5, 20 and 100",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "Constants are not audited occurrence probabilities."
    },
    {
      "id": "rule-reproduction",
      "topic": "examples",
      "value": "three traits reproduced from the hash across all 512 tokens",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S04",
        "S02"
      ],
      "status": "reported",
      "note": "Submitted Claude metadata analysis; not independently reproduced by the coordinator."
    },
    {
      "id": "antimatter-binary-coincidence",
      "topic": "examples",
      "value": "27 antimatter tokens and 27 binary tokens with zero overlap",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S04"
      ],
      "status": "reported",
      "note": "Submitted Claude metadata analysis; not independently reproduced by the coordinator."
    },
    {
      "id": "singletons",
      "topic": "examples",
      "value": "one two-UFO token and one six-ring token",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S04"
      ],
      "status": "reported",
      "note": "Submitted Claude metadata analysis; not independently reproduced by the coordinator."
    },
    {
      "id": "motion",
      "topic": "examples",
      "value": "Orbital movement observed in four original renderers",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S05",
        "S02"
      ],
      "status": "verified",
      "note": "Two observed states per token; requested frame rate is 60, achieved frame rate not independently measured."
    },
    {
      "id": "rotation-invisible-in-stills",
      "topic": "examples",
      "value": "the Rotation trait cannot be seen in any still image",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S04",
        "S05",
        "S07"
      ],
      "status": "verified",
      "note": "Clockwise on 387 tokens and counterclockwise on 125. Direction is a property of motion only, so every published still of every token in this project carries no information about it."
    },
    {
      "id": "page-omits-animated-badge",
      "topic": "work-context",
      "value": "project page shows no animated label",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S01",
        "S05"
      ],
      "status": "verified",
      "note": "Submitted page observation, not evidence the artwork is static."
    },
    {
      "id": "first-token-minted",
      "topic": "mint",
      "value": "2021-06-12T21:45:03+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S03"
      ],
      "status": "verified",
      "note": "First indexed mint precedes activation; allocation type not established."
    },
    {
      "id": "activated",
      "topic": "mint",
      "value": "2021-06-12T22:39:12+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "Indexed activation event; does not independently establish public-sale opening."
    },
    {
      "id": "second-token-minted",
      "topic": "mint",
      "value": "2021-06-16T19:00:20+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "start_datetime carries the same value. This timestamp is what the project page renders as 17 June 2021 in a UTC+10 browser; in UTC it is 16 June."
    },
    {
      "id": "completed",
      "topic": "mint",
      "value": "2021-06-18T04:13:02+00:00",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "verified",
      "note": "Calendar date 18 June 2021 in UTC."
    },
    {
      "id": "second-to-complete-interval",
      "topic": "mint",
      "value": "1 day 9 hours 12 minutes 42 seconds",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "inferred",
      "note": "Arithmetic on the two indexed timestamps, covering invocations 1 through 511. Not a verified public sellout time."
    },
    {
      "id": "current-price",
      "topic": "mint",
      "value": "50000000000000000 wei (0.05 ETH)",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02"
      ],
      "status": "reported",
      "note": "Current indexed setting, not independently verified opening price."
    },
    {
      "id": "audio",
      "topic": "examples",
      "value": "No audio mechanism found in inspected artist script",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S05",
        "S02"
      ],
      "status": "inferred",
      "note": "No coordinator audio audition claimed."
    },
    {
      "id": "interaction",
      "topic": "examples",
      "value": "none",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S01"
      ],
      "status": "verified",
      "note": "The script registers no event listeners and the page documents no controls."
    }
  ],
  "rights": {
    "artwork": {
      "reportedLabel": "CC BY-NC 4.0",
      "category": "creative-commons",
      "termsUrl": "https://creativecommons.org/licenses/by-nc/4.0/",
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S11"
      ],
      "note": "Current indexed label CC BY-NC 4.0. The index itself supplies no terms URL; the canonical deed matching that label is independently identified. Historical label changes remain unverified.",
      "unresolvedConflicts": []
    },
    "code": {
      "reportedLabel": null,
      "category": "unknown",
      "termsUrl": null,
      "observedAt": "2026-09-18",
      "sourceIds": [
        "S02",
        "S01"
      ],
      "note": "No licence statement accompanies the artist script. Fully on-chain storage establishes readability, not redistribution rights.",
      "unresolvedConflicts": []
    },
    "thirdParty": [
      {
        "component": "p5.js",
        "reportedLabel": "LGPL 2.1",
        "category": "custom",
        "termsUrl": "https://raw.githubusercontent.com/processing/p5.js/1.0.0/license.txt",
        "observedAt": "2026-09-18",
        "sourceIds": [
          "S12"
        ],
        "note": "Versioned upstream p5.js 1.0.0 licence identifies LGPL 2.1; this does not establish artist-script rights."
      }
    ]
  },
  "sections": [
    {
      "id": "work-context",
      "heading": "The work and its context",
      "bodyMarkdown": "planets is Art Blocks project 91 on the contract at `0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270`, on Ethereum mainnet, credited to donnoh by both the index and the live project page. The indexed record returns 512 invocations against a maximum of 512, a declared dependency of `p5@1.0.0`, a square aspect ratio and a curation status of factory [^S02]. The AB5D atlas position 90 is a catalogue index and is not the project ID, which is 91.\n\nThe artist's statement is one sentence: \"A minimal and geometric interpretation of a planetary system\" [^S01]. It provides a concise point of departure. The work draws a central star, a set of concentric orbit circles, and a small filled disc travelling on each one, in two colours on a flat ground. The seven traits, Type, Ufos, Moons, Rings, Binary, Orbits and Rotation, are all counts or binary states, but they do not exhaust its geometric relationships [^S01][^S04].\n\nThe limited vocabulary makes small differences conspicuous: the size of a central disc, the distance between two orbit lines, and the appearance of an elliptical ring all alter the balance of an otherwise spare field. [^S05][^S07]\n\nTwo things need establishing before the essay proceeds, because the platform page states neither. The work is animated: the planets move continuously in the observed original renderer, and the code requests sixty frames per second without establishing an achieved playback rate [^S05]. And the direction of that orbit is a per-token trait, clockwise on 387 tokens and counterclockwise on 125 [^S04], which is a property only visible in motion and therefore invisible in every still image of this project ever published, including the platform's own previews."
    },
    {
      "id": "conception",
      "heading": "Conception and development",
      "bodyMarkdown": "The inspected collection page supplies a brief artist statement. The index has no linked interview and points to a social profile as the project website. These findings limit the present account; they do not prove that no development narrative exists elsewhere. The discussion below therefore distinguishes code-derived design observations from documented artistic intention. [^S01][^S02]\n\nWhat can be said about the design comes from the code, and one decision stands out. The program does not choose a look; it chooses a system and then draws it honestly. Composition is expressed through a spacing rule. Each orbit is computed from the one inside it by adding the previous planet's radius, the average of its ring dimensions, the clearance its moon needs, and a fixed gap. The spacing you see is therefore a consequence of what is in the system through an authored arrangement rule, which is why a token with many ringed and mooned planets spreads wide and a token with bare planets sits tight. [^S02]\n\nThe two colours are fixed for the whole edition: a dark charcoal and a warm cream. A token is either dark on cream or cream on dark, and which way round is one hash byte. The edition calls the inverted case antimatter [^S04]. There is no palette variation of any other kind anywhere in the project, which puts all the visible difference into geometry and count.\n\nThe one element that breaks the register is the UFO. A planet can be replaced by a small flying saucer, drawn as a dome, a hull and three landing legs. Its selection uses a remainder test with a divisor of one hundred; that is not an audited one-percent incidence. Against a minimal geometric statement about planetary systems it is a joke, and it is the only figurative thing in the project. [^S02]"
    },
    {
      "id": "construction",
      "heading": "How the work was constructed",
      "bodyMarkdown": "The artist script was retrieved from the indexed project record by an HTTP POST to the public GraphQL endpoint, filtered on the exact slug and corroborated against the contract address and project ID returned in the same response [^S02]. It is 3,791 bytes and hashes to SHA-256 `5a1cb34c09372df8f6e02010b4ea14d634f15500d8ff722d0e125a453f768c52`. The record reports a script count of 1 and the single `scripts` row reproduces the `script` field exactly. This was an index retrieval, not a direct read of contract storage, and no block reference was pinned. The whole program was read; what follows describes it without reproducing it.\n\nThere is no random number generator. The program reads the token hash directly, and every parameter is a mapped hash value. But the way it reads the hash is worth setting out carefully, because it is not what it appears to be. [^S02]\n\nThe accessor takes an index, adds two to skip the leading `0x`, and returns the two characters at that offset. Consecutive indices therefore return windows that overlap by one hexadecimal character, not successive bytes. Index 0 returns the first byte; index 1 returns the second half of the first byte joined to the first half of the second; index 2 returns the second byte. The program uses indices 0 through 62, so it reads sixty-three overlapping eight-bit windows out of a sixty-four character hash rather than thirty-two independent bytes. [^S02]\n\nThe consequence is that neighbouring parameters are not independent. Planet radii are read from indices 2 through 11 and planet speeds from indices 12 through 21, so adjacent planets in the same system share four bits with each other. Whether that was intended is not established; what can be said is that the parameters of this work are correlated by construction in a way that thirty-two clean byte reads would not be. [^S02]\n\nThe values are put to work as follows. Index 0 sets the star radius and, by its remainder modulo four, the direction of time. Index 1 sets the orbit count, mapped from ten down to one, so a low byte gives a crowded system and a high byte gives a lonely one. Index 6 sets the colour inversion, index 62, the last byte of the hash, sets the binary star. Indices 2 through 11 give planet radii, 12 through 21 planet speeds, 32 through 41 and 42 through 51 the two axes of each planet's ring ellipse, and 52 through 61 the ring rotation. The same index that sizes a ring also decides whether the planet has a ring at all, whether it is a UFO, and, at another index, whether it has a moon. [^S02]\n\nThe program uses divisibility tests with constants of five for rings and moons, twenty for binary stars and colour inversion, and one hundred for UFOs. These are selection rules, not exact probabilities: the hash-derived integers occupy a bounded range, and several decisions reuse overlapping inputs. [^S02]\n\nDrawing is a single scene redrawn each frame; sixty frames per second is the requested rate. The background is repainted, the origin moved to the centre, the star drawn, and then each planet drawn in turn: its orbit circle as a thin outline, the planet as a filled disc positioned by cosine and sine of an accumulated frame-based time variable multiplied by that planet's speed, plus a speed-dependent phase offset, its ring as a rotated ellipse if it has one, and its moon as a tiny disc circling it at a speed derived from Perlin noise. The noise seed is a fixed constant shared by the whole edition, so moon speed is a deterministic function of planet speed rather than an independent draw. [^S02]\n\nA binary system divides the star radius by 2.1 and draws two stars circling the centre in opposition. The UFO replaces the planet disc with a drawn saucer and enforces a minimum size so that it stays legible. [^S02]\n\nThere is no loop disable anywhere in the program. planets runs until the tab is closed. [^S02]"
    },
    {
      "id": "mint",
      "heading": "The mint",
      "bodyMarkdown": "The indexed record separates four events [^S02]. The first token was minted at 2021-06-12T21:45:03Z. The project was activated at 2021-06-12T22:39:12Z, fifty-four minutes later. The second token was minted at 2021-06-16T19:00:20Z, and `start_datetime` carries that same value. The project completed at 2021-06-18T04:13:02Z. \n\nThe first mint precedes the recorded activation. The token record for invocation 0 confirms the timestamp, and its current owner is the artist address recorded on the project [^S03], so the artist still holds their own first output. This current ownership observation does not establish the original allocation.\n\nThe nearly four day gap between activation and the second mint is the more useful figure, and it makes the usual point concretely: the activation timestamp cannot by itself establish when public purchasing began. [^S02]\n\nThe interval from the second indexed mint to completion is 1 day, 9 hours, 12 minutes and 42 seconds, covering invocations 1 through 511. It is not presented as a public sale duration, because the index does not establish when minting opened and `start_datetime` duplicates the second mint rather than marking an opening. [^S02]\n\nThe record reports a price of 50000000000000000 wei, that is 0.05 ETH [^S02], recorded as a current value rather than as the price paid at mint; no primary announcement of an original price was located.\n\nThe AB5D holding, invocation 359, was minted at 2021-06-18T02:18:34Z [^S03], about two hours before the project completed."
    },
    {
      "id": "rights",
      "heading": "Copyright and licensing",
      "bodyMarkdown": "The current project index labels the artwork CC BY-NC 4.0 but supplies no licence link. The matching Creative Commons deed permits sharing and adaptation subject to attribution, indication of changes and a noncommercial condition. The label is a current indexed observation; the research does not reconstruct earlier terms or establish when this label was first adopted. [^S02][^S11]\n\nThe artist program and its dependencies require separate treatment. No independent reuse grant for donnoh's script was recovered in the inspected project material. Its availability for reading does not supply such a grant. The declared p5.js 1.0.0 dependency has a versioned upstream licence file identifying LGPL 2.1. That library record does not automatically license the artist's own program on the same terms. [^S02][^S12]\n\nA still reproduction records one moment of an animated work. Identifying it as a preview or captured frame helps a reader understand the evidence, but the present research does not establish a special additional licence for still frames. AB5D's CC0 dedication applies to its original essay prose; it does not replace the separately reported artwork, artist-code or library terms. [^S05][^S11][^S12]"
    },
    {
      "id": "examples",
      "heading": "Close reading of examples",
      "bodyMarkdown": "The comparison uses editions 359, 496, 11 and 10. Their identities were checked against indexed token records, and the coordinator inspected each original renderer in two visibly different states. The observations establish motion without claiming a measured frame rate or a timed performance test. The submitted preview observations and telemetry remain separately attributed in the research record. [^S03][^S05][^S07][^S09]\n\nIn #359, a cream central disc sits within seven delicate concentric paths on a charcoal square. Small cream bodies interrupt the lines, and a tiny neighbouring satellite adds a second scale of movement. The system occupies a comparatively compact area, leaving a wide dark margin. That empty space is active in the composition: it makes the pale lines seem especially fine and gives each moving body room to be followed. As the bodies change position, a temporary grouping on one side disperses and another grouping forms elsewhere. The centre remains visually steady while the distribution around it changes. This is the AB5D collection example identified through the linked-wallet record, rather than an arbitrary illustration of the series. [^S03][^S05][^S10]\n\nThe interest of #359 is not exhausted by counting its orbits. A circle offers a complete path to the eye, but the moving dot occupies only one position on it. Looking can alternate between reading the whole nested structure and following an individual body. The central disc supplies a strong anchor for both modes. Its filled area contrasts with the almost weightless lines, while the smaller discs prevent those lines from remaining a purely abstract diagram. This account describes the observed image; the orbit-spacing calculation explains part of its structure without making the visual experience reducible to arithmetic. [^S02][^S05]\n\nIn #496, the arrangement is also compact, with five fine paths around a cream centre. Two moving marks resolve into small saucers with domed tops and fine projections beneath. Another body carries a narrow elliptical ring. The saucers are significant at the scale of the individual mark: they change the drawing from a vocabulary of circles and ellipses into a recognisable image of an imagined craft. Yet they obey the same orbital organisation as the simpler bodies. In the inspected states their positions change, so any description locating them permanently at the top or right would mistake a moment for a stable feature. The quiet visual joke is my reading of this juxtaposition, not a recovered statement of intention. [^S02][^S07]\n\nIn #11, a warm cream field reverses the relation between line and ground. The centre is a dark disc, the five paths are fine dark outlines, and two bodies carry tilted rings. The broad pale margin makes the arrangement resemble a diagram drawn on a sheet more readily than lights against a dark field. The central shape now gathers darkness rather than emitting the brightest area. Comparing it with #496 reveals why inversion matters beyond a trait label: the same distinction between a filled centre and delicate paths acquires a different apparent material character. This is a perceptual interpretation grounded in the two inspected originals. [^S07]\n\nIn #10, ten paths spread across most of the square. Several bodies have rings whose angles range from almost circular outlines to narrow ellipses. The inner paths have visibly wider separations than the closely spaced outer paths, and the central disc appears small beside the full extent of the system. The eye has more routes to follow and less surrounding emptiness in which to rest. Between the two observed states, the moving bodies substantially redistribute themselves around these fixed paths. The composition can briefly suggest a diagonal or a loose cluster, then loosen that relation as movement continues. [^S07]\n\nThese four examples support comparison of scale, inversion, ring shapes and figurative interruption. They do not establish the frequency of every visual outcome or the absolute limits of the edition. The submitted complete-edition metadata sweep and three trait-rule reproductions are useful supplementary checks, but they are distinct from looking at the original artworks. A metadata count cannot supply an unobserved colour, movement or compositional effect. [^S04][^S07]"
    },
    {
      "id": "significance",
      "heading": "Significance and limitations",
      "bodyMarkdown": "planets makes an authored system visible through a restrained graphic vocabulary. Filled discs give the eye points to follow; fine circles make their routes legible; a fixed centre holds the arrangement together while the peripheral balance changes. The palette is limited, but the comparison shows that inversion, scale and the spacing of paths can substantially change the experience. These are compositional decisions implemented as rules. [^S02][^S05][^S07]\n\nThe small saucers in #496 are especially revealing. They retain the structure of an orbiting body while introducing a recognisable figure into otherwise elementary geometry. In #10, by contrast, interest gathers around the relation between the broad nested field and the varying ellipses attached to its moving points. The work can accommodate both readings without requiring a different underlying visual language. [^S02][^S07]\n\nMotion matters to its preservation. A still can show the paths and one arrangement of bodies, but it cannot demonstrate the direction of their travel or the temporary alignments that form as they move. The original renderer is therefore more informative than a trait list beside a preview. The submitted metadata analysis corroborates some code-derived traits, but it is supplementary evidence, not a substitute for watching the work or a proof of historical script identity. [^S04][^S05][^S07]\n\nUnresolved research questions remain: recover a fuller primary account of the project's development; establish the original public price and allocation history; trace historical artwork terms and any separate artist-code grant; and compare the indexed script with a pinned chain retrieval. The shared bits in neighbouring hash windows are observable in the code, but the research does not establish whether that relationship was a deliberate artistic choice. These limits concern what can presently be documented, rather than a claim that no further records exist. [^S01][^S02]"
    }
  ],
  "examples": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "91000359",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000359",
      "sourceIds": [
        "S03",
        "S05",
        "S07",
        "S10"
      ],
      "selectionNote": "Selected for comparison of original geometry, colour inversion, rings or figurative elements. Current coordinator visual evidence is separately recorded.",
      "observationNote": "Cream central disc and seven delicate concentric orbit circles on charcoal square. Small cream bodies lie on each orbit; one has a tiny neighbouring satellite. Broad empty charcoal margin. Across two observations the orbiting bodies visibly changed position while centre and circles remained stable. Elapsed interval and frame rate not measured. Sound not auditioned. No controls tested."
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "91000496",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000496",
      "sourceIds": [
        "S04",
        "S07"
      ],
      "selectionNote": "Selected for comparison of original geometry, colour inversion, rings or figurative elements. Current coordinator visual evidence is separately recorded.",
      "observationNote": "Compact cream system on charcoal with wide empty margins. Five thin concentric orbital paths surround a filled central disc. Two orbiting marks visibly resemble tiny saucers with domed tops and fine projections below; another has a narrow ellipse around its disc. Across two screenshots the bodies changed angular position while paths and centre remained stable. Elapsed interval and frame rate not measured. No sound audition or control test claimed."
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "91000011",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000011",
      "sourceIds": [
        "S04",
        "S07"
      ],
      "selectionNote": "Selected for comparison of original geometry, colour inversion, rings or figurative elements. Current coordinator visual evidence is separately recorded.",
      "observationNote": "Warm cream square with charcoal central disc, five fine concentric orbital paths and small dark bodies. Two bodies carry outlined elliptical rings. The thin dark lines read as diagram marks against the pale field. Across two screenshots the body positions changed substantially while the concentric field remained stationary. Elapsed interval and frame rate not measured. No sound audition or control test claimed."
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "91000010",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000010",
      "sourceIds": [
        "S03",
        "S04",
        "S07",
        "S09"
      ],
      "selectionNote": "Selected for comparison of original geometry, colour inversion, rings or figurative elements. Current coordinator visual evidence is separately recorded.",
      "observationNote": "Ten concentric orbital paths span most of the charcoal square, with a small cream centre. Cream discs vary in size; several are encircled by elliptical rings at visibly different tilts, including near-circular and very narrow rings. Wide separations between inner paths contrast with tightly spaced outer paths. Two screenshots show moving bodies around fixed paths. Elapsed interval and frame rate not measured. No sound audition or control test claimed."
    }
  ],
  "mediaIds": [],
  "provenance": {
    "operator": "Phil (AB5D coordinator), via the Claude desktop application",
    "agent": "Claude in Cowork mode, Claude Agent SDK session",
    "model": "Claude (submitted claude-opus-5), reviewed by OpenAI Codex",
    "modelVersion": "claude-opus-5 (session-reported exact model id; the routing label on this batch was 'claude', which is not a model identifier)",
    "tools": [
      "Art Blocks public GraphQL index over HTTP POST",
      "browser pane on the operator's computer for page rendering, text extraction, image inspection, live renderer execution and canvas sampling",
      "local reproduction of three trait rules read from the script, run against all 512 token hashes",
      "SHA-256 over the retrieved script bytes computed in the browser using the Web Crypto API",
      "local shell and file tools for package assembly and validation"
    ],
    "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",
    "coordinatorRevision": {
      "model": "OpenAI Codex",
      "scope": "Code interpretation corrections, independent original visual observations, rights source inspection, fresh holding verification and editorial revision",
      "tokenUsage": null
    },
    "generation": {
      "schema": "ab5d-essay-generation/1",
      "model": "Claude (submitted claude-opus-5), reviewed by OpenAI Codex",
      "displayName": "Claude (submitted model: claude-opus-5), reviewed and revised by OpenAI Codex",
      "scope": "One Claude planets essay, revised after independent code reading, four original visual observations, rights-source inspection and fresh collection ownership check",
      "essayCount": 1,
      "usage": null,
      "perEssayUsage": null,
      "usageDetail": "Claude supplied no token telemetry. Review usage is not separately measured. Submitted model identifier is retained without independent runtime verification.",
      "contributors": {
        "operator": "Phil (AB5D coordinator), via the Claude desktop application",
        "agent": "Claude in Cowork mode, Claude Agent SDK session",
        "model": "claude-opus-5",
        "modelVersion": "claude-opus-5 (session-reported exact model id; the routing label on this batch was 'claude', which is not a model identifier)",
        "tools": [
          "Art Blocks public GraphQL index over HTTP POST",
          "browser pane on the operator's computer for page rendering, text extraction, image inspection, live renderer execution and canvas sampling",
          "local reproduction of three trait rules read from the script, run against all 512 token hashes",
          "SHA-256 over the retrieved script bytes computed in the browser using the Web Crypto API",
          "local shell and file tools for package assembly and validation"
        ],
        "humanEditorialInvolvement": "None. No human reviewed, edited or fact-checked the prose before submission. Status is draft-for-human-review.",
        "originalProseLicense": "CC0-1.0",
        "coordinatorRevision": {
          "model": "OpenAI Codex",
          "scope": "Code interpretation corrections, independent original visual observations, rights source inspection, fresh holding verification and editorial revision",
          "tokenUsage": null
        }
      }
    }
  },
  "codeInspection": {
    "url": "https://artblocks-mainnet.hasura.app/v1/graphql",
    "locator": "POST projects_metadata where slug _eq planets-by-donnoh, selecting script and scripts{index script}; identity corroborated by contract_address 0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270 and project_id 91",
    "sha256": "5a1cb34c09372df8f6e02010b4ea14d634f15500d8ff722d0e125a453f768c52",
    "retrievedAt": "2026-09-18T00:46:00+00:00",
    "method": "Index retrieval over HTTPS, not a direct read of contract storage. SHA-256 computed over the UTF-8 bytes of the returned script field. The single indexed script fragment reproduces the script field exactly.",
    "executed": true,
    "chainBlock": null
  },
  "editorialExceptions": [
    {
      "id": "rotation-invisible-in-stills",
      "status": "resolved",
      "reviewer": "OpenAI Codex coordinator",
      "reviewedAt": "2026-09-18T05:25:55.691626+00:00",
      "resolution": "Live original selected for publication header; four original animations independently observed.",
      "submittedReason": "One of the edition's seven traits, Rotation, is a property of motion only and cannot be seen in any still image. If the dossier publishes a still with a trait list beside it, the Rotation value should be marked as visible only in the live view, or the header should use the live renderer.",
      "reason": "Live original selected for publication header; four original animations independently observed."
    },
    {
      "id": "platform-page-omits-animated-badge",
      "status": "resolved",
      "reviewer": "OpenAI Codex coordinator",
      "reviewedAt": "2026-09-18T05:25:55.691626+00:00",
      "resolution": "Recast as a disclosed research limitation or corrected supported statement, rather than a waiver of required evidence.",
      "submittedReason": "The project page carries no animated label although the work animates continuously at sixty frames per second. The same omission appears on three other projects in this batch.",
      "reason": "Recast as a disclosed research limitation or corrected supported statement, rather than a waiver of required evidence."
    },
    {
      "id": "rights-terms-missing",
      "status": "resolved",
      "reviewer": "OpenAI Codex coordinator",
      "reviewedAt": "2026-09-18T05:25:55.691626+00:00",
      "resolution": "Matching CC deed inspected and linked; historical adoption remains unverified.",
      "submittedReason": "A CC BY-NC 4.0 label is reported with link_to_license null and no terms document located. The website of record is a social profile, so there is no artist-controlled page to check.",
      "reason": "Matching CC deed inspected and linked; historical adoption remains unverified."
    },
    {
      "id": "code-rights-unknown",
      "status": "resolved",
      "reviewer": "OpenAI Codex coordinator",
      "reviewedAt": "2026-09-18T05:25:55.691626+00:00",
      "resolution": "Recast as a disclosed research limitation or corrected supported statement, rather than a waiver of required evidence.",
      "submittedReason": "No licence statement was located for the artist script.",
      "reason": "Recast as a disclosed research limitation or corrected supported statement, rather than a waiver of required evidence."
    },
    {
      "id": "artist-record-gap",
      "status": "resolved",
      "reviewer": "OpenAI Codex coordinator",
      "reviewedAt": "2026-09-18T05:25:55.691626+00:00",
      "resolution": "Removed claim that no artist account exists. Present research recovered only the brief project statement; this limit is explicit.",
      "submittedReason": "One sentence of artist statement is the entire record of intent. No interview exists in the index, none was located, and the website of record is a social profile.",
      "reason": "Removed claim that no artist account exists. Present research recovered only the brief project statement; this limit is explicit."
    },
    {
      "id": "original-price-unverified",
      "status": "resolved",
      "reviewer": "OpenAI Codex coordinator",
      "reviewedAt": "2026-09-18T05:25:55.691626+00:00",
      "resolution": "Recast as a disclosed research limitation or corrected supported statement, rather than a waiver of required evidence.",
      "submittedReason": "The 0.05 ETH figure is the currently configured project price, not a verified original mint price.",
      "reason": "Recast as a disclosed research limitation or corrected supported statement, rather than a waiver of required evidence."
    },
    {
      "id": "overlapping-hash-windows",
      "status": "resolved",
      "reviewer": "OpenAI Codex coordinator",
      "reviewedAt": "2026-09-18T05:25:55.691626+00:00",
      "resolution": "Recast as a disclosed research limitation or corrected supported statement, rather than a waiver of required evidence.",
      "submittedReason": "The hash accessor reads overlapping eight-bit windows rather than successive bytes, so neighbouring parameters share bits. Reported as observed with no claim about intent. Anyone reimplementing or reasoning about parameter independence must account for it.",
      "reason": "Recast as a disclosed research limitation or corrected supported statement, rather than a waiver of required evidence."
    },
    {
      "id": "antimatter-binary-coincidence",
      "status": "resolved",
      "reviewer": "OpenAI Codex coordinator",
      "reviewedAt": "2026-09-18T05:25:55.691626+00:00",
      "resolution": "Recast as a disclosed research limitation or corrected supported statement, rather than a waiver of required evidence.",
      "submittedReason": "The edition contains 27 antimatter and 27 binary tokens with zero overlap. The matching counts are coincidence and the code contains no coupling rule. Recorded so the relationship is not published as a design feature.",
      "reason": "Recast as a disclosed research limitation or corrected supported statement, rather than a waiver of required evidence."
    }
  ],
  "revisionNotes": [
    "Coordinator factual repair: distinguish requested frame rate from observation, frame time from elapsed time, selection constants from probabilities, and code-based interpretation from artist intention. Original author credit retained. Rights and examples still require editorial integration before publication."
  ],
  "presentation": {
    "editionSize": 512,
    "maximumEdition": 512,
    "mintDate": "2021-06-12T21:45:03+00:00",
    "mintDateMeaning": "First indexed mint",
    "artwork": {
      "project_id": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270-91",
      "token_id": "91000359",
      "invocation": 359,
      "owner_address": "0xdd19308a9731cdecb67e0d80ca6823394208c045",
      "preview_asset_url": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000359.png",
      "live_view_url": "/series/planets-by-donnoh/artwork.html",
      "canonicalLiveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000359",
      "canonicalUrl": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000359",
      "mode": "live",
      "copyrightStatus": "CC BY-NC 4.0 (indexed label)",
      "copyrightUrl": "https://creativecommons.org/licenses/by-nc/4.0/",
      "interactionNote": "Live artwork.",
      "displayBasis": "remote platform media, embedded from the Art Blocks live renderer; nothing redistributed in this package"
    }
  },
  "observationImages": [
    {
      "id": "E01",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "91000359",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000359",
      "sourceIds": [
        "S03",
        "S05",
        "S07",
        "S10"
      ],
      "selectionNote": "Selected for comparison of original geometry, colour inversion, rings or figurative elements. Current coordinator visual evidence is separately recorded.",
      "observationNote": "Cream central disc and seven delicate concentric orbit circles on charcoal square. Small cream bodies lie on each orbit; one has a tiny neighbouring satellite. Broad empty charcoal margin. Across two observations the orbiting bodies visibly changed position while centre and circles remained stable. Elapsed interval and frame rate not measured. Sound not auditioned. No controls tested.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000359.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000359"
    },
    {
      "id": "E02",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "91000496",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000496",
      "sourceIds": [
        "S04",
        "S07"
      ],
      "selectionNote": "Selected for comparison of original geometry, colour inversion, rings or figurative elements. Current coordinator visual evidence is separately recorded.",
      "observationNote": "Compact cream system on charcoal with wide empty margins. Five thin concentric orbital paths surround a filled central disc. Two orbiting marks visibly resemble tiny saucers with domed tops and fine projections below; another has a narrow ellipse around its disc. Across two screenshots the bodies changed angular position while paths and centre remained stable. Elapsed interval and frame rate not measured. No sound audition or control test claimed.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000496.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000496"
    },
    {
      "id": "E03",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "91000011",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000011",
      "sourceIds": [
        "S04",
        "S07"
      ],
      "selectionNote": "Selected for comparison of original geometry, colour inversion, rings or figurative elements. Current coordinator visual evidence is separately recorded.",
      "observationNote": "Warm cream square with charcoal central disc, five fine concentric orbital paths and small dark bodies. Two bodies carry outlined elliptical rings. The thin dark lines read as diagram marks against the pale field. Across two screenshots the body positions changed substantially while the concentric field remained stationary. Elapsed interval and frame rate not measured. No sound audition or control test claimed.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000011.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000011"
    },
    {
      "id": "E04",
      "chainId": 1,
      "contract": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
      "tokenId": "91000010",
      "url": "https://www.artblocks.io/token/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000010",
      "sourceIds": [
        "S03",
        "S04",
        "S07",
        "S09"
      ],
      "selectionNote": "Selected for comparison of original geometry, colour inversion, rings or figurative elements. Current coordinator visual evidence is separately recorded.",
      "observationNote": "Ten concentric orbital paths span most of the charcoal square, with a small cream centre. Cream discs vary in size; several are encircled by elliptical rings at visibly different tilts, including near-circular and very narrow rings. Wide separations between inner paths contrast with tightly spaced outer paths. Two screenshots show moving bodies around fixed paths. Elapsed interval and frame rate not measured. No sound audition or control test claimed.",
      "previewUrl": "https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000010.png",
      "liveUrl": "https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/91000010"
    }
  ],
  "publication": {
    "date": "2026-09-18",
    "url": "https://ab5d.xyz/series/planets-by-donnoh/",
    "authorization": "Phil requested website publication on 2026-09-17.",
    "reviewSnapshot": "/docs/series-essays/production/planets-by-donnoh/record.json",
    "unresolvedResearchQuestionsRetained": true
  }
}
