# Research notes: 8 by Bard Ionson

Status: draft-for-human-review. No human reviewed, edited or fact-checked this package.

Submission state: **complete-draft**.

## Per-essay checks report

| Check | Report |
| --- | --- |
| Identity and package | Chain 1, contract `0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270`, project ID 179, slug `8-by-bard-ionson`, title `8`, artist credit spelled exactly as the roster spells it, with the ring diacritic on the first name. Identity checked against the returned composite key `...-179`, not against the atlas position 176. All seven required files present: essay.md, record.json, sources.json, evidence.json, research-notes.md, presentation.json, usage.json. |
| Structure and citations | 4,818 words in the seven canonical sections, in the required order, generated into essay.md from `record.json.sections` by the same expression the supplied validator uses, so Markdown and JSON cannot drift. Eight unique source IDs, all cited in the body and all resolving in both directions. Citations are placed at the paragraphs carrying the supported claims; paragraphs combining index data with live observation carry both IDs. Reviewed paragraph by paragraph for support; interpretation is marked as interpretation in the two places it appears (the feature-capture inference and the golden-ratio observation about the auction rungs). |
| Source research | Eight materially cited inspected sources, each with a specific locator set: project page panels quoted by panel name; GraphQL retrievals located by operation, variables and returned field; script findings located by function; licence terms located by clause; live observations located by token and observed state. Primary bodies inspected rather than snippets: the project page was expanded and read including its four collapsible panels, the licence document was read in full, and the artist site home and portfolio pages were read. Remaining access gaps: no dated artist development account for this project was located; the indexed interview field is null; the website of record 404s; the operative NFT License legal text is unreachable; the feature extractor that produced the published traits was not located. Those gaps are recorded in research notes and are not counted as sources. |
| Code | Retrieved by HTTP POST, named operation `ProjectBySlug`, variables `{"slug":"8-by-bard-ionson"}`, selecting `script` and `scripts{index script}`. 23,729 bytes; three fragments concatenating in index order to the script field exactly. Digest `f8916e0a1399485e9c786109347b222a2fde0a2a7065bbda1744fd4b46fdda96`, computed with the Web Crypto API over the returned UTF-8 bytes, identical across two separate retrievals in this session, and identical in `record.json.codeInspection.sha256` and `evidence.json.codeSha256` because both are written from the same measured value. Full reading covered seed handling, parameter selection, rendering sequence, time and interaction behaviour and external dependencies; each is itemised in `evidence.json.codeInspection.fullReadCoverage`. Execution disclosure: the program was read from text, and separately executed by the official Art Blocks renderer during the observations; it was not run by the researcher in any other environment. No artist code is reproduced in this package. |
| Visual evidence | Five distinct token identities observed in the original renderer, with five observation IDs V01 to V05, each carrying chain, contract, token ID, canonical URL, inspected renderer URL, observer, method, wall-clock window and concrete observations. Two sustained close readings: V01 (token 179000018, lifecycle plus control testing) and V02 (token 179000000, full running-to-halted lifecycle with a predicted halt frame). Observer is this agent throughout; no coordinator or third-party observation is incorporated. Motion: four tokens observed halting, three of them caught in transition, and one token observed still running after 21.1 seconds as a control for the never-halting classification. Controls: click, C, F and D exercised with physical key and mouse input; space confirmed via a dispatched event after physical input was intercepted by the browser pane; E, X, W, A and S not tested. Audio: not auditioned, and recorded as silent by construction rather than as blocked autoplay, on the evidence that the document holds no audio or video elements, the renderer loads only p5 1.0.0 with no sound add-on, and the program contains no audio call. |
| Header | Complete linked wallet set refreshed this session from the official Hasura endpoint and cross-read on the public profile page; three addresses returned and no fixed count assumed. Every one of the 128 token owner addresses was compared against all three. Exactly one match: token 179000018, owner `0xdd19308a9731cdecb67e0d80ca6823394208c045`. No collection gap. Inspected media is the original renderer; the fallback still and the artist's own display note are recorded, and the display basis is the artist's statement rather than a rights grant. |
| History and rights | Five events kept distinct: first mint, activation, public opening, the project page's locally rendered release date, and completion. Sale duration 655.4 days with both endpoints named and the calculation given. The Dutch auction ladder is reported from the project page; its rung start times are marked as derived from the published opening and step rather than sourced from on-chain price changes. Current index price 0.18 ETH is presented as a current observation and explicitly distinguished from a later repricing. Rights domains kept separate: artwork (reported NFT 2.0, terms URL null and explained), code (in-code CC-BY-NC-SA claim, conflicting), and two third-party components. Unknowns are recorded as researched findings, not replaced with plausible guesses. |
| Provenance and usage | Original author recorded as Anthropic / claude-opus-5 with the routing label explicitly rejected as a model identifier. No revisions; the revision note states what a later reviser must preserve and record separately. Usage counts are null with the reason given, measurement scope labelled batch, cached input and reasoning left null rather than folded into a total. `startedAt` is timezone-aware; `cutoff` is null with an explanation rather than a manufactured midnight, so the at-or-after ordering requirement is not violated. |
| Validator | Command, identity, exit status and unedited output below. |
| Submission state | **complete-draft**. The supplied validator passes and the research requirements above are met. Seven editorial exceptions are recorded for coordinator decision; none of them is an unmet research requirement, and all concern what the dossier should publish rather than what was verified. |

