feat(catalog): ship-a-website — an agent buys its own website on a $40 delegation - #80
Conversation
… and video voice on a $40 delegation Reproducible Catalog outcome: BRIEF, agent rules, the one prompt, the agent's own build log, the friction log, the receipt (41 settled payments over x402/Base and MPP/Tempo) and EN/ES subtitles, plus a recap page on the showcase. The walkthrough video lands in a follow-up commit once the final cut is approved. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ydvkGuXEHBxxfmJFoDMqB
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ydvkGuXEHBxxfmJFoDMqB
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ydvkGuXEHBxxfmJFoDMqB
…S subtitles alongside) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ydvkGuXEHBxxfmJFoDMqB
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ydvkGuXEHBxxfmJFoDMqB
… unlisted after the run Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ydvkGuXEHBxxfmJFoDMqB
|
👀 pr-review-bot (fallback) picking this up. |
eruizgar91
left a comment
There was a problem hiding this comment.
Reviewed catalog/ship-a-website/ plus the /t/ship-a-website recap entry at 8dc023a. This is a strong, unusually verifiable content PR — the substance holds up under checking, and most of what I set out to disprove came back clean. Seven findings, all inline: four MEDIUM (two missing wiring/index updates that every prior catalog PR made, one false claim about what is committed, one video-provenance gap) and three LOW. No blockers.
What I checked and found clean
receipt/receipt.jsonis internally consistent and, byte-for-byte, identical to whathttps://shippeditself.com/receipt.jsonserves right now — 41 rows, 41 uniquerequestIds, 41 unique well-formed tx hashes, allSettled,totalsmatching the row sums exactly ($21.0030amount,$0.41886fee) andstats.spentCents: 2167matching the$21.67quoted in the README, in BUILD_LOG's v4 section and in the showcasewarnstring. The$21.67vs$21.42gap is explained correctly in both README and BUILD_LOG.- The new
tutorials.tsentry type-checks againstlib/types.ts(RecapRun/DataTable),totalRow: 4correctly indexes theTotalrow, andprotocol/language/tier/repoPathall follow the existing entries' conventions. Everytech.filespath resolves throughrepoFileUrl, and every page/layout/index render site is data-driven off thetutorialsarray — nothing else inshowcase/needed a per-slug change. - Both
.vttfiles are valid WebVTT and are byte-identical to whatsync-media.sh's own srt→vtt transform would produce from the committed.srt;<track>attributes match the established pattern (default: trueonenonly). EN and ES are line-for-line translations of each other and neither quotes a figure that disagrees with the receipt. - No credentials anywhere: grepped every added text file for JWTs,
sk_/gh*_/AKIA keys, PEM headers and private keys — zero hits. BUILD_LOG narrates two real JWT-leak incidents but never prints a token; sampled video frames around those timestamps show no token text. showcase/Dockerfile's newCOPYline is correct and its source is in the build context (.dockerignoreexcludes nothing undercatalog/). Every external link resolves 200 (shippeditself.com, the YouTube cut, the pushed repo, both docs pages).
Considered and deliberately not filed
- "none of which it had an account with" vs BUILD_LOG's
isNewWorkspace: false(the wallet already had a Locus workspace). The README's own step table says the agent "signs up at the host with its wallet address (free)", so the claim's meaning — no human-onboarded, card-on-file account — holds; the pre-existing workspace is a rehearsal artifact and is disclosed. Not a contradiction. - "Human clicks after setup: zero" vs the operator-directed v3/v4 passes. In context ("Most demos stop where money starts: a person signs up at each vendor, enters a card") this reads as vendor-side clicks, and no human authorized a purchase. Defensible as written.
- Committing
hero.pngtwice (catalog/+showcase/public/media/) and not mirroring the.srtundershowcase/public/the way the other three slugs do — both are layout-only, no runtime effect. - The 10 MB
.mp4committed to git rather than LFS — matches existing practice for the other three demos; not this PR's to change. build-pushisskippingon this PR by design, so the Dockerfile line is unexercised until it lands onmain. Correct by inspection; noting it so a greenVerifyisn't over-read.
Verdict is the caller's to post.
eruizgar91
left a comment
There was a problem hiding this comment.
🟡 Approved with comments — no blockers; 4 should-fix, 3 nit(s) left inline.
Inline review: #80 (review)
…ndex row, exact receipt rows, footage provenance, placeholder phone - showcase/scripts/sync-media.sh copies the new slug (the local-dev twin of the Dockerfile line) - catalog/README.md indexes the fourth outcome and says four, not three - README: the delegation id is public by design and in BUILD_LOG (the API key is what is never committed); vendor rows carry exact values so they sum to the total; a Provenance note says which terminal segments are re-recorded (session start) or from the rehearsal (hosting setup) and that every payment on screen is from the receipted run; the five wording edits to RUN.md are listed - BRIEF: the phone-format example is an unmistakable placeholder - showcase receipt rows use the exact values Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ydvkGuXEHBxxfmJFoDMqB
Summary
Adds the Ship It While I'm In the Shower Catalog outcome as a reproducible tutorial under
catalog/ship-a-website/and a recap page on the showcase (/t/ship-a-website).A coding agent (Claude Code + the
nevermined-routerplugin) was given one prompt and a $40 / 24 h delegation. It registered shippeditself.com, paid for hosting, bought a screenshot of itself, pushed the source to GitHub and published the receipt on the page; later it bought the narration and music for the walkthrough video from the same budget. 41 settled payments to 4 vendors over x402 (Base) and MPP (Tempo), $21.67 drawn from the cap, zero human clicks after setup.README.md— the tutorial (why, step by step, the prompt, the receipt, reproduce it, what we learned)BRIEF.md,agent/CLAUDE.md,demo-prompt.txt— exactly what the agent was givenBUILD_LOG.md— the agent's own run log;FRICTION.md— what broke, reproductions, what was reportedreceipt/receipt.json— one row per payment with its tx hash;hero.png— the screenshot it boughtshowcase/content/tutorials.ts+Dockerfile+public/media/ship-a-website/— the recap page, EN/ES VTT tracksStill to land before ready-for-review
catalog/ship-a-website/ship-a-website.mp4— the final cut (v5)Supersedes the standalone
nevermined-io/outcome-ship-a-websiterepo, which will be archived with a pointer here.Test plan
npx tsc --noEmitandnpm run buildinshowcase/pass locally (23 static pages)/t/ship-a-websiterenders with the video and both subtitle tracks once the mp4 lands🤖 Generated with Claude Code
https://claude.ai/code/session_011ydvkGuXEHBxxfmJFoDMqB