๐Ÿ† XPRIZE โ€” "๊ตฌ๊ธ€ Gemini 90์ผ ์‚ฌ์—… ๋Œ€ํšŒ"

@goal: dancinlab ๋‹จ์ผ ์—”ํŠธ๋ฆฌ(๐Ÿ“ demiurge โ€” phanes ๋ฐœ๊ฒฌ์—”์ง„ 8th verb๋กœ ๋‚ด์žฅ)๋ฅผ Build with Gemini XPRIZE 2026์— ์ถœ์ „ โ€” 90์ผ ๋นŒ๋“œ(2026-05-19~08-17) + ์‹ค๋งค์ถœ ์ฆ๋น™ + Vertex AI Gemini ํ˜ธ์ถœ โ‰ฅ1 + GCP ์ œํ’ˆ โ‰ฅ1 + 2026-08-17 ์ œ์ถœ + 2026-09-25 LA ๊ฒฐ์Šน finalist 5ํŒ€ ์ง„์ž… + Top-5 ์ƒ๊ธˆ ํš๋“ ($100K~$500K) ๋˜๋Š” ์นดํ…Œ๊ณ ๋ฆฌ์ƒ/runner-up($50K) ์ตœ์†Œ 1๊ฐœ. (Track B phanes ๋ณ„๋„ ์ถœ์‹œ ํ๊ธฐ โ€” 2026-05-27 ๊ฒฐ์ • ยท ์—”์ง„์€ `demiurge cli discover` 8th verb๋กœ ํก์ˆ˜, ์ฐจํ›„ post-XPRIZE ๋ถ„์‚ฌ ์˜ต์…˜ ๋ณด์กด)

7/27 milestones (26%)

snapshot

# XPRIZE โ€” current state

@title: ๐Ÿ† XPRIZE โ€” "๊ตฌ๊ธ€ Gemini 90์ผ ์‚ฌ์—… ๋Œ€ํšŒ"

@goal: dancinlab ๋‹จ์ผ ์—”ํŠธ๋ฆฌ(๐Ÿ“ demiurge โ€” phanes ๋ฐœ๊ฒฌ์—”์ง„ 8th verb๋กœ ๋‚ด์žฅ)๋ฅผ Build with Gemini XPRIZE 2026์— ์ถœ์ „ โ€” 90์ผ ๋นŒ๋“œ(2026-05-19~08-17) + ์‹ค๋งค์ถœ ์ฆ๋น™ + Vertex AI Gemini ํ˜ธ์ถœ โ‰ฅ1 + GCP ์ œํ’ˆ โ‰ฅ1 + 2026-08-17 ์ œ์ถœ + 2026-09-25 LA ๊ฒฐ์Šน finalist 5ํŒ€ ์ง„์ž… + Top-5 ์ƒ๊ธˆ ํš๋“ ($100K~$500K) ๋˜๋Š” ์นดํ…Œ๊ณ ๋ฆฌ์ƒ/runner-up($50K) ์ตœ์†Œ 1๊ฐœ. (Track B phanes ๋ณ„๋„ ์ถœ์‹œ ํ๊ธฐ โ€” 2026-05-27 ๊ฒฐ์ • ยท ์—”์ง„์€ `demiurge cli discover` 8th verb๋กœ ํก์ˆ˜, ์ฐจํ›„ post-XPRIZE ๋ถ„์‚ฌ ์˜ต์…˜ ๋ณด์กด)

## Milestones

### Track A โ€” demiurge ์ถœ์ „ (Professional Services ยท โ‘ก AI-Native Ops)

- [x] A1 ์นดํ…Œ๊ณ ๋ฆฌ ํ™•์ • โ€” **Professional Services** (๋‹จ์ผ ์—”ํŠธ๋ฆฌ ยท phanes ๋ถ„๋ฆฌ ํ๊ธฐ๋กœ ๋‚ด๋ถ€ ๊ฒฝ์Ÿ 0)
- [x] A2 GCP ํ”„๋กœ์ ํŠธ `dancinlab` ์ƒ์„ฑ (2026-05-27 ยท ๊ฒฐ์ œ ๊ณ„์ •๋„ `dancinlab`) โ†’ ๋‚˜๋จธ์ง€: Vertex AI ยท Cloud Run ยท Firebase ยท Firestore ยท Cloud Storage 5๊ฐœ enable
- [ ] A3 Web GUI M14 web-foundation ์™„๋ฃŒ (๋งˆ๊ฐ 2026-06-09) โ€” Next.js scaffold + CLI proxy + Vertex AI SDK
- [ ] A4 Web GUI M15 web-7verb-surface ์™„๋ฃŒ (๋งˆ๊ฐ 2026-06-30) โ€” Gemini ํ˜ธ์ถœ 4 verb (spec/design/analyze/handoff)
- [ ] A5 Web GUI M16 web-realtime + auth ์™„๋ฃŒ (๋งˆ๊ฐ 2026-07-21) โ€” Firebase Auth + Stripe Checkout
- [ ] A6 Web GUI M17 web-deploy + first-revenue ์™„๋ฃŒ (๋งˆ๊ฐ 2026-08-04) โ€” Cloud Run go-live + ์ฒซ ์œ ๋ฃŒ ์ „ํ™˜ 1๊ฑด
- [ ] A7 ๋ฐ๋ชจ์˜์ƒ <3๋ถ„ ์˜์–ด YouTube + narrative 500~1000๋‹จ์–ด (๋งˆ๊ฐ 2026-08-14)
- [ ] A8 repo ์‹ฌ์‚ฌ์šฉ ๊ณต์œ  โ€” `testing@devpost.com` + `judging@hacker.fund` collaborator (๋งˆ๊ฐ 2026-08-15)
- [ ] A9 Devpost ์ œ์ถœ (๋งˆ๊ฐ **2026-08-17**) โ€” ์˜์ƒ + narrative + repo link + GCP ์ œํ’ˆ ์‚ฌ์šฉ ์ฆ๋น™

