Skip to content

Contribution Record

cheyras edited this page Oct 18, 2026 · 8 revisions

Contribution Record

The running ledger of contributions to foilkit. It tracks what came from agents versus humans, and which human each agent worked on behalf of.

Nothing here is a license condition. CC0 requires no attribution and MIT requires only the copyright notice. This ledger exists because a dataset whose provenance is legible is worth more than one whose provenance is merely asserted — the same reason the mask corpus records who painted each pixel. See Provenance Model.

Attribution conventions

  • Agent-authored commits — repository and wiki — carry an On-Behalf-Of: @<github-handle> trailer identifying the human the agent works for, plus a Co-Authored-By: trailer identifying the agent model.
  • Human contributors' own commits carry no special trailer. The absence of On-Behalf-Of: is what marks a commit as directly human-authored.
  • Wiki page footers name the last agent + human pair to update the page: _Last updated by <agent> on behalf of @<handle> — <date>_
  • Data contributions additionally carry a CC0 dedication in the pull-request body, because a DCO sign-off certifies the right to submit and does not place anything in the public domain. See CONTRIBUTING.md.
  • This ledger is append-only. Agents append one row per work session. Never edit or remove a past row; append a correction instead.

Format:

| <date> | <agent> | @<handle> | <what> |

Ledger

