Skip to content
View tannergolden's full-sized avatar
🎯
Focusing
🎯
Focusing

Highlights

  • Pro

Block or report tannergolden

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
tannergolden/README.md

Tanner Golden: Infrastructure for AI research. Reproducibility, supply-chain hygiene, and CI that fails for the right reasons. Built to be rebuilt. All times in EST. Account: @tannergolden. Repositories: 10. Contributions, last year: 1,576. Language: Python. Member since: 2016. Site: tannergolden.com.

Status: Active Context: Reproducibility License: MIT

Standards CI: Passing Last Commit: This Week


💡 About Me

I'm a software engineer building infrastructure for AI research. My focus is the layer under the experiments: environments that rebuild the same way every time, dependencies that are pinned and scanned, and CI that fails for the right reasons, so a result can be trusted and repeated.

Most of my public work is one connected system. standards holds the engineering rules and the reusable workflows that enforce them, called by link so a fix lands once and reaches every repository. path is the template new repositories start from, and markdown draws READMEs like this one from data measured on a schedule.

  • Working on: reproducible environments, supply-chain hygiene (pinned dependencies, secret scanning, CodeQL and SBOMs), and CI that fails for the right reasons.
  • Building with: Python (standard library first), GitHub Actions, Bash and Make, plus dev containers and Codespaces so a Mac and a fresh container start from the same shell.
  • How I work: standards a machine enforces, small reviewable changes, Conventional Commits, and signed commits on protected branches.
  • Ask me about: reusable workflows, dependency pinning, release automation, and automating the chores nobody should do by hand.

🎲 Play Against Me

Four games, Chess, Checkers, Pentago and Tic-Tac, with me on one side and everyone else on GitHub on the other. I always play White, and X in Tic-Tac.

  1. Pick a move from the list under a board. Chess is always in view, and the other three open with a click.
  2. Tick the box in the issue its link opens, then submit it, its title unchanged. The box agrees to the rules and to the games showing your move, username and avatar. The first move to reach the game is the one played.
  3. The Official Arbiter rules on it within a few minutes: it answers on your issue, closes it as played or turned away, and redraws the board.

Each side has a week to move, or the Arbiter moves for it at random. A win counts for the player who makes the winning move, and the most wins top the Hall of Fame below.

📖 The rules and everything else are in Games and each game's guide: Chess, Checkers, Pentago and Tic-Tac.

Chess: game 1, move 2. Game 1 of @tannergolden against GitHub, after 2. d5: pawn from d4 to d5. It is GitHub's turn, due by 7 Nov. White: king e1; queen d1; rooks a1 and h1; bishops c1 and f1; knights b1 and g1; pawns a2, b2, c2, d5, e2, f2, g2 and h2. Black: king e8; queen d8; rooks a8 and h8; bishops c8 and f8; knights b8 and g8; pawns a7, b7, c7, d7, e6, f7, g7 and h7.
♚ GitHub's Turn · 30 legal moves · open to choose one
♚ King · 1 move
Move In words Play
🤴 King Move Ke7 King from e8 to e7 Play ↗
♛ Queen · 4 moves
Move In words Play
👸 Queen Move Qe7 Queen from d8 to e7 Play ↗
👸 Queen Move Qf6 Queen from d8 to f6 Play ↗
👸 Queen Move Qg5 Queen from d8 to g5 Play ↗
👸 Queen Move Qh4 Queen from d8 to h4 Play ↗
♝ Bishop · 5 moves
Move In words Play
⛪ Bishop Move Ba3 Bishop from f8 to a3 Play ↗
⛪ Bishop Move Bb4 Bishop from f8 to b4 Play ↗
⛪ Bishop Move Bc5 Bishop from f8 to c5 Play ↗
⛪ Bishop Move Bd6 Bishop from f8 to d6 Play ↗
⛪ Bishop Move Be7 Bishop from f8 to e7 Play ↗
♞ Knights · 5 moves
Move In words Play
🐴 Knight Move Na6 Knight from b8 to a6 Play ↗
🐴 Knight Move Nc6 Knight from b8 to c6 Play ↗
🐴 Knight Move Ne7 Knight from g8 to e7 Play ↗
🐴 Knight Move Nf6 Knight from g8 to f6 Play ↗
🐴 Knight Move Nh6 Knight from g8 to h6 Play ↗
♟ Pawns · 15 moves
Move In words Play
♟️ Pawn Push a6 Pawn from a7 to a6 Play ↗
♟️ Double Pawn Push a5 Pawn from a7 to a5, two squares Play ↗
♟️ Pawn Push b6 Pawn from b7 to b6 Play ↗
♟️ Double Pawn Push b5 Pawn from b7 to b5, two squares Play ↗
♟️ Pawn Push c6 Pawn from c7 to c6 Play ↗
♟️ Double Pawn Push c5 Pawn from c7 to c5, two squares Play ↗
♟️ Pawn Push d6 Pawn from d7 to d6 Play ↗
⚔️ Pawn Takes Pawn exd5 Pawn from e6 takes the pawn on d5 Play ↗
♟️ Pawn Push e5 Pawn from e6 to e5 Play ↗
♟️ Pawn Push f6 Pawn from f7 to f6 Play ↗
♟️ Double Pawn Push f5 Pawn from f7 to f5, two squares Play ↗
♟️ Pawn Push g6 Pawn from g7 to g6 Play ↗
♟️ Double Pawn Push g5 Pawn from g7 to g5, two squares Play ↗
♟️ Pawn Push h6 Pawn from h7 to h6 Play ↗
♟️ Double Pawn Push h5 Pawn from h7 to h5, two squares Play ↗