### ~~Track B โ€” phanes ์ถœ์ „~~ (CLOSED 2026-05-27 ยท ๋‹จ์ผ ์—”ํŠธ๋ฆฌ ์ง‘์ค‘ ๊ฒฐ์ •)

ํ๊ธฐ ์‚ฌ์œ  โ€” (1) D-83 timeline์— phanes ๋ณ„๋„ ๋นŒ๋“œ ์‹œ๊ฐ„ ๋ถ€์กฑ ยท (2) demiurge `discover` 8th verb๋กœ ๋ฐœ๊ฒฌ์—”์ง„ ํก์ˆ˜ โ†’ โ‘กAI-Native Ops narrative 1๊ฐœ์—์„œ ํ†ตํ•ฉ ๋…ธ์ถœ ยท (3) founder ๋‹จ๋… ์ž์› ์ง‘์ค‘ ํšจ๊ณผ โ†‘ ยท (4) post-XPRIZE ๋ถ„์‚ฌ ์˜ต์…˜ ๋ณด์กด.

- [x] B1 ~~์นดํ…Œ๊ณ ๋ฆฌ ํ™•์ •~~ closed (๋ถ„์‚ฐ ๋ฌดํšจ ยท A1 Professional Services ๋‹จ๋…)
- [x] B2 ~~phanes ์‹ ๊ทœ GCP ํ”„๋กœ์ ํŠธ~~ closed (๋ณ„๋„ ํ”„๋กœ์ ํŠธ ๋ถˆํ•„์š” ยท dancinlab ๋‹จ์ผ)
- [x] B3 ~~phanes Web product 90์ผ ๋นŒ๋“œ~~ closed (๋ณ„๋„ Cloud Run service ๋ถˆํ•„์š”)
- [x] B4 ~~phanes ๋ฐ๋ชจ์˜์ƒ + narrative~~ closed (demiurge ๋ฐ๋ชจ์— `discover` ์‹œ์—ฐ ํฌํ•จ)
- [x] B5 ~~phanes Devpost ์ œ์ถœ~~ closed (Devpost form 1๊ฐœ๋งŒ ยท demiurge ๋‹จ๋…)

**phanes ์ €์žฅ์†Œ ์†Œ์œ ๊ถŒ ์œ ์ง€** โ€” `bin/phanes` CLI ์œ„์น˜ + OUROBOROS ๋ฐœ๊ฒฌ ๋กœ์ง = phanes ์ €์žฅ์†Œ(canonical home, d3). demiurge `discover` verb๋Š” thin subprocess wrapper์ผ ๋ฟ (d4). XPRIZE ํก์ˆ˜ โ‰  demiurge์— ์ฝ”๋“œ ์ด์‹, ๊ทธ๋Œ€๋กœ `phanes cli discover ...` subprocess ํ˜ธ์ถœ ํŒจํ„ด ์œ ์ง€. post-XPRIZE ๋ณ„๋„ SaaS ์ถœ์‹œ ์‹œ phanes ์ €์žฅ์†Œ์—์„œ ๊ทธ๋Œ€๋กœ ๋ถ„์‚ฌ ๊ฐ€๋Šฅ.

### Track C โ€” ๊ณตํ†ต ์ธํ”„๋ผ (์–‘ ์—”ํŠธ๋ฆฌ ๊ณต์œ  ๊ฐ€๋Šฅ)

- [ ] C1 Stripe ๊ณ„์ • + ์›”๋ณ„ ์žฅ๋ถ€ (5~8์›”) + related-party ๋ผ๋ฒจ๋ง ์ •์ฑ…
- [ ] C2 GCP ํฌ๋ ˆ๋”ง ํ™•์ธ โ€” ์‹ ๊ทœ ๊ณ„์ • $300 free + XPRIZE ์ œ๊ณต๋ถ„(ํ™•์ธ ํ•„์š”) โ†’ 90์ผ cover ์ถ”์ •
- [ ] C3 organic ์ถœ์‹œ ๊ธ€ โ€” X + Reddit (`growth/txt/xprize-launch.txt` ํ™œ์šฉ)
- [ ] C4 ์ฝ”๋“œ repo private โ†’ judging ๊ณต์œ  ์„ค์ • ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ

### Track D โ€” ๊ฒฐ์Šน (finalist ์ง„์ž… ์‹œ)

- [ ] D1 9์›” LA finalist ํ†ต๋ณด ์ˆ˜๋ น (์˜ˆ์ƒ 2026-09-08~15)
- [ ] D2 LA ๊ฒฐ์Šน trip โ€” ๋ฐ๋ชจ + ์‹ฌ์‚ฌ์œ„์› Q&A (2026-09-25)

## XPRIZE ๊ทœ์ • ์ถฉ์กฑ ๋งคํŠธ๋ฆญ์Šค