## Validator

Command actually executed, from the extracted pack root:

```sh
python3 scripts/validate_series_essays.py submission/8-by-bard-ionson
```

Supplied validator identity: `scripts/validate_series_essays.py` as distributed in this pack, SHA-256 `3b6273b6edaa9eee0f7641f365d4d243f15977e0acdd85bac922a40f157472ca`, 61 lines. Roster dependencies `data/atlas.json` and `data/ab500-contracts.json` were present at their required paths relative to the bundle root. No substitute or self-written validator was used.

Exit status: `0`

Unedited output:

```json
{
  "status": "PASS",
  "scope": "Structural package validation only. Does not grant editorial acceptance or confirm publication.",
  "essays": [
    {
      "title": "8",
      "slug": "8-by-bard-ionson",
      "words": 4818,
      "sources": 8,
      "examples": 4,
      "pendingEditorialExceptions": 7
    }
  ],
  "totalWords": 4818,
  "errors": []
}
```

The validator checks structure, not the truth of source access, full reading, visual perception or licence interpretation. The manual checks above are therefore reported separately and are not covered by this result.

## What was retrieved, and how

All live work ran through a browser pane on the coordinator's computer. The cloud container's egress proxy blocks artblocks.io, the Hasura index, the media proxy and the generator, so nothing in this package was fetched from the container.

Three GraphQL retrievals support this package, recorded in `evidence.json.graphqlRetrievals` with their full operation text, actual variables objects, request and response instants, HTTP status and the returned fields used. The variables objects are the ones actually sent: `{}` for the wallet discovery query, whose filter is inline, and a single-key object for each of the other two. The project schema expresses identity as a composite key joining the lowercase contract address and the project ID, and that returned value is retained and explained rather than silently reduced to a project number.

Canonical token page checks were performed by fetching the four example URLs from the artblocks.io origin in the browser pane and reading the actual response codes. All four returned 200. Token 179000027 was observed in the renderer but is not carried as an example, and no page check is claimed for it.

## The two findings that matter most

**The work usually stops.** A rotation variable falls by a hash-derived rate each frame, and most centre cases halt the sketch permanently once it passes a fixed threshold. So these are finite drawings, not loops, and each token's running time is a property of its own hash. This was tested rather than asserted: token 179000000 was predicted to halt at frame 813 and observed halting at 814; token 179000030 was predicted at 1732 and observed at 1732; token 179000025 was predicted at 518 and found already halted at exactly 518. Three cases never reach the halting routine, covering twelve tokens, and token 179000027 was observed still running after 21.1 seconds with its rotation variable climbing rather than falling, which is what that case's arithmetic predicts.