Anyone but @tannergolden can play on this turn, and the first pick in is played. The move is due by 7 Nov, 12:43 EST, or the Arbiter plays a random legal move.

🏁 Checkers Checkers: game 1, move 2. Game 1 of @tannergolden against GitHub, after 2. 8-12, the Arbiter's move for GitHub: man from 8 to 12. It is @tannergolden's turn as White, due by 3 Nov. @tannergolden, White: men on 19, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32; GitHub, Black: men on 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 16.
⛀ @tannergolden's Turn · 7 legal moves · only @tannergolden can play these
Move In words Play
👣 Man Move 19-15 Man from 19 to 15 Play ↗
👣 Man Move 21-17 Man from 21 to 17 Play ↗
👣 Man Move 22-17 Man from 22 to 17 Play ↗
👣 Man Move 22-18 Man from 22 to 18 Play ↗
👣 Man Move 23-18 Man from 23 to 18 Play ↗
👣 Man Move 27-24 Man from 27 to 24 Play ↗
👣 Man Move 28-24 Man from 28 to 24 Play ↗

Only @tannergolden can play on this turn: a pick from anyone else is turned away with a comment on its issue. The move is due by 3 Nov, 16:19 EST, or the Arbiter plays a random legal move. A jump must be taken whenever there is one, and a man that reaches the far row is crowned.

🌀 Pentago Pentago: game 1, move 1. Game 1 of @tannergolden against GitHub, @tannergolden plays White and GitHub Black, under the Ghost Rule. Ghosts on b5 and a4. After 1. a2-ll-acw, the Arbiter's move for GitHub: a black marble on a2, then the lower left quarter turns anticlockwise. It is @tannergolden's turn as White, due by 3 Nov. The upper left quarter: a ghost on b5, a ghost on a4; the lower left quarter: Black on b1.
⚪ @tannergolden's Turn · 33 empty holes · only @tannergolden can play these
⚪ Upper Left Quarter · 7 moves
Hole In words Then turn
⚪ Corner Move a6 A white marble on a6, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move b6 A white marble on b6, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move c6 A white marble on c6, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move a5 A white marble on a5, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move c5 A white marble on c5, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move b4 A white marble on b4, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move c4 A white marble on c4, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Upper Right Quarter · 9 moves
Hole In words Then turn
⚪ Corner Move d6 A white marble on d6, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move e6 A white marble on e6, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move f6 A white marble on f6, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move d5 A white marble on d5, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Centre Move e5 A white marble on e5, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move f5 A white marble on f5, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move d4 A white marble on d4, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move e4 A white marble on e4, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move f4 A white marble on f4, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Lower Left Quarter · 8 moves
Hole In words Then turn
⚪ Corner Move a3 A white marble on a3, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move b3 A white marble on b3, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move c3 A white marble on c3, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move a2 A white marble on a2, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Centre Move b2 A white marble on b2, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move c2 A white marble on c2, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move a1 A white marble on a1, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move c1 A white marble on c1, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Lower Right Quarter · 9 moves
Hole In words Then turn
⚪ Corner Move d3 A white marble on d3, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move e3 A white marble on e3, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move f3 A white marble on f3, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move d2 A white marble on d2, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Centre Move e2 A white marble on e2, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move f2 A white marble on f2, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move d1 A white marble on d1, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Edge Move e1 A white marble on e1, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR
⚪ Corner Move f1 A white marble on f1, then a quarter turns ↻ UL ↺ UL ↻ UR ↺ UR ↻ LL ↺ LL ↻ LR ↺ LR

Only @tannergolden can play on this turn: a pick from anyone else is turned away with a comment on its issue. The move is due by 3 Nov, 20:21 EST, or the Arbiter plays a random legal move. A move sets a marble, then turns any quarter a quarter turn; five in a row wins, for the other side if the turn makes five for it alone, and five for both or a full board is a draw.