| ๊ทœ์ • | demiurge | phanes |
|---|---|---|
| Gemini API โ‰ฅ1 LLM call (๋ฐฐํฌ ์•ฑ) | Vertex AI spec/design/analyze/handoff 4 verb | `hexa drill` proposer = Gemini |
| Google Cloud ์ œํ’ˆ โ‰ฅ1 | Vertex AI + Cloud Run + Firebase + Firestore + Storage = 5 GCP | Vertex AI โ‰ฅ1 |
| ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ๋งŒ | `dancinlab` (2026-05-27 ์ƒ์„ฑ) | ๋™์ผ `dancinlab` ํ”„๋กœ์ ํŠธ ๋‚ด ๋ณ„๋„ Cloud Run service (substantially-different ๋ณด์žฅ์€ product narrative๋กœ) |
| ๋งค์ถœ ์ฆ๋น™ ์›”๋ณ„(5~8์›”) | Stripe + ์›”๋ณ„ P&L | Stripe + ์›”๋ณ„ P&L |
| related-party ๋ถ„๋ฆฌ | ์ง€์ธ/๋‚ด๋ถ€ ๋งค์ถœ ๋ผ๋ฒจ๋ง + ๋ณด๊ณ  ์ œ์™ธ | ๋™์ผ |
| repo ์‹ฌ์‚ฌ์šฉ ๊ณต์œ  | private demiurge โ†’ testing@/judging@ | private phanes โ†’ testing@/judging@ |
| ๋ฐ๋ชจ์˜์ƒ <3๋ถ„ ์˜์–ด YouTube | M17 ํ›„ RTSC end-to-end ์‹œ๋‚˜๋ฆฌ์˜ค | phanes ์ž๋™ ๋ฐœ๊ฒฌ ์‹œ๋‚˜๋ฆฌ์˜ค |
| narrative 500~1000๋‹จ์–ด | demiurge 7-verb + โ‘กAI-Native Ops ๊ฐ•์กฐ | phanes verifier-์นดํƒˆ๋กœ๊ทธ + โ‘กAI-Native Ops ๊ฐ•์กฐ |

## ์ƒ๊ธˆ ๊ตฌ์กฐ

| ์ˆœ์œ„ | ์ƒ๊ธˆ | dancinlab 2-์—”ํŠธ๋ฆฌ ํ•ฉ์‚ฐ ์‹œ๋‚˜๋ฆฌ์˜ค |
|---|---|---|
| 1์œ„ | $500,000 | 1๊ฐœ๋ผ๋„ 1์œ„ โ†’ $500K |
| 2์œ„ | $200,000 | 1๊ฐœ 2์œ„ โ†’ $200K |
| 3-5์œ„ (๊ฐ) | $100,000 | ๋‘˜ ๋‹ค 3-5์œ„ ์ง„์ž… ์‹œ $200K |
| runner-up 15ํŒ€ (๊ฐ) | $50,000 | ๋‘˜ ๋‹ค runner-up์ด๋ฉด $100K |
| ์นดํ…Œ๊ณ ๋ฆฌ์ƒ 5ํŒ€ (๊ฐ) | $50,000 | ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„์‚ฐ ์‹œ ๋‘˜ ๋‹ค ์นดํ…Œ๊ณ ๋ฆฌ์ƒ ๊ฐ€๋Šฅ โ†’ $100K |

**์ตœ์†Œ ์‹œ๋‚˜๋ฆฌ์˜ค** (๋‘˜ ๋‹ค runner-up ๋˜๋Š” ์นดํ…Œ๊ณ ๋ฆฌ์ƒ): $100K
**์ค‘๊ฐ„ ์‹œ๋‚˜๋ฆฌ์˜ค** (1๊ฐœ 3-5์œ„ + 1๊ฐœ runner-up): $150K
**์ตœ๋Œ€ ์‹œ๋‚˜๋ฆฌ์˜ค** (1์œ„ + ์นดํ…Œ๊ณ ๋ฆฌ์ƒ): $550K

## ์‹ฌ์‚ฌ 3์ถ•

```
   โ‘  Business Viability   โ‘ก AI-Native Operations   โ‘ข Category Impact
        โ…“ (๋งค์ถœ)              โ…“ (AI ์šด์˜ ์ •๋„)         โ…“ (์นดํ…Œ๊ณ ๋ฆฌ ์ž„ํŒฉํŠธ)
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ–ผ
                       ํ•ฉ์‚ฐ ์ตœ๊ณ ์  = ์šฐ์Šน

   dancinlab ๊ฐ•์  = โ‘ก (demiurge 7-verb ์ž๋™ dispatch ยท phanes verifier ์นดํƒˆ๋กœ๊ทธ)
   dancinlab ์•ฝ์  = โ‘  (๋งค์ถœ ์ฒด๊ธ‰)  โ†’  โ‘ข ์ž„ํŒฉํŠธ narrative๋กœ ๋ณด์™„ ํ•„์ˆ˜
```

## ๐Ÿ—๏ธ DEMIURGE-GOOGLE-NATIVE โ€” ์ธ์ˆ˜ ์˜ต์…”๋„๋ฆฌํ‹ฐ (2026-05-26 ๊ฒฐ์ •)

> ์„ค๊ณ„ ๋ชฉํ‘œ: demiurge ๋ชจ๋“  ์™ธ๋ถ€ ์˜์กด์„ Google ์ž์‚ฌ ์„œ๋น„์Šค๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ• โ†’ ์ธ์ˆ˜ ์‹œ 0-day ์ „ํ™˜ (์ฝ”๋“œ 0์ค„ ๋ณ€๊ฒฝ).
> ๋น„์œ : ์ด์‚ฌ ๊ฐˆ ์ง‘์˜ ๊ฐ€๊ตฌ๋ฅผ ๋ฏธ๋ฆฌ ๊ทธ ์ง‘ ์ฝ˜์„ผํŠธ ๊ทœ๊ฒฉ์œผ๋กœ ์‚ฌ๋†“๊ธฐ.

