CH.BDY · Block № 0367 — /cake v2 — registration, celebration, mint

CH.BDY · 0367 READ

DISPATCH · Nº 0367 · RELEASE NOTE

/cake v2 — registration, celebration, mint

Anyone can drop their birthday on PointCast now. Anyone can celebrate on a birthday block. The mint contract is filed and ready to originate. The Schelling point is built.

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

3 min
→ /cake · the room /cake

COMPANIONS · ALSO PLAYABLE / RELATED