Repository navigation
ci(deploy-site): copy every top-level file the build produced, not a named list - #1228
Merged
Merged
Conversation
…named list The list was index.html, manifest.json, cv.pdf. llms.txt, agents.t27 and rss.xml never left trinity through this job: t27.ai served a llms.txt saying 1577 specs beside a manifest saying 1737, and a feed without the post the 19:00Z deploy was dispatched to publish. og-image.png is skipped: the apex's build-og.py owns it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
deploy-site.ymlcopied three named top-level files:index.html,manifest.jsonandcv.pdf. It copied directories generically, and its own comment explains why a named list is wrong. Every other top-level file the build produces stayed behind. Live on t27.ai at 2026-10-01 ~20:30Z, after this job deployed 082196f at 19:00Z:/llms.txtand/agents.t27saySPEC_COUNT = 1577, measured 2026-09-24. Their bytes hash-match afc9d38, which predates fix(website): the catalog refresh runs the checks its counts must pass #1217./t27/manifest.json, a directory this job does copy, says 1737. The site contradicts itself in the two files agents are told to read./rss.xmllacksthe-seed-moved-it-the-pins-moved-it-more, the blog: the seed moved Fmax 1.22x, the pins moved it 2.6x #1204 post this deploy was dispatched to publish.dist/rss.xmlhas it.The fix copies every top-level file in
dist/, as the apex publisher'srsync -a dist/ ./does. The one exception isog-image.png: the apex'sbuild-og.pyredraws it after the rsync, so the 220989 B file indist/is the older card. The served card is 65901 B and was last written by the publisher on 2026-09-16.Found by a new check that compares the files t27.ai serves with the trinity commit the apex names as its source.
{ "version": 1, "head_sha": "76a861eb1fa90ba8d353429873c4d9edaf558498", "summary": "deploy-site.yml copied only index.html, manifest.json and cv.pdf among top-level build files, so llms.txt, agents.t27 and rss.xml never reached t27.ai through it: the live llms.txt still states 1577 specs beside a manifest stating 1737, and the feed lacks the post the last deploy published. It now copies every top-level file except og-image.png, which the apex's build-og.py owns.", "changes": [ ".github/workflows/deploy-site.yml: the named top-level copy (index.html, manifest.json, cv.pdf) becomes a loop over every file in apps/website/dist, skipping og-image.png with the reason in a comment" ], "tests": [ { "command": "cd apps/website && npm ci && npm run build && ls dist", "status": "passed", "result": "exit 0; top-level files the loop now copies: 404.html agents.t27 apple-touch-icon.png cv.pdf favicon-16x16.png favicon-32x32.png favicon.svg index.html llms.txt manifest.json rss.xml trinity-logo-with-label.svg (og-image.png skipped)", "evidence": "local build on this branch, tree = main plus this workflow edit" }, { "command": "compare https://t27.ai/<file> with git show 082196ffc:apps/website/public/<file> (the apex's named source)", "status": "passed", "result": "8 of 11 public files match; llms.txt and agents.t27 differ (22487 B served = afc9d38's bytes, 22843 B source); og-image.png differs by design (build-og.py)", "evidence": "sha256 comparison of served bytes against the source commit, 2026-10-01" }, { "command": "diff of <link> entries: served /rss.xml vs dist/rss.xml", "status": "passed", "result": "dist adds exactly one entry, https://t27.ai/#/blog/the-seed-moved-it-the-pins-moved-it-more -- the post the 19:00Z deploy was for", "evidence": "served 54674 B, dist 55787 B" } ], "limitations": [ "The live drift stays until the next deploy or publisher run; this PR changes the workflow, not the site.", "A future top-level file the apex rewrites after its rsync (like og-image.png) would need the same exception; the served-vs-source check will show it as a difference." ], "tags": [ "Engineering", "Verification" ], "blog": { "title": "The directories were copied generically; the files were still a list", "summary": "A deploy job learned once that a named list of directories goes stale, and kept a named list of files beside it; llms.txt and the RSS feed never left the build.", "outline": [ "t27.ai served an llms.txt counting 1577 specs next to a manifest counting 1737, after the commit that fixed it had been deployed.", "The deploy job copied every directory by loop but only three top-level files by name, so llms.txt, agents.t27 and rss.xml stayed behind.", "Every top-level file is now copied except og-image.png, which the apex redraws after its own rsync and which the old card must not overwrite." ] } }🤖 Generated with Claude Code