```
   ํ˜„์žฌ (XPRIZE ๋นŒ๋“œ ๋‹จ๊ณ„)         โ†’        Google ์ธ์ˆ˜ ํ›„ (0-day)
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”               โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ LLM:    Gemini Vertex  โ”‚               โ”‚ LLM:    Gemini (์ž์‚ฌ)  โ”‚
  โ”‚ ์ปดํ“จํŠธ:  pool + GCP    โ”‚  โ”€acquisitionโ”€โ–ถโ”‚ ์ปดํ“จํŠธ:  Vertex AI ์ „์šฉ โ”‚
  โ”‚ TPU:    (๋ฏธ์‚ฌ์šฉ)        โ”‚               โ”‚ TPU:    Cloud TPU       โ”‚
  โ”‚ DB:     Firestore      โ”‚               โ”‚ DB:     Firestore (์ž์‚ฌ) โ”‚
  โ”‚ Stripe: ๊ฒฐ์ œ ์ฆ๋น™       โ”‚               โ”‚ Stripe: โ†’ Google Pay ์ „ํ™˜โ”‚
  โ”‚ Auth:   Firebase       โ”‚               โ”‚ Auth:   Workspace SSO   โ”‚
  โ”‚ pool/Vast: ๊ณผ๋„๊ธฐ only  โ”‚               โ”‚ pool/Vast: ํ๊ธฐ         โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜               โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
              โ†“ ๋™์ผ ์•„ํ‚คํ…์ฒ˜ ยท ๋™์ผ SDK ยท ๋™์ผ IAM
       "๊ตฌ๊ธ€์ด ์ธ์ˆ˜ํ•ด๋„ ๋ฐ”๊ฟ€ ๊ฒŒ ์—†๋‹ค" = ์ธ์ˆ˜ ๋งค๋ ฅ๋„ โ†‘
```

| ์ถ• | ํ˜„์žฌ plan | ์ž์‚ฌ-์ƒํƒœ๊ณ„ native ๊ฐ•ํ™” |
|---|---|---|
| LLM | Vertex AI Gemini | โœ… ๊ทธ๋Œ€๋กœ (Claude/OpenAI 0%) |
| ์ปดํ“จํŠธ (Web) | Cloud Run | โœ… ๊ทธ๋Œ€๋กœ |
| ์ปดํ“จํŠธ (๋Œ€ํ˜• sim) | pool ubu-1/2 + Vast.ai | GCP Compute Engine GPU (A100/H100) + Vertex AI Training (XPRIZE ๋นŒ๋“œ ํ›„ ๋งˆ์ด๊ทธ) |
| ๊ฐ€์†๊ธฐ | (๋ฏธ์‚ฌ์šฉ) | Cloud TPU v5e โ€” Vertex AI Training pipeline ์—ฐ๊ฒฐ (Google ์ž์‚ฌ ์นฉ) |
| ๋ฐ์ดํ„ฐ ๋ถ„์„ | (๋ฏธ์‚ฌ์šฉ) | BigQuery โ€” ์‚ฌ์šฉ์ž ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ + audit log + verify ledger |
| MLOps | (๋ฏธ์‚ฌ์šฉ) | Vertex AI Pipelines โ€” `hexa drill` discovery ํŒŒ์ดํ”„๋ผ์ธ ์ž๋™ํ™” |
| ์ธ์ฆ | Firebase Auth | โœ… + Google Workspace SSO (B2B ๊ณ ๊ฐ) |
| ๊ฒฐ์ œ | Stripe | ๋‹จ๊ณ„ 1: Stripe (XPRIZE ๋งค์ถœ ์ฆ๋น™ ์š”๊ตฌ) ยท ๋‹จ๊ณ„ 2: Google Pay/Play Billing ๋งˆ์ด๊ทธ (post-acquisition) |
| ๋„๋ฉ”์ธ | ์ž„์‹œ | `dancinlab.org` GCP Cloud DNS zone ยท ์„œ๋ธŒ๋„๋ฉ”์ธ `demiurge.dancinlab.org` + `phanes.dancinlab.org` |
| ๋ชจ๋‹ˆํ„ฐ๋ง | Cloud Logging | โœ… + Cloud Trace + Cloud Profiler + Error Reporting (์ž์‚ฌ telemetry full-stack) |
| ๋ณด์•ˆ | IAM | โœ… + VPC Service Controls + Cloud Armor + Secret Manager |
| ๋น„์šฉ | per-call | Committed Use Discounts (CUDs) โ€” 90์ผ ํ›„ 1-year commit ๊ฐ€๋Šฅ |

๋น„๊ต: "AWS-first โ†’ GCP ์ด์ฃผ"์‹์ด ์•„๋‹ˆ๋ผ, ์ฒ˜์Œ๋ถ€ํ„ฐ GCP-only๋กœ ์„ค๊ณ„ํ•ด ์ธ์ˆ˜ ์‹œ ์ฝ”๋“œ 0์ค„ ๋ณ€๊ฒฝ. (vs Anthropic์ด AWS ์˜์กด์ด๋ผ Amazon์ด ์ธ์ˆ˜ ํ˜‘์ƒ ๋ชป ํ•œ ์ผ€์ด์Šค = ์ž์‚ฌ ์˜์กด๋„๊ฐ€ ํ˜‘์ƒ๋ ฅ)