❌ Tic-Tac Tic-Tac: game 1, move 1. Game 1 of @tannergolden against GitHub, @tannergolden plays X and GitHub O, under the Ghost Rule. Ghosts lock e5 and d2. After 1. Oe6, the Arbiter's move for GitHub: O takes the top edge of the centre board. It is @tannergolden's turn as X, in the top board, due by 7 Nov. Boards won: X 0, O 0.
❌ @tannergolden's Turn · 9 open squares · only @tannergolden can play these
Move In words Play
📐 Corner Move Xd9 X takes the upper left corner of the top board Play ↗
📏 Edge Move Xe9 X takes the top edge of the top board Play ↗
📐 Corner Move Xf9 X takes the upper right corner of the top board Play ↗
📏 Edge Move Xd8 X takes the left edge of the top board Play ↗
🔳 Centre Move Xe8 X takes the centre of the top board Play ↗
📏 Edge Move Xf8 X takes the right edge of the top board Play ↗
📐 Corner Move Xd7 X takes the lower left corner of the top board Play ↗
📏 Edge Move Xe7 X takes the bottom edge of the top board Play ↗
📐 Corner Move Xf7 X takes the lower right corner of the top board Play ↗

Only @tannergolden can play on this turn: a pick from anyone else is turned away with a comment on its issue. The move is due by 7 Nov, 12:43 EST, or the Arbiter plays a random legal move.

🏆 Hall of Fame

Hall of Fame: four games. No game of @tannergolden against GitHub has finished yet, in Chess, Checkers, Pentago or Tic-Tac, so the podium waits for its first winner.
🏆 Leaderboard · @tannergolden · GitHub's players join with their first move
Player ♔♚ ⛀⛂ ⚪⚫ ❌⭕ Moves Wins
🏠 @tannergolden 0 0 0 0 4 0

A win counts only for the player who makes the winning move: the checkmate in Chess, the move that leaves the other side no move in Checkers, the move that makes five in a row for its side in Pentago and the mark that wins a third board in a row in Tic-Tac. A move the Arbiter plays, for either side, counts for nobody, and a draw is nobody's win.


💡 How It Fits Together

Follow the arrows from the rules to this page. standards holds the rules and the reusable workflows that enforce them, called by link and never copied, so a fix lands once and reaches every repository pinned to it. path is the template every new repository starts from, already wired to those workflows. A repository that wants a drawn README adds one markdown stub. Once a day the kit it calls measures the repository, or here the account, redraws what moved and commits it as SVGs, header to footer in one commit, so nothing on this page depends on a third-party service.

Schematic of tannergolden. Standards holds the rules and the reusable workflows every repository calls at v1, and the Golden Path template follows them by link, so every new repository starts from it. A repository adds one Markdown stub, and once a day, at 00:00 EST, the kit it calls measures the page and redraws what moved in one commit: the header and footer, the badges, this schematic and the placards, and the trophies. The stub names the page's one theme, the medieval collection's Illuminated, and every part is drawn in it, or in a holiday's set around each holiday, or in the Birthday set on my birthday, with Capricorn's roundel on every header.

tannergolden: level 27, 11,450 XP, case 42% complete, 15-day streak Next up: Generous 94%, Branching Out 90%, Lunch Break 78%

Commits trophy: Silver, 1,321, 54% to Gold, top 11% Repositories trophy: Bronze, 10, 50% to Silver, top 30% Longest Streak trophy: Bronze, 15 days, 34% to Silver, top 30% Followers trophy: Unranked, 13, 52% to Bronze Pull Requests trophy: Unranked, 3, 60% to Bronze

Achievements · 44 of 104 earned · next: Generous, 94%

Milestones

Century: earned, Uncommon Landed: earned, Uncommon Polyglot I: earned, Uncommon, 60% to Polyglot II Shipped: earned, Uncommon First Light: earned, Common Hello World: earned, Common Opening Move: earned, Common Veteran II: earned, Common, 90% to Veteran III Branching Out: 90% (9 of 10) Shipwright: 70% (7 of 10) Monolith: 26% (263 of 1,000) Closer: 17% (17 of 100) Bug Hunter: 12% (3 of 25) Merge Master: 12% (3 of 25) Fan Club: 0% (0 of 100) Forked: 0% (0 of 10) Long Haul: 0% (0 of 1) Second Opinion: 0% (0 of 1) Stargazer: 0% (0 of 10) Ticket: 0% (0 of 1) Watched: 0% (0 of 50)

Craft

By the Book II: earned, Epic, 42% to By the Book III Duet: earned, Rare Green Machine II: earned, Rare, 11% to Green Machine III Scribe: earned, Rare Signed I: earned, Rare, 61% to Signed II Tested: earned, Rare Fixer: earned, Uncommon Surgeon: earned, Uncommon Sweeping Change: earned, Uncommon Heavy Lifter: earned, Common Well Maintained: 24% (6 of 25) Gitmoji: 0% (0 of 100) Toolsmith: 0% (0 of 1) Undo: 0% (0 of 1)

