FAQ · 常見問題
Questions evaluators tend to ask, with the answer plus where to look in the repo for proof.
評審常問的問題 — 附上答案 + repo 裡哪裡可以驗證。
Q · What exactly does 'zero app infrastructure' mean?
所謂「零應用基礎設施」到底是什麼?
Pre-configured: Azure subscription, AAD Owner role, tenant, resource providers registered, DNS zone control, GitHub org, local CLI tools installed. These are listed in build.md §1 Pre-granted permissions.
Zero: no Container App, no SQL, no Key Vault, no ACR, no Storage, no Speech — the target Resource Group is empty at the start of every iteration.
預先配置:Azure 訂閱、AAD Owner、tenant、resource providers、DNS zone、GitHub org、 本機 CLI 工具(全列於 build.md §1)。零:無任何預建 Azure 資源,目標 RG 完全空。
Q · Why 11 checkpoints if build.md has 17 sections?
build.md 有 17 節,為什麼只有 11 個 checkpoint?
Checkpoints mark verifiable, timeable, rollback-able state transitions— not "one per section." 17 − 6 non-execution sections (§0/§0.5/§1/§3/§11/§14) − 2 conditionally-skipped sections (§6.2/§6.3) = 9 execution sections, adjusted for §4's 2-CP split and §5.2 ordering = 11 CP total.
CP 標記的是「可驗證、可計時、可 rollback 的狀態轉換點」,不是每節一個。計算見mark-ai-talk/0424-002.md Q3。
Q · What counts as 'qualified' — i.e. a good iteration?
什麼算「合格」iteration?
Three conditions, all required:
- git working tree clean throughout §D.1→§D.5 (no source edits mid-run)
- §D.1 to §D.5 all steps complete
- §E 6/6 programmatic checks green
If any condition fails, the iteration is disqualified. It still gets registered here with qualified: false — failure is evidence too.
三個條件全都要滿足才算合格。失敗也會進 dashboard(誠實記錄)。規則源於 mark-ai-agree/0422-fail-fix-restart-loop.md。
Q · Why Azure SQL Basic DTU for the dashboard — not SQLite, not Postgres?
Dashboard 為什麼用 Azure SQL Basic DTU,不是 SQLite / Postgres?
Stack consistency with Speak Up (same Prisma sqlserver provider), always-warm (no 20–60s cold start like serverless), ~US$5/month (cheaper than Postgres Flexible B1ms at ~$12), and 100% Azure narrative holds. SQLite would need persistent volume + single-replica handling. Postgres Burstable costs 2.4× more without any gain for this workload.
理由:stack 跟 Speak Up 一致、永遠 warm、最便宜、保住「100% Azure」敘事。完整分析見 mark-ai-talk/0424-002.md Q10。
Q · Why two doors — REST and MCP — for registering?
為什麼登記有兩道門(REST + MCP)?
REST (POST /api/iterations) is the portable fallback — any Claude Code session (or plain curl) can use it. Preserves Angle A: anyone who clones showcase-001-genesis can register.
MCP (register_iteration tool at /api/mcp) is the Claude-native path: structured args, session-scoped, Anthropic protocol. Same DB backend. Scoped — only for dashboard interactions, not for wrapping Azure CLI.
REST = always-works fallback(保 Angle A 可攜性);MCP = Claude Code 原生路徑。同一後端,兩個前端。 完整討論見 mark-ai-talk/0424-002.md Q8–Q9。
→ For copy-paste curl examples for both REST and MCP, see /about · API Reference。
Q · Can I rebuild Speak Up on my own Azure subscription?
我可以用自己的 Azure 訂閱重現 Speak Up 嗎?
Yes, with the prerequisites from build.md §1: an Azure subscription with Owner role, AAD tenant, registered resource providers, Azure Speech quota (S0), DNS zone you control, GitHub org/account, and local CLI tools. Clone aipmtw/showcase-001-genesis, export the env vars in §0.5, follow rebuild-checklist.md §D.
可以。前提條件列在 build.md §1。Clone repo → export env 變數 → 照 rebuild-checklist §D 跑。預估花費見下一題。
Q · What's the cost per iteration?
每次 iteration 花多少錢?
< US$1 per iteration. Iteration RGs live for ~15 minutes then get torn down; the long-running costs are on the dashboard side: Azure SQL Basic (~$5/month), Container App (~$3/month with min-replicas=1), Log Analytics & App Insights (~$1/month). Total ~US$5–10/month, all under the Toastmasters D67 Azure Sponsorship.
單次 iteration 約 < US$1。長存成本在 dashboard 側,全部月費約 US$5–10, 在 D67 Sponsorship 預算內。
Q · What if build.md breaks because Azure CLI changes?
build.md 被 Azure CLI 行為變更搞壞怎麼辦?
That's the source bug case (fail-fix-restart rule). Claude Code snapshots the current build.md, fixes the broken step, adds an inline annotation (per spec/001/build-md-authoring.md Rule 2), updates the top Changelog, commits, and restarts with a new letter. The 14-minute number only counts clean runs — no hidden patches.
Real example: iter 2026-04-24-a disqualified because §7's grep -q blob stopped matching after Azure CLI output format changed. Fix in commit 94ce474. Iter 2026-04-24-b qualified at 805s.
觸發 source bug 流程:snapshot → 修 → 標註 → 重跑。14 分鐘數字只算乾淨跑。 實例見 2026-04-24-a → 2026-04-24-b commit 94ce474。