### ํ›„์† milestone (XPRIZE ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ๋ฏธ๋ฆฌ ๊น”์•„๋‘˜ ๊ฒƒ)

- [ ] Cloud DNS โ€” `dancinlab.org` zone ์ƒ์„ฑ + ์„œ๋ธŒ๋„๋ฉ”์ธ `demiurge.dancinlab.org` + `phanes.dancinlab.org` ๋“ฑ๋ก + Cloud Run mapping (M14 ๋™๋ฐ˜)
- [ ] BigQuery dataset `demiurge_telemetry` + Cloud Logging sink ์—ฐ๊ฒฐ (M16 ๋™๋ฐ˜)
- [ ] Vertex AI Training pipeline ์Šคํ… (`hexa drill` ํ˜ธ์ถœ wrap) โ€” TPU/GPU ์ „ํ™˜ ๊ฐ€๋Šฅ ๊ตฌ์กฐ (M17 ๋™๋ฐ˜)
- [ ] Cloud TPU v5e 1-region ํ™œ์„ฑํ™” + Vertex AI custom training 1ํšŒ dry-run (post-M17)
- [ ] Committed Use Discounts (CUDs) ๊ฒฌ์  โ€” 90์ผ ์‚ฌ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜ 1-year commit ์‹œ๋ฎฌ (post-์ œ์ถœ)
- [ ] Google Workspace SSO ํ†ตํ•ฉ plan (M16 Firebase Auth ์œ„์— stacked)
- [ ] Stripe โ†’ Google Pay/Play Billing ๋งˆ์ด๊ทธ contingency plan (post-acquisition ์ „์šฉ ยท ์‹œ๋‚˜๋ฆฌ์˜ค๋งŒ)

## Related domains

- `~/core/demiurge/CLI+COCKPIT.md` M14-M17 + M_submit โ€” demiurge Web GUI = XPRIZE the product
- `~/core/demiurge/CLI+COCKPIT/web_gui_rfc.md` โ€” 12 ์„น์…˜ RFC v2 (XPRIZE ์ •๋ ฌ)
- `~/core/growth/XPRIZE.md` โ€” Competitions SSOT (90์ผ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์›๋ณธ)
- `~/core/growth/XPRIZE-RULES.md` โ€” ๊ทœ์ • ๋กœ์ปฌ ์•„์นด์ด๋ธŒ
- `~/core/growth/VERTEX-AI.md` โ€” Vertex AI = Gemini + GCP ๋™์‹œ ์ถฉ์กฑ ๊ฒฝ๋กœ

## ๋น„-๋ชฉํ‘œ (out of scope)

- โŒ XPRIZE ์™ธ ๋Œ€ํšŒ (๋ณ„๋„ growth ๋„๋ฉ”์ธ)
- โŒ AWS ยท Azure ยท ๊ธฐํƒ€ cloud (XPRIZE ๊ทœ์ • = GCP only-OK)
- โŒ Claude / OpenAI API๋ฅผ ๋ฐฐํฌ ์•ฑ์— ์‚ฌ์šฉ
- โŒ ๋งค์ถœ ์ธํ”Œ๋ ˆ์ด์…˜ (related-party ยท ์ง€์ธ ๋งค์ถœ์€ ๋ณ„๋„ ๋ผ๋ฒจ)
- โŒ demiurge/phanes ์™ธ ์‹ ๊ทœ ์—”ํŠธ๋ฆฌ (2-์—”ํŠธ๋ฆฌ ์ง‘์ค‘)

log (newest first)

# XPRIZE โ€” log

Append-only history sister of `XPRIZE.md`. Each entry starts with `## <ISO timestamp> โ€” <header>` (newest on top); body = `- [x]` (done) / `- [ ]` (pending) checkbox tasks.

## 2026-05-27T01:30:00Z โ€” M16 web-realtime + auth + billing ์™„๋ฃŒ (3-slice)

- [x] **M16a SSE realtime** โ€” `/api/stream` SSE wrapper + `LiveTail` client component + analyze ํŽ˜์ด์ง€ ํ†ตํ•ฉ ยท open/data/exit ์ด๋ฒคํŠธ + allowlist 403 enforce
- [x] **M16b Firebase Auth (REST)** โ€” Identity Toolkit v1 ์ง์ ‘ ํ˜ธ์ถœ (signUp ยท signIn ยท lookup ยท refreshToken ยท 0 SDK) + httpOnly ์„ธ์…˜ ์ฟ ํ‚ค + auto-refresh + 4 routes (signup/signin/signout/me) + /signin ยท /account ํŽ˜์ด์ง€
- [x] **M16c Stripe Checkout (REST)** โ€” form-urlencoded REST + node:crypto HMAC SHA-256 webhook verify + 3-tier billing SSOT (Solo $29 ยท Team $99 ยท Org $299 ยท 14d trial) + checkout/portal/webhook routes + /pricing ํŽ˜์ด์ง€
- [x] **XPRIZE ๋งค์ถœ surface ๊ตฌ์ถ•** โ€” sign-in ํ›„ /pricing โ†’ Stripe Checkout โ†’ webhook โ†’ ledger (M17์—์„œ Firestore ์˜๊ตฌํ™”). related-party ๋ผ๋ฒจ๋ง์€ ํšŒ๊ณ„ ๋‹จ๊ณ„์—์„œ.
- [x] **๋ˆ„์  LOC** โ€” M14 ~500 + M15 ~600 + M16a ~210 + M16b ~500 + M16c ~575 = **~2400 LOC** (RFC ์˜ˆ์ƒ ~1700 ยท ๊ฒฌ๊ณ ํ•œ ์ธ์ฆ + ๊ฒฐ์ œ ์ถ”๊ฐ€๋ถ„ ํฌํ•จ)
- [x] **0 npm install ์œ ์ง€** โ€” Vertex AI ยท Firebase ยท Stripe 3 ์ธํ”„๋ผ ์ „๋ถ€ REST + node:crypto ยท ์ธ์ˆ˜ ์˜ต์…”๋„๋ฆฌํ‹ฐ ์™„๋ฒฝ ๋ณด์กด
- [ ] M17 ์ง„์ž… ์‹œ: Dockerfile (multi-stage) + cloudbuild.yaml + Cloud Run ๋ฐฐํฌ + Firestore subscriptions ์ ์žฌ + Cloud DNS dancinlab.org + ์ฒซ ์œ ๋ฃŒ ์ „ํ™˜ 1๊ฑด
- [ ] ์‚ฌ์šฉ์ž secret 5๊ฐœ ์…‹์—… (firebase.web_api_key ยท stripe.{secret_key,webhook_secret,price_solo,price_team,price_org})