Rhythm

Marathon Day III: earned, Epic Early Bird I: earned, Rare, 13% to Early Bird II Sprint: earned, Rare Big Week: earned, Uncommon Night Owl I: earned, Uncommon, 51% to Night Owl II Comeback: earned, Common Lunch Break: 78% (39 of 50) Long Game: 66% (2 of 3) Weekender: 26% (7 of 26) Year of Code: 11% (34 of 300) Weekday Warrior: 11% (22 of 200) Four Seasons: 0% (0 of 1) Friday Deploy: 0% (0 of 1) Perfect Month: 0% (0 of 1)

Community

Introduced: earned, Uncommon Open Door I: earned, Uncommon, 60% to Open Door II Generous: 94% (94 of 100) Answer Key: 0% (0 of 10) Backed: 0% (0 of 1) Conversation Starter: 0% (0 of 10) Crew: not measured yet Curious: 0% (0 of 50) Founder: not measured yet Gist Keeper: not measured yet Green Light: 0% (0 of 50) Patron: 0% (0 of 1) Planner: 0% (0 of 5) Red Pen: 0% (0 of 25) Registry: 0% (0 of 5) Reporter: 0% (0 of 25) Roundtable: 0% (0 of 50) Second Pair of Eyes: 0% (0 of 50) Team Player: 0% (0 of 3) Upstream: 0% (0 of 1) Voice: 0% (0 of 100)

Housekeeping

Gatekeeper: earned, Epic Locksmith: earned, Epic Auto-pilot: earned, Rare Blueprint: earned, Rare Form Filler: earned, Rare House Rules: earned, Rare Label Maker: earned, Rare Packager: earned, Rare Town Hall: earned, Rare Welcome Mat: earned, Rare Curator I: earned, Uncommon, 66% to Curator II Documented II: earned, Uncommon, 36% to Documented III Licensed II: earned, Uncommon, 40% to Licensed III Semver: 70% (7 of 10) Front Door: 20% (1 of 5) Open Hand: 0% (0 of 1) Roadmap: 0% (0 of 5) Tidy: 0% (0 of 5)

Secret

Ghost: earned, Uncommon Secret achievement Secret achievement Secret achievement Secret achievement Secret achievement Secret achievement Secret achievement Secret achievement Secret achievement Secret achievement Secret achievement

Maker

Badge Maker: earned, Legendary Pathfinder: earned, Legendary Standard Bearer: earned, Legendary Trophy Maker: earned, Legendary

Refreshed daily by tannergolden/markdown · Every trophy and achievement, what it is for and how to earn it: the catalogue. Click any card for its entry.


📦 Latest Releases

The two repositories on this account that shipped most recently, each with its version, the day it went out and the major tag a stub pins to follow it. Superseded releases are pruned, so each one shown is its repository's current release. Redrawn every Wednesday.


📝 Field Notes

Note

GitHub changelog · 26 Oct. GPT-6.1 Terra in GitHub Copilot

Tip

Professional · Architecture. Propagate a deadline rather than fixed per-hop timeouts: each service passes on the time remaining, so downstream work stops as soon as the original caller has given up.

Important

End of life · PostgreSQL 14. PostgreSQL 14 stops getting security fixes on 12 November 2026. Move to 18, the newest release.

Warning

Intermediate · Linux. GNU xargs runs the command once even when its input is empty, so find . -name '*.tmp' | xargs ls -l lists the current directory when nothing matches. Add -r to skip the run on empty input.

Caution

Actively exploited · CVE-2026-105133. Ahsay AhsayCBS: Ahsay AhsayCBS Improper Authentication Vulnerability. Apply mitigations in accordance with vendor instructions, ensuring compliance with CISA’s BOD 26-04 Prioritizing Security Updates Based on…

Redrawn every Monday, at random, from 5,000 curated notes and five open data sources. Week 44 of 2026. Open data this week: GitHub changelog, endoflife.date, CISA KEV.


🌿 Good First Issue

langgenius/dify. #43768: bump to python 3.14. rtk-ai/rtk. #4858: pnpm install wrapper drops the child's stdout on failure.

The newest good first issue from each of the two most-starred projects that opened one lately, still open and unclaimed. Redrawn every Friday.


Pinned Loading

  1. standards standards Public

    Engineering standards plus reusable GitHub Actions workflows and composite actions that enforce them for any language: CI/CD, security scanning, branch protection, releases.

    Python

  2. path path Public template

    Golden path repository template: language-agnostic boilerplate with folder structure, community health files, dev container and GitHub Actions CI wired to reusable workflows.