Date Agent On behalf of What
2026-08-31 Claude Fable 5 @cheyras Repository bootstrap: created cheyras/foilkit public, authored the MIT/CC0 split (LICENSE, LICENSE-DATA, NOTICE, REUSE.toml — REUSE 3.3 compliant), the relicense record with the re-measured authorship count (465 commits, 76,291 words, sole author), contributor terms (CONTRIBUTING.md + PR template with the required CC0 dedication), AGENTS.md, DECISIONS.md, NOTICE-CONVENTIONS.md, and this wiki.
2026-09-01 Claude Fable 5 @cheyras Extraction closeout (subtask 5): paraphrased all 162 YouTube-attributed source quotes in the two evidence JSONs so data/** carries no third-party narration under its CC0 dedication; corrected the caption-writeback claim in reference/README.md and the 39 job prompts and implemented fetch-reference.sh --captions + gemini_vision.py captionsFile so the claim is true; repointed the index builders at this repository's paths and removed the hard-coded catalog host; recorded the closeout, the pkmn.gg citation call and the outstanding non-YouTube quotes in DECISIONS.md. Resolver digest unchanged (8541aa1b…), 177/177 tests, REUSE clean.
2026-09-01 Claude Fable 5 @cheyras Follow-up quote scrub: paraphrased all 340 non-YouTube sources[].quote strings in the two evidence JSONs (177 Bulbapedia, 124 Collexy, 14 PokeBeach, 10 pkmn.gg, 9 Bleeding Cool, 6 Sleeve No Card Behind — 9,632 words of third-party prose replaced by 6,984 of ours), normalised their attribution to publication + page title, and widened both files' $comment policy note to cover every source. Bulbapedia's CC-BY-SA was a licence conflict inside a CC0-declared file, not merely undedicatable material. All 502 quotes across both files are now marked paraphrase, 0 unmarked. Resolver digest unchanged (8541aa1b…, 10,312 probes), both derived indexes byte-identical, 177/177 tests, REUSE clean 575/575.
2026-09-07 Claude Fable 5 @cheyras Project Holo #13 — the reverse-holo INK DESIGN as a first-class tier, orthogonal to the 43-type foil taxonomy: a coverage input to the composite (one tile plus eight placement numbers, never a card-sized raster), four ORIGINAL generic-geometry tiles under CC0 with six trademarked marks queued EMPTY and their ownership caution on the task queue, a parallel resolveInk keyed (scope, type, variantKind) + rarity over card > subset > set > era, and the data/frames.json shows consultation that stops the overlay being drawn twice. The commissioned double-draw bug was refuted first, on n = 7 catalog scans against a validated positive control (SNR 1.41-1.88 against 7.85), and that measurement is what set the shows: unknown default. No composite-contract bump — proven 45/45 byte-identical through the parity harness. One real bug found only by looking at the render, not by any test. Suites 561 unit / 81 E2E / 30 acceptance / 82 function.
2026-09-07 Claude Fable 5 @cheyras Project Holo #13, adversarial verification round. Fixed the deploy blocker the tier shipped: the contribution queue WHITE-SCREENED in production because the client had no label for the new ink-tile type, and reading one off the table threw during render and unmounted the app — CI missed it because the fixture could not size those cards, so they sorted past the 20-card first screen while production ranked them 10th and 11th. Every label lookup now degrades to the raw slug (own-property only, since SKILL_LABEL inherits a function off Object.prototype that React throws on), the fixture carries the ink registry's real set ids so CI sees production's ranking, and the E2E presses “Show the other N” so the whole artifact renders regardless of how any future source ranks. Also, five findings in the tier itself: the era lookup no longer falls back to modern-sv, which had been drawing the SV dot grid over 52.9% of the catalog's reverse printings on no evidence at all; a null tile now reports three distinct states rather than reporting a recorded decision as queued work; scope tiers strictly dominate their per-axis bonuses so specificity is never settled by confidence; the rarity gate matches whole rarities rather than substrings (rare was true of "Ultra Rare" and eleven more); and pinstripe-diagonal.svg did not tile — 66/255 across its own wrap, a grid line down every card it was used on — so every tile's seam is now measured on every build, as is tile ↔ row in both directions. Suites 572 unit / 93 E2E / 30 acceptance / 82 function.

The pre-foilkit record

The foil work predates this repository. Everything from 2026-08-01 to 2026-08-09 was authored inside DeckPal — 465 commits, 76,291 words, sole author cheyras <cheyras@gmail.com>, zero co-authors, measured 2026-08-31. That ledger lives in DeckPal's Contribution Record and is not duplicated here; the commit messages themselves are reproduced at Pre-History.

That sole-authorship fact is what RELICENSE.md rests on, and it is why relicensing the work MIT/CC0 required nobody's permission.

| 2026-09-08 | Claude Opus 5 | @cheyras | Project Holo #17 — the pen tool, built to Adobe Illustrator’s interaction model deliberately rather than to an approximation: the behaviour was researched into a 126-item conformance checklist against Adobe’s own reference material first, unverifiable items flagged rather than guessed, and the engine’s tests named after the items they prove. The stored path language gained a cubic (a pen is cubics; the fitter’s lines and arcs are untouched and a retracted-handle segment still emits a line), and adding a third primitive turned every k === 'line' ? .. : .. ternary into a wrong answer the compiler could not see — all four are now exhaustive switches. The engine is headless on purpose, since behaviour only exercisable through a browser barely gets exercised. @foilkit/forge gained a CI-guarded browser subpath so the editor stopped hand-porting forge and the pen’s preview rasterises through the same rasterizePolygons the corpus does. A submission carrying both pixels and paths is refused unless the server proves they agree. Snapping rides the existing edge-trace/line-snap detectors and refuses on two counts independently — the provider on the evidence, the engine on the displacement. Adversarial review found three blockers and they are what makes this row honest: the pen never saved its paths at all (toMaskVector had no caller — a producer-end gap a suite of green unit tests cannot see); the agreement check’s boundary metric measured one direction only, certifying a 3,600px lie as p95 0.00px; and 185 bytes of orthogonal cubic handles burned 98s and 1GB in the validator. Also fixed: Escape or blur mid-marquee destroyed a placed anchor by popping a previous gesture’s undo snapshot. Snap accuracy measured with its n — edges 0.047px mean over n=360 and robust through a 3px blur, corners fragile and gone by that blur, zero proposals on a card with no edges. Suites 739 unit / 155 acceptance / 82 function. |

| 2026-09-22 | Codex | @cheyras | Todoist 6hPg2xgpXHhR4gGP — verified released in PR #3, merged at 6749ec7, GitHub production deployment 6603792458, Vercel deployment dpl_BGRtRcJAfr1CAC2Sw7JYGdCkRjEL; live at foilkit.vercel.app and foilkit.deckpal.app (also foilkit-deck-pal.vercel.app and foilkit-git-main-deck-pal.vercel.app). CI passed before merge. Evidence: 743 unit tests; all 45 unchanged default assemblies plus 45 legacy and 45 opted WebGL programs; five retained independent adversarial assertions; actual FoilStage mixed-card/material-isolation/opt-out tests; deterministic GPU mapping; and visually inspected 1280px/390px proof. This is opt-in only, with no recipe/canon retuning; the planar-center approximation remains and makes no measured physical-fidelity claim. DeckPal has not adopted Foilkit. |

| 2026-10-18 | Claude Opus 5.5 | @cheyras | R9-PLATES — the composite gains a card-space eye direction (uTiltMax / uCamDist → gViewTS) and an optional etch plate (uEtchTex + relief glint, gEtch / gEtchSlope for recipes), both structural no-ops until used: 45/45 byte-identical through tools/parity (re-run before commit), 747 unit tests (8 new). Uniform tables updated in docs/SHADER-CONTRACT.md and the Shader Contract page. Groundwork for generated etch plates; no recipe or canon retuned, no card ships a plate yet. Branch feat/view-vector-etch-plate, commit bd09f74. |

Last updated by Claude Opus 5.5 on behalf of @cheyras — 2026-10-18

Clone this wiki locally