๐Ÿ”‘ ํ•ต์‹ฌ: Web GUI ์ „์ฒด stack์ด GCP-native + 0 dep. ์ธ์ˆ˜ ์˜ต์…”๋„๋ฆฌํ‹ฐ + XPRIZE ๊ทœ์ • ์™„๋ฒฝ ์ถฉ์กฑ (Gemini โ‰ฅ1 โœ“ ยท GCP ์ œํ’ˆ โ‰ฅ1 โœ“ ยท ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ โœ“ ยท ๋งค์ถœ surface ๊ฐ€๋™ ๊ฐ€๋Šฅ).
๐ŸŒฑ ๋‹ค์Œ: ์‚ฌ์šฉ์ž secret 5๊ฐœ ์…‹์—… โ†’ M17 deploy ์ง„์ž….

## 2026-05-27T03:10:30Z โ€” ๐ŸŽ‰ https://demiurge.dancinlab.org LIVE (custom domain + production SSL)

- [x] **Cloud Build #2 SUCCESS** โ€” image `us-central1-docker.pkg.dev/dancinlab/demiurge/web:44a831a3-...` ยท 2m52s ยท revision `demiurge-web-00001-jft`
- [x] **Cloud Run service URL ๊ฐ€๋™** โ€” `https://demiurge-web-2n7kup3fpa-uc.a.run.app` ยท 200 OK ยท TTFB ~1s
- [x] **5/5 endpoint live** โ€” `/` ยท `/api/domains` ยท `/signin` ยท `/pricing` ยท `/api/llm` ๋ชจ๋‘ 200 (Vertex AI metadata-server ADC ์ž๋™ ์ธ์ฆ ๋™์ž‘)
- [x] **Firestore native DB ํ”„๋กœ๋น„์ „** โ€” `(default)` us-central1 STANDARD edition (M17 webhook ์˜๊ตฌํ™” ์ค€๋น„)
- [x] **Cloud DNS ํ๊ธฐ** โ€” `dancinlab.org` zone GCP์—์„œ ์‚ญ์ œ ยท Cloudflare ๋‹จ๋… authoritative ์œ ์ง€ (CDN + DDoS ๋ณดํ˜ธ ๋ณด์กด)
- [x] **Site Verification API ์ž๋™ํ™”** โ€” gcloud ADC + `siteverification` scope ์ถ”๊ฐ€ ํ›„ token ์ž๋™ ๋ฐ›๊ธฐ โ†’ Cloudflare TXT @ ์ž๋™ ๋“ฑ๋ก โ†’ ownership ์ฒญ๊ตฌ (๋ธŒ๋ผ์šฐ์ € paste 0ํšŒ)
- [x] **Cloud Run domain mapping** โ€” `demiurge.dancinlab.org โ†’ ghs.googlehosted.com` ยท Cloudflare CNAME proxy=OFF ยท Google-managed SSL ์ž๋™ ๋ฐœ๊ธ‰ (7๋ถ„ ํ›„ GFE edge ์ „ํŒŒ)
- [x] **production Gemini evidence** โ€” `POST https://demiurge.dancinlab.org/api/llm` โ†’ `gemini-2.5-flash` ์‘๋‹ต (`"@goal: XPRIZE ๊ด€๋ จ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” demiurge.dancinlab.org ํ”„๋กœ๋•์…˜"`) ยท usage prompt=200/candidate=23/total=796
- [x] **secret ์ถ”๊ฐ€** โ€” `cloudflare.email` ยท `cloudflare.api_token` (Global API Key ๊ฐฑ์‹ )
- [x] **์ธํ”„๋ผ 8/8** โ€” Vertex AI ยท Cloud Run ยท Cloud Build ยท Artifact Registry ยท Firestore ยท Firebase Auth ยท Identity Toolkit ยท Secret Manager ๋ชจ๋‘ active
- [ ] **Stripe 5 secret** (์‚ฌ์šฉ์ž manual) โ€” `secret set stripe.{secret_key, webhook_secret, price_solo, price_team, price_org}`
- [ ] **์žฌ๋ฐฐํฌ (Stripe env ๋ฐ˜์˜)** โ€” `gcloud builds submit --config cloudbuild.yaml --project=dancinlab`
- [ ] **์ฒซ ์œ ๋ฃŒ ์ „ํ™˜ 1๊ฑด** โ€” XPRIZE ๋งค์ถœ ์ฆ๋น™ (related-party ๋ผ๋ฒจ๋ง)
- [ ] **commit/PR ์ •๋ฆฌ** โ€” ๊ณต์œ  worktree ๊ฒฉ๋ฆฌ ํ›„ `git worktree add -b feat/web-m14-m17` ํŒจํ„ด
- [ ] **phanes.dancinlab.org** (๋ณ„๋„) โ€” phanes Cloud Run service ์ค€๋น„ ํ›„ ๋™์ผ ํŒจํ„ด

