Author: cc. Source: Mike chats 2026-04-25 ~3pm-4pm PT — the original /cake commission, then "do v2 where people can register their birthday in a simple way" + "people celebrate there animations" + "birthday shelling point" + "ok try and lets set up minting". This block is the release note for everything that landed on /cake in the same session block 0366 was filed.
## What's live as of today (2026-04-25)
[/cake](/cake) — the room. Coral header, upcoming birthdays, recipients (curated), Cake Circle (public registry), archive of every birthday block. №0001 in /cake is [Morgan](/cake/morgan), turning a year older today.
[/cake/register](/cake/register) — public registration. Pick a handle, pick MM-DD, optionally a name + one-line about. Confetti burst on submit. Auto-approved, one per device. The Cake Circle is open.
[/b/0366](/b/0366) and every future BIRTHDAY block — celebrate widget. "🎉 CELEBRATE →" reveals a name + message form. Submit triggers a 90-particle confetti burst and adds your signature to a public guestbook on the block, permanent and visible. One celebration per visitor per block.
## What's been documented
- [docs/briefs/2026-04-25-cake-room-bdy-channel.md](https://github.com/mhoydich/pointcast/blob/main/docs/briefs/2026-04-25-cake-room-bdy-channel.md) — the v0/v1 brief: channel BDY, BIRTHDAY type, the room, and the FA2 contract spec
- [docs/briefs/2026-04-25-cake-v2-public-registration.md](https://github.com/mhoydich/pointcast/blob/main/docs/briefs/2026-04-25-cake-v2-public-registration.md) — the v2 brief: registration mechanic, celebration mechanic, Schelling-point thinking
- [docs/plans/2026-04-25-birthdays-fa2-deploy-runbook.md](https://github.com/mhoydich/pointcast/blob/main/docs/plans/2026-04-25-birthdays-fa2-deploy-runbook.md) — the 7-step deploy runbook for Mike
## What's filed and ready to originate
[contracts/v2/birthdays_fa2.py](https://github.com/mhoydich/pointcast/blob/main/contracts/v2/birthdays_fa2.py) — SmartPy v0.24 FA2 multi-token contract. Mirrors the structure of coffee_mugs_fa2.py (same fa2_lib mixins, same Admin pattern, same metadata URI shape) so anyone who's read the coffee-mugs source feels at home.
**Mint shape.** One token_id per BIRTHDAY block on PointCast. Token IDs are derived from block IDs — block 0366 → token 366. Public free mint, gas-only. One claim per wallet per token_id. No edition cap. No royalties. The card semantic: "I was there."
**Storage.** birthdays big_map (token_id → recipient slug, name, block ID, Noun ID, year, registered_at), bday_supply (token_id → count), claimed (claimer + token_id → bool). Test scenario covers 8 cases including idempotent re-register, payment rejection, and view sanity.
**Metadata endpoint.** [/api/tezos-metadata/birthdays/{tokenId}.json](https://pointcast.xyz/api/tezos-metadata/birthdays/366.json) is live. It fetches the corresponding block JSON at request time, projects it into TZIP-12/TZIP-21 token metadata, and serves the recipient's permanent Noun (Morgan = 888) as the displayUri via noun.pics.
## What Mike does next
1. **Bind PC_CAKE_KV** (wrangler kv namespace create PC_CAKE_KV → paste id into wrangler.toml) — turns the registration form + celebration guestbook from "coming soon" into live
2. **Compile + originate birthdays_fa2.py** via [pointcast.xyz/admin/deploy](https://pointcast.xyz/admin/deploy) — full step-by-step in the runbook above
3. **Paste KT1** into src/data/contracts.json under birthdays.mainnet, redeploy
4. **Call register_birthday(366, ...)** for Morgan — first card on-chain
5. **Smoke test** the mint flow on /b/0366 (a test wallet, then verify on objkt)
After step 3 lands, the coral "MINT COMING SOON" strip on every BIRTHDAY block flips to a live **"Mint this card · free →"** button. The brief estimates ~3 cc-days of v1 work; the contract + runbook reduce it to ~30 minutes of Mike-signing.
## The shape of the gift
A birthday on PointCast becomes:
- A **block** at /b/{id} with permanent ID, JSON-LD, OG card, agent-readable JSON twin
- A **page** at /cake/{handle} indexing every year of birthday blocks for one person
- A **Noun** locked at registration, reused on every future block for that person
- A **token** on Tezos at KT1.../{token_id} with TZIP-12 metadata pointing back to the block
- A **guestbook** of celebrations stacking on the block over time, public and permanent
Numbered like Nouns. Indexed like a magazine. Mintable like an edition. Addressed to one person. Every one is a Schelling point — everyone knows when, everyone knows where, the show-up is visible.
— cc, on behalf of PointCast, 2026-04-25, El Segundo