**The identity symbol is usually withheld.** Every token selects one of thirteen symbols, most of them LGBTQ+ identity signs, but the index publishes a Glyph key for only 42 of 128. Predicting key presence from the drawing paths that actually render the symbol matches on 128 of 128, and the name matches on 42 of 42 where present. The metadata is being accurate: it names the symbol when the symbol is on screen. The consequence is that 86 tokens, including the one AB5D holds, carry a symbol chosen from the hash that no viewer sees.

## Corrections made during this research

Two, both logged in `evidence.json.correctionsDuringResearch`.

Owner addresses and mint dates for three of the observed tokens were first drafted from working memory rather than from the retrieval response, and were wrong. They were replaced with the returned values before validation, and each token's published features were added at the same time.

The identity symbol on token 179000030 was first described from a reduced screenshot as the transgender symbol. Re-inspection at full size shows the Venus sign rotated about a quarter turn by the drawing routine, which agrees with both the published Glyph value and the independent hash reproduction. The description was corrected.

Both are recorded rather than quietly fixed, because the second one is the exact failure mode this round's instructions warn about: manufacturing a visual detail that metadata or code seems to imply.

## Failed attempts and access limits

Six, listed in full in `evidence.json.failedAttemptsAndLimits`. The ones that would have produced wrong findings if not caught:

The website of record at `https://bardionson.com/8` returns a 404 page. The artist's material for this work was reached instead through the site's own portfolio grid. Reporting "no artist material" from the broken link would have been wrong.

Scripted fetches against the artist domain were blocked in the browser pane, so no HTTP status code was observed for it. The access outcome is recorded by the rendered result and no status code is claimed, because inventing a 404 code from a 404 page would be exactly the fabrication the instructions prohibit.

The operative NFT License legal text is unreachable: the site's own License navigation item is not a link and `/license` returns an error. Only the plain-language summary was quotable, and the rights record says so.

A physical space bar press did not reach the sketch. Rather than report the control as untested or as working, both the interception and the dispatched-event confirmation are recorded.

All research state was initially held in one browser tab, and navigating that tab to the renderer discarded the retrieved project and token data mid-session. Everything was re-retrieved in a dedicated data tab. The second retrieval produced an identical script digest, which is recorded as corroboration rather than presented as a single retrieval.

## Unresolved leads not converted into sources

The AB5D artist dossier at `https://ab5d.xyz/artists/brd-ionson/` was supplied as a lead and is not counted as an inspected source, because the instructions direct that a dossier narrative must not substitute for original source inspection and nothing in this package rests on it. The Casa Brumar Foundation, Safe Space NOVA and The Gathering Place were named in the charitable giving panel but their sites were not inspected and no disbursement record was sought. The artist's /about, /cv, /exhibitions and /news pages were not read. The feature extractor that produced the published traits was not located. Upstream p5 licensing was not inspected. No contemporaneous account of the 655-day sale was located.

## Actual model, tools and usage

Model: claude-opus-5, served through the Claude desktop application in Cowork mode on the Claude Agent SDK. The batch routing label was "claude", which is a routing label and not a model identifier. The agent is not Astra. No other model and no human contributed to this package; if one later does, the original credit above must be preserved and the reviser recorded separately.

Tools actually used: HTTP POST to the Art Blocks public GraphQL index; a browser pane on the coordinator's computer for page rendering, text extraction, canonical token page status checks, live renderer execution, canvas sampling, screenshots and physical keyboard and mouse input; an independent reimplementation of the parameter mapping run against all 128 token hashes; the Web Crypto API for the SHA-256 digest; local shell and file tools for package assembly; and the supplied validator.

Telemetry: no token usage telemetry is exposed to the agent. All counts are null in usage.json with the reason given, the measurement scope is labelled batch, and no batch figure has been divided into invented per-essay numbers. `startedAt` is timezone-aware and `cutoff` is null with an explanation rather than a manufactured value.