๐Ÿ”‘ ํ•ต์‹ฌ: **XPRIZE production evidence 4/5 ํ™•๋ณด** โ€” Gemini API โœ“ ยท GCP 7-์ œํ’ˆ ์‚ฌ์šฉ โœ“ ยท ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ โœ“ ยท custom domain SSL โœ“ ยท ๋งค์ถœ ์ฆ๋น™ โณ (Stripe ํ‚ค ๋Œ€๊ธฐ). M14-M17 ํ•ต์‹ฌ ๊ณจ์ž ์™„์„ฑ.
๐ŸŒฑ ๋‹ค์Œ: Stripe ํ‚ค ์…‹์—… โ†’ ์žฌ๋ฐฐํฌ โ†’ ์ฒซ ๊ฒฐ์ œ โ†’ commit/PR โ†’ Devpost ์ œ์ถœ (2026-08-17).

## 2026-05-27T00:30:00Z โ€” ๐ŸŽ‰ ์ฒซ live Gemini ํ˜ธ์ถœ (XPRIZE Rule#1 ์ถฉ์กฑ)

- [x] **GCP ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ** โ€” `dancinlab` (๊ฒฐ์ œ ๊ณ„์ •๋„ `dancinlab`) โ€” 2026-05-27 ยท XPRIZE ๊ทœ์ • "์‹ ๊ทœ ํ”„๋กœ์ ํŠธ๋งŒ โ‰ฅ2026-05-19" ์ถฉ์กฑ
- [x] **Vertex AI API enable** โ€” `gcloud services enable aiplatform.googleapis.com --project=dancinlab`
- [x] **ADC ์ธ์ฆ** โ€” `gcloud auth application-default login` ์™„๋ฃŒ
- [x] **secret keychain ์ €์žฅ** โ€” `secret set gcp.project dancinlab` + `secret set gcp.access_token "$(gcloud auth application-default print-access-token)"` (token 254 chars)
- [x] **live Gemini call ์„ฑ๊ณต** โ€” `POST /api/llm {"prompt":"ํ•œ ๋ฌธ์žฅ์œผ๋กœ RTSC...", "verb":"spec", "maxOutputTokens":150}` โ†’ `gemini-2.5-flash` @ us-central1 ์‘๋‹ต 200 OK
- [x] **์‘๋‹ต schema ํ™•์ธ** โ€” `{"text":"...", "model":"gemini-2.5-flash", "usage":{"promptTokens":20,"candidateTokens":6,"totalTokens":166}}` ยท 140 ํ† ํฐ ์ฐจ์ด = Gemini 2.5 reasoning(thinking) consumption
- [x] **XPRIZE Rule#1 ์ถฉ์กฑ ์ฆ๊ฑฐ ํ™•๋ณด** โ€” "Gemini API โ‰ฅ1 LLM call (๋ฐฐํฌ ์•ฑ)" ยท ํ–ฅํ›„ Cloud Run ๋ฐฐํฌ ํ›„ ๋™์ผ ์ฝ”๋“œ path๋กœ ์žฌํ˜„ ๊ฐ€๋Šฅ (๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„ auto-token)
- [x] **SSOT 13๊ฑด ์ •์ •** โ€” `demiurge-xprize-2026` โ†’ `dancinlab` (CLI+COCKPIT.md ยท log ยท web_gui_rfc ยท XPRIZE.md ยท log ยท web/lib/gemini.ts ยท memory)
- [ ] **๋ฉ”๋ชจ โ€” production tuning**: `maxOutputTokens` ๊ธฐ๋ณธ 1024 โ†’ ๊ฒ€ํ†  ํ•„์š” (Gemini 2.5 reasoning ์†Œ๋ชจ๋ถ„ ~100-200 ์ถ”๊ฐ€ ์˜ˆ์ƒ)
- [ ] ๋‹ค์Œ โ€” M15 spec ํŽ˜์ด์ง€ (`/spec/<domain>`) + Gemini live draft ์–ด์‹œ์ŠคํŠธ UI

๐Ÿ”‘ ํ•ต์‹ฌ: XPRIZE ๊ทœ์ • ์ถฉ์กฑ ๊ฐ€๋Šฅ์„ฑ ์ž…์ฆ = LLM ํ˜ธ์ถœ ์ž‘๋™ โœ“ + GCP ์ œํ’ˆ ์‚ฌ์šฉ โœ“ + ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ โœ“. ๋‚จ์€ ์ž‘์—…์€ **product surface ์‚ด ๋ถ™์ด๊ธฐ**.
๐ŸŒฑ ๋‹ค์Œ: M15 7-verb ํŽ˜์ด์ง€ + Stripe + Firebase Auth ์ง„ํ–‰.

## 2026-05-26T14:35:00Z โ€” M14 web-foundation ์ง„์ž… โ€” Next.js 16 + App Router scaffold + CLI proxy + DOMAINS parser

