๐ 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).