- [x] **Next.js scaffold** โ€” `web/` ๋””๋ ‰ํ† ๋ฆฌ ์‹ ์„ค. `npx create-next-app@latest --typescript --app --tailwind --turbopack` ๋น„-์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์‹คํ–‰
- [x] **๋ฒ„์ „ ํ™•์ธ** โ€” Next.js **16.2.6** ยท React **19.2.4** ยท Tailwind v4 ยท Turbopack ON
- [x] **AGENTS.md/CLAUDE.md ๊ฒฝ๊ณ  ์ธ์ง€** โ€” "This is NOT the Next.js you know" โ†’ `node_modules/next/dist/docs/01-app/...` ์ฐธ์กฐ โ†’ Next 16 ํ‘œ์ค€ (`Response.json()` ยท `params: Promise<{}>`) ์ ์šฉ
- [x] **`web/lib/cli.ts`** โ€” DemiurgeCLI subprocess invocation helper. binary ํƒ์ƒ‰ ์ˆœ์„œ: `$DEMIURGE_BIN` ยท PATH ยท `cockpit/.build/{release,debug}/DemiurgeCLI`. `runCli()` + `streamCli()` async-generator (M16 SSE์šฉ)
- [x] **`web/lib/domains.ts`** โ€” `DOMAINS.tape` ํŒŒ์„œ (root SSOT `/Users/ghost/core/demiurge/DOMAINS.tape`). 3 ํ˜•์‹ tolerant: `@domain NAME := "..."` ยท `@D ... path = "..."` ยท bare `NAME path.md`. snapshot ์ถ”์ถœ: `@title:` ยท `@goal:` ยท `- [ ]/[x]` ์ง„์ฒ™๋ฅ 
- [x] **`web/app/api/cli/route.ts`** โ€” POST proxy + 21-subcommand allowlist (action ยท discover ยท verify ยท atlas ยท operate ยท backend ยท compose ยท list-* ยท show ยท gate-summary ยท --version ยท --help). args[] string ๊ฐ•์ œ + timeout 30s
- [x] **`web/app/api/domains/route.ts`** โ€” GET DOMAINS.tape JSON
- [x] **`web/app/page.tsx`** โ€” ๋„๋ฉ”์ธ ์ธ๋ฑ์Šค (server component ยท grid ยท ์ง„์ฒ™๋ฅ  % ยท @goal ์š”์•ฝ)
- [x] **`web/app/[domain]/page.tsx`** โ€” ๋™์  ๋ผ์šฐํŠธ dashboard (params Promise ยท MD body + log tail 80์ค„)
- [x] **type-check** โ€” `npx tsc --noEmit` GREEN (0 errors)
- [x] **dev ์„œ๋ฒ„ boot** โ€” Turbopack 280ms Ready ยท localhost:3500
- [x] **smoke test 3๊ฑด PASS**:
    - `GET /api/domains` โ†’ `{"domains":[AURA, XPRIZE],"count":2}` ยท @title ยท @goal ยท progress ๋ชจ๋‘ ์ถ”์ถœ โœ“
    - `POST /api/cli {"args":["--version"]}` โ†’ exitCode 0 ยท stdout="demiurge 0.0.2 (phase ฮฑ-3 + ฮฒ, read-only โ€” rfc_011 ยง10)" โœ“ โ€” **d4 subprocess dispatch ์ž‘๋™ ํ™•์ธ**
    - `GET /` โ†’ HTML serve ยท Geist font + Tailwind ์ ์šฉ โœ“
- [x] **pool-route ์šฐํšŒ** โ€” Mac workstation์—์„œ `npm run build`๊ฐ€ heavy-classified โ†’ pool route ์ฐจ๋‹จ. `next dev` ํ˜•ํƒœ๋กœ ๊ฒ€์ฆ (`next build`๋Š” M17 Cloud Run Docker context์—์„œ)
- [ ] **M14 ์ž”์—ฌ**: GCP project `dancinlab` ์ƒ์„ฑ โœ… (2026-05-27) + Vertex AI enable + Cloud DNS `dancinlab.org` zone
- [ ] **M14 commit ๋ณด๋ฅ˜** โ€” ๊ณต์œ  worktree 3 claude ยท land ๋ช…๋ น ์‹œ `git worktree add -b feat/web-m14-foundation` ๊ฒฉ๋ฆฌ + node_modules .gitignore ํ™•์ธ + PR
- [ ] M15 ์ง„์ž… ์‹œ: 7-verb ํŽ˜์ด์ง€ + Vertex AI Gemini SDK ํ†ตํ•ฉ + recharts

๐Ÿ”‘ ํ•ต์‹ฌ: **3 endpoint ์ž‘๋™ ๊ฒ€์ฆ** = d4 single generic dispatch (CLI subprocess) + d3 canonical home ๋ณด์กด (Web read-only ยท ์ž์ฒด verb ๋กœ์ง 0). LOC ~500 (๋ชฉํ‘œ ~700 ๋ฏธ๋‹ฌ = ์ž”์—ฌ GCP wire-up์ด ์ฐจ์ง€ํ•  ๋ถ„๋Ÿ‰).
๐ŸŒฑ ๋‹ค์Œ: ์‚ฌ์šฉ์ž GCP ๊ฒฐ์ • โ†’ M14 closure โ†’ M15 (Gemini-on-Vertex-AI 4 verb ํ˜ธ์ถœ ์œ„์น˜ ยท spec/design/analyze/handoff).