产品里不存在下注、押注、赔率、庄家、彩池这类机制。
RECORD · EVIDENCE
实测证据与授权原话
对外那一页上的每一句硬结论,在这一页都能找到它是从哪来的:老板原话逐字入库、引擎与包体的 file:line 实测、盈利模式全表、六条风险决策与它们的授权边界、分级证据独立重跑的结果。
A0 · POSITIONING CHANGE · reits-knowledge 443 §P-0
定位变更(2026-08-02):这次是「约束整体搬家」,不是「约束普遍解除」。
母版写死「本节不许被压缩、不许被转述、不许被删」。读者必须能从这一段看出:这里发生过一次定位变更,变更前是什么、变更后是什么、哪些旧结论因此作废。本节压缩自 443 号 §P-0,完整原文以 reits-knowledge 为准(镜像 1451 行 · sha256 a539b73f5a373ff1…)。
老板原话(2026-08-02,逐字引用,不改一个字)不结合赌 我们只是猜实际事件 所以不要和 polymarket 扯上关系 虚拟币也不接入业务 只是一个元宇宙 im 可以在里面开店 开公司 等等 可以在里面结合一些实际业务
「预测真实世界事件」这个玩法保留,但必须以零筹码形态存在 —— 参照 Metaculus / Good Judgment Open 这类纯预测准确度平台,而不是 Polymarket / Kalshi 这类合约市场。
不做它的客户端、不引用它的品牌、不承接它的监管阴影。是否仍接其公开数据 API 作为「真实事件」的事实源,是一个需要单独判定的问题 ⇒ 登记为 PD-28,不给默认答案。
不接链、不接钱包、不接交易所、不做任何加密货币相关功能。
可在其中开店、开公司,并可结合一些真实业务。
| 维度 | 变更前的前提(2026-08-01 及以前) | 变更后的前提(2026-08-02 起) |
|---|---|---|
| 产品定性 | 模拟投资 / 预测市场(含模拟仓下注机制) | 元宇宙 IM + 零筹码「猜实际事件」+ 可开店开公司 |
| 年龄分级驱动因素 | 模拟仓 ⇒ 自报 Simulated Gambling ⇒ 争 13+ / 落 18+ | 社交信息流(Social Media capability)⇒ 13+(澳区 16+)。Simulated Gambling 是否仍要报,悬在 PD-24 上。 |
| 法人主体要求的来源 | 苹果对 gambling 的主体要求 | 电商法平台义务、真实资金收付、可能的 banking and financial services 认定 —— 理由被替换,负担没消失。 |
| 商标类目 | 36 / 42(金融) | 9 / 38 / 41 / 42 / 45(软件、通讯、娱乐、技术服务、法律与社交)—— 障碍面是重画的,不是缩小的。 |
| 收入骨架 | 订阅单腿 | 待重拍(PD-25):是否扩为「订阅 + 实物/线下服务撮合抽佣」。 |
| 加密货币 | 「默认裁决:永不做」 | 「老板裁决:虚拟币不接入业务,锁死」。 |
| Polymarket | A-12 已裁决「只接 API 做数据」 | 与原话第 3 条正面冲突 ⇒ 登记 PD-28,A-12 裁决内容本身不改。 |
三处必须登记为「执行不了」,而不是「结论错了」
- PD-02 的 $1.88 / $18.88 两个价格数字在美区 App Store 配置不出来 —— 不是「近似问题」,是根本选不出来。PD-02 退回 ✅(部分),推翻登记 443 X-20。
- 441 §2.7 的 age_rating 枚举 ["4+","9+","12+","17+"] 在苹果新分级带下两头都错,既表达不了 18+ 也表达不了 13+/16+。目标枚举写死为 ["4+","9+","13+","16+","18+"]。
- A-12「只接 Polymarket API 做数据」与老板原话正面冲突。A-12 的裁决内容不改,新开 PD-28 交老板澄清。
这组判定数字自己也被推翻过
旧数「解除 12 / 收窄 6 / 存活 9 / 反而加重 7」已被推翻(443 X-24):合计 34 而执行面全表只有 22 行,34 数不出来。「反而加重 7」是四桶里唯一旧数就对的,保留不动。
不许因为新定位「听起来更安全」就一路给绿灯。 本页 A7 段的推翻台账里能查到这一条(443 X-24)。
A1 · METAVERSE · reits-knowledge 441 第 4 章
元宇宙规划:空间世界 = 小程序,四端统一
老板决定 13 的字面架构、三条跨端纪律、品类负面证据、两条自洽路线与三条技术硬墙。母版不代裁决,形态之争列 PD-03。本节压缩自 441 号第 4 章,完整原文以 reits-knowledge 为准(镜像 751 行 · sha256 8b9212d972761fd9…)。
老板决定 13(原话)空间世界 = 小程序(webview),四端统一;IM 里找人建企业/开店。
元宇宙形态:一套世界两层,两个入口进两层
进全局俯视层:一片岛群,只看得到建筑(每个群 / 企业一栋),看不到人,进不去别人的,每栋挂一个申请入口。
申请通过或被邀请后走大厅进入某群室内 —— 室内群空间层才走动、见在场成员、走近即语音。
群 = 企业 = 岛上一栋建筑 = 聊天室;同一套包格式、同一份货架、同一个沙豆账本。 2026-08-06 把 D-6 从「手机端货架 / 岛上走近电脑」修订为双层双入口;成员在不在线直接复用 IM 本身的状态,元宇宙层不另造一套。
「开店、开公司」落在这套平台上:企业小程序就是店与公司的载体,付费认证也落小程序端(PD-12 已裁决,既不是 iOS 也不是 Web,是第三条)。⚠️ 开店开公司是否涉真实资金收付仍未拍板 —— 纯虚拟经营与真实资金收付两层的合规后果差一个数量级,见 PD-25 / PD-26。
⚠️ 引擎硬指标两条(邻近触发 / 交互区、世界内嵌 WebView)未对 Phaser 4.2.1 逐条验证 ⇒ 444 UV-12。「世界内嵌 WebView」不是引擎的能力,是宿主的能力:需要 iOS 侧在元宇宙场景之上叠一层 WKWebView 并与场景相机同步。在 UV-12 关闭前,「一套两个入口」在工程侧不许被排期成「引擎自带」。
字面架构
- 空间世界 = 一个小程序包(H5/Canvas2D)
- iOS → MatrixXChat 小程序运行时(WKWebView)
- 安卓 → 安卓小程序运行时(系统 WebView,仓库尚不存在)
- Electron → 小程序运行时(壳内)
- Web → 需要新建一个 Web 侧小程序宿主 ← 与 441 §2.4 明确不做 ⑥ 对撞
- 在场/房间/会议状态 = 服务端事件(协议先行)
跨端纪律 · 违反即设计错误
与 PD-03 的拍板结果无关,母版写死。
- 协议先行 —— 在场、房间归属、会议状态全部是服务端事件。任何只有空间客户端能理解的服务端状态,都是设计错误。
- 服务端权威的隔离 —— 房间若用于保密边界,谁能收到音频/消息必须由服务端算距离与房间归属后决定扇出。让客户端自报「我在房间里」= 空间隔离是装饰,窃听只需改一个坐标【推导】。
- 虚拟单位一律写作「沙豆」,永不简称「豆」;对外文案永不出现「基金」二字(442 §1)。
品类的负面证据 —— 这一节不许因为老板想做而淡化
- 品类冠军亲口认输:Gather 2026-02-09 官宣团队并入 Figma、产品剥离为独立非风投小生意,原文 it isn't positioned for venture-scale growth。拿了红杉 7600 万美金的头牌说这不是一门风投生意。
- 同品类连环关停:Teamflow 实质死亡、Wonder.me 2023-04-25 关停、Mozilla Hubs 2024-05-31 关停、Meta Horizon Workrooms 2026-02-16 关停独立应用。
- Rec Room 1.5 亿注册仍在 2026-06 关停。注册量不是护城河。
- 成功者的共同点我们一个都没有:Roblox 并发 2130 万、VRChat 并发 14.9 万,共同点是游戏性第一 + 百万级 UGC 供给 + avatar 身份文化。
- 金融社交品类无一使用空间隐喻,且社区本身不变现:雪球靠代销牌照、StockTwits 靠导流 eToro、Public.com 2026 年直接砍掉社交 feed。社区不赚钱,赚钱的是社区背后的持牌通道。
- 预测市场用户的讨论主场在 Discord / X / TG,不在产品内。我们不是在填补空白,是在和 Discord 抢一个已被满足且免费的需求。
- 零用户时空房间比空列表更糟。空间产品的价值函数对在线人数是超线性的【推导】。
最便宜的证伪实验(零工程):Gather 本体 $15/用户/月,10 人三个月 $450。如果我们自己团队用三个月后不再打开它,就没有任何理由相信外部用户会打开我们造的那个。
路线 A(元宇宙评估的建议)
- 空间形态:收敛为 Web 一个路由(发现页/大厅,DOM/CSS + presence + 群聊),列表版永远保留为默认
- iOS/安卓:渲染成厅列表 + 在场徽标,不内嵌、不外链空间 URL
- Web 是否建小程序宿主:否
- iOS 分级影响:无(空间内容不进 iOS 分级问卷)
- iOS 运行时改造:不需要
- 刀 6(WS 服务端 ping):优化项
- 代价:老板的「四端统一空间」被降级
路线 B(决定 13 字面执行)
- 空间形态:四端统一的空间小程序
- iOS/安卓:跑同一个空间小程序
- Web 是否建小程序宿主:是(推翻 §2.4 明确不做 ⑥,需显式登记)
- iOS 分级影响:空间内容计入 iOS 分级问卷,「Web 优先规避分级」的收益作废
- iOS 运行时改造:需要补 wasm + Range,改 matrix-x-chat-ios 源码
- 刀 6:功能性硬前置(无服务端 ping ⇒ 断线幽灵在场,presence 不可信);刀 6 今天未做
- bridge 收窄目标被空间新增能力需求顶回去,撞 4.7.2
路线 B 的三条技术硬墙
- iOS 小程序运行时无 wasm、无 Range:MIME 白名单写死不含 wasm,无 Range 支持。空间渲染引擎(物理、寻路、音频 DSP)与大包体流式加载依赖两者。⇒ 不改运行时,空间前端只能 DOM/Canvas2D、包体一次性下载。
- 自建 SFU 在现有单机不可行:10 人房 720p ≈ 90 路 ≈ 135 Mbps 出口 + 转码 CPU;生产单机 4vCPU/可用 3.4G,有 OOM 前科,无余量。托管 LiveKit $50–65/月是唯一现实解。
- RTC 媒体面今天为零:服务端签的是本地 sha256 兼容 token 不是任何厂商真 token,iOS 侧无 Agora 依赖时落 StubRtcEngine。「开会已经有了」这个结论已被推翻(2026-08-01),依据:RTC 假 token 实测。已有的是信令协议 + 会话台账 + UI,媒体面为零。
「零用户先建厅」不成立。硬前置是 ≥200 个真实注册用户 + ≥8 个真实小程序。现状:auth_users=190 全部是 smoke,真实用户 0;小程序货架真实条目 1 个。这不是排期问题,是判据问题 —— 前置达不到就不开工。
继续投 · 五条全中
- 见过大厅页的用户 ≥35% 同会话内点进至少一个厅
- 任一厅 4 周内出现 ≥30 次「同厅同时在线 ≥3 人且持续 ≥5 分钟」
- 有过同厅共处的用户次周回访率 ≥ 无共处用户的 1.5 倍
- 厅内群聊消息 ≥ 全平台 chat_messages 增量的 20%
- 上述共处时段 ≥15% 非运营组织
停投 · 任一命中即停
- 4 周内「同厅 ≥3 人 ≥5 分钟」时段 <10 次 ⇒ 直接停,不再讨论元宇宙
- 结伴留存倍数 <1.1
- 厅内消息 <全平台 5%
- 大厅页跳出率 >70% 且进厅转化 <15% ⇒ 退回列表版,大厅页下线
测量窗口:满足硬前置后连续 4 周;指标口径在开工前写死,不在数据出来后调整。 小程序网关自报 knife 6/7,剩 1 刀。空间路线(无论 A/B)都排在小程序平台既定刀序之后,不插队。
A2 · MONETIZATION · reits-knowledge 438 + 443
初期盈利模式:第一笔钱从哪来
收入来源全表 R1–R10 按三档归位、第一笔钱的双轨最短路径,以及需老板拍板的 M-1…M-8。定价与通道两条另见 PD-01/PD-02。本节压缩自 438 号全文与 443 §0,完整原文以 reits-knowledge 为准(镜像 311 行 · sha256 0e8d892de49705ad…)。
438 §5 · 第一笔钱的最短路径第一笔钱不是 Polymarket,不是小程序分成,是 R7 私有化交付 —— 它是唯一一条「前置条件 = 0 项技术工作」的路径。
现在就能做
4 项- R7 · 私有化交付/白牌 IM本表唯一有历史成交痕迹的一条。资产已就绪、已生产验证;对公收款不需要任何支付基建。卡在:找到第一个客户 + 一份对外产品说明。
- R8 · 行业小程序代开发98 刀完工的模板 + 20 个品类目录,复制成本极低。卡点同 R7。
- R5 · 数据/API 订阅(只读,不路由订单)REST 已在跑;Polymarket 概率适配器已写完待合。卡在:合并 P1 分支 + 补地域元数据 + 找买方。
- R6 · 广告位(把 mock 换成 stripe-live)代码 100% 完工,实测已上线定价。卡在:Stripe 账号 + 密钥;但没有真实商户。
有条件可做
4 项- R4 · 企业版 IM / Workspace 付费认证条件:① 平台级 RBAC 新建完成(三元组 + 审计表,不复用 workspace RBAC);② 收款走对公合同,不走 im-core。
- R3 · 小程序平台服务费/分成条件:① catalog-discovery-and-collections 做完;② 只收固定服务费、不代收代付;③ 若上 iOS,须连带交付 4.7.4 索引 + universal links 与 4.7.5 年龄门禁。
- R9 · Console 后台管理作为交付件的加价项条件同 R4 条件①。
- R1 · Polymarket Builder Code 返佣五条条件全满足才成立,其中「有律师书面意见确认非托管形态不构成 VASP」【未核实】,不许当已确认;且需 ≥5,000 名活跃交易者【推导】。iOS 与 Play 永久排除。
长期或不做
2 项- R2 · Polymarket Referral 推荐奖励暂停评估,条款原文取不到(404),费率未知。
- R10 · IM 内置收银台抽佣明确否决,且要拆。Apple 3.1.1 + 4.7.1 + 支付牌照三重命中。
轨 A(真正的第一笔钱):白牌 IM 交付,目标 30 天内签约
- A1 抽出对外产品能力清单(一页,按域列:账号/群/消息/E2E/推送/通话/小程序/开放平台)
- A2 拆除 A3 过审隐藏机制(29 处调用点),废止过审 feature-flag 文档
- A3 同批拆除 iOS 内置收银台(4 个文件),把 32 个 JS 桥方法收敛到 Apple 4.7.2 允许范围
- A4 基于生产逐字节镜像产出一键私有化部署手册 + 验收脚本
- A5 定价表:基础版/含小程序开放平台版/含 Console 版,标注年维保比例
- A6 销售动作:老板决定第一个目标客户 —— 只有老板能做,这是唯一真卡点
收款方式:对公转账 + 合同。不需要 Stripe、不需要牌照、不需要用户。
轨 B(工程侧最短):把 order.reits.tech 从 mock 切成 live,目标 7 天
- B1 注册 Stripe 账号(必须由老板本人完成 —— 涉及企业身份、银行账户与税务信息)
- B2 在生产写入 stripe-live 相关四个环境键(文档示例是 sk_test_…,切 live 必须换 live key)
- B3 Stripe 后台配置 webhook 指向 api.reits.tech 的 stripe 端点
- B4 清理 220 家种子商户或明确标注为示例
- B5 招募前 10 家真实商户(免费入驻,先要真实内容)
- B6 向这 10 家推销 ¥3,000 JPY 的「热度加分·30 天」(最低价档)
⚠️ 诚实评估:技术上 7 天可完成 B1–B4,但 B5 是线下地推,工程无法代劳。若拿不到真实商户,B1–B4 只是把一个空货架接上了收银机。
438 §6 · 需老板拍板的决策清单
- M-1 是否把 R7 白牌交付列为首要收入目标并由老板亲自找第一个客户
- M-2 是否注册 Stripe 账号并把 order.reits.tech 切 live
- M-3 是否投入线下地推招募真实商户(轨 B 的 B5)
- M-4 是否清理 220 家种子商户(用假榜单招商构成虚假宣传)
- M-5 是否接受「只卖数据、不路由订单」作为预测市场业务的长期形态(R5 而非 R1)
- M-6 是否为「非托管形态是否构成 VASP」购买律师意见
- M-7 R3 若做,是否接受「只收固定服务费、不代收代付」
- M-8 是否接受「IM 对 C 端永久免费」写死
现状:真实用户 0(auth_users=190 全 smoke)、货架真实条目 1、零收入且无收款链路(POST /openapi/client/order/pay 实测 404)。第三档门槛是净收入覆盖生产单机成本(≈11–14 个付费群主 / ≈$122–155 月净收)。
A4 · ENGINE SELECTION · reits-knowledge 444 §1–§4
引擎选型已结案:Phaser 4.2.1(MIT)
Godot 4 与 Unity Web 出局,判定依据写死为 maximumFileBytes = 16 MiB 单文件限额。对外一律报 ≈3%,不报裸引擎那个数。本节压缩自 444 号第 1–4 章,完整原文以 reits-knowledge 为准(镜像 623 行 · sha256 e9403673d0691512…)。
Phaser 4.2.1
选定版本与授权均由 registry.npmjs.org 实测确认;DOM/Canvas2D 形态与 20 MiB 包体预算相容。
Godot 4
出局唯一有效的出局理由:.wasm 未压缩 40 MB,是单文件 16 MiB 限额的 2.38 倍,服务端扫描直接拒收。Brotli 预压缩救不了 —— 本地服务器不发 Content-Encoding(【本文实测】MiniApp 全目录 grep Content-Encoding 零命中),也不支持 Range 请求。
Unity Web
出局同 Godot:导出物体积与 16 MiB 单文件限额正面冲突,且授权与分发形态另有成本。
【本文实测】curl -s https://registry.npmjs.org/phaser ⇒ dist-tags.latest = 4.2.1,time["4.2.1"] = 2026-07-09T14:35:35Z,versions["4.2.1"].license = MIT。
对外口径:≈3%
算式 656,114 ÷ (20 × 1024 × 1024) = 656,114 ÷ 20,971,520 = 3.129%
不报裸引擎那个数,因为裸引擎不是真实产品的价格。一个只有引擎、没有联机、没有寻路、没有 UI 插件的构建永远上不了线;拿它去报预算,等于用一个不存在的产品的体积去承诺一个存在的产品。
字节数的来历:把引擎与锁定的四件插件真打成一个包、落成真 zip,再用小程序平台自己的包体扫描器读回 package_bytes,四条互相隔离的路径给出同一个数,参考包 zip 的摘要被独立复现四次。⚠️ 规划母版目前仍写着被推翻的旧数,本页比母版新;母版订正之前,这个字节数的出处只在本仓代码里,不在母版语料里。镜像对母版的漂移校验没有进 CI,所以这件事不会自己变红。
裸引擎那个数已订正为 ≈1.8%(381,012 ÷ 20,971,520 = 1.817%);1.7% 加删除线保留并进推翻台账(444 X-9)。中间那一版 391,648 B = ≈1.9% 复量时没能复现,已降级为待核实(444 UV-2),所以这里报的是复现得出来的 381,012 B。纪律:一个被否掉的数也要算得出来 —— 否则下游复算不上,会连带怀疑整份预算。
真实插件四件(全部 MIT,registry.npmjs.org 逐个实测)
- colyseus.js · 0.16.22 · MIT
- phaser4-rex-plugins(界面插件) · 4.2.0 · MIT
- phaser4-rex-plugins(虚拟摇杆) · 4.2.0 · MIT
- easystarjs · 0.4.4 · MIT
四件插件已经换成 Phaser 4 的包并真打真量:colyseus.js 0.16.22、easystarjs 0.4.4、phaser4-rex-plugins 4.2.0 的界面插件与虚拟摇杆,全部 MIT。原先登记的 phaser3-rex-plugins 是 Phaser 3 的包,已经换掉。但这四件只验过打包(能被解析进包、字节可量、真扫描器读得出),没有起浏览器跑过场景 ⇒ 运行时可用性仍待验,插件集还不算拍板。组合一变字节数必须重量:去掉界面插件实测就从 656,114 B 掉到 427,693 B。
| 常量 | 值 | file:line | 作用 |
|---|---|---|---|
maximumArchiveBytes | 20 MiB | packagescan/archive.go:26(判定点 :156-157) | 真正判 indexValid = false 的那条。这是唯一可用预算。 |
maximumContractArchiveBytes | 200 MiB | packagescan/archive.go:25(用法 :132 与 :142) | 哈希前的外层 DoS 护栏 —— 防止有人丢一个 GB 级文件把哈希器拖死。不是 10 倍预算。 |
maximumFileBytes | 16 MiB | packagescan/archive.go:29 | 单文件限额。这一条才是真正杀死 Godot 的那条,不是 MIME。 |
maximumUncompressedBytes | 64 MiB | packagescan/archive.go:28 | 解压后总量上限。 |
maximumFileCount | 512 | packagescan/archive.go:27 | 条目数上限。 |
maximumCompressionRatio | 100 | packagescan/archive.go:30 | 压缩比上限,zip bomb 护栏。 |
岛屿预算
净额约 16.2 MiB(扣除引擎 + 插件、游戏逻辑、共享角色图集、中文字体子集、UI 与音效之后)
- 共用 BGM ⇒ 20 个岛 —— 每岛 0.78 MiB(地块 + 道具图集);16.160 ÷ 0.78 = 20.72
- 各带 1 分钟 96kbps BGM ⇒ 11 个岛 —— 每岛 0.78 + 0.687 = 1.467 MiB;BGM:96 kbps × 60 s = 5,760 kbit = 720,000 B = 0.6866 MiB;16.160 ÷ 1.467 = 11.02
v1 美术全部进包,不需要 CDN。 不上 CDN 不只是「省事」:origin 每次启动都变,CDN 资源每次开都要全量重下。进包是唯一能让美术资源真正只下一次的做法。
分项拆分【主控实测】未逐项复核 ⇒ 444 UV-3;但由 16.2 MiB 与 0.78 MiB 推出的两个岛数,444 逐条复算成立。
美术授权三档(硬约束)
- CC0(如 Kenney) ⇒ 可用 无署名要求、无再分发限制、无提取限制。
- itch 付费包 ⇒ 高风险 · 不许用 交付形态与 General Paid Asset License 的 extract or reuse 禁令正面冲突。
- 外包定制 ⇒ 可用,但有硬条件 合同里必须写死「含再分发与提取权」。没有这一条的合同等同 itch 付费包。
小程序包以 zip 分发 → iOS 端 MiniAppZipExtractor.swift:88-96 逐 entry 解压写盘 → 落盘后无打包、无加密、无混淆,MiniAppLocalServer.swift:255 直接按扩展名定 MIME 发文件。⇒ 设备上就是一堆散落的原始 PNG,任何人拿到设备就能逐个提取,这正是 extract or reuse 的字面情形。
「素材库打底再逐步替换」这条腿在「每个岛都不一样」的要求下基本是空的:CC0 通用包恰好没有江户 / 宋朝 / 玛雅 / 维京这些主题 —— 文明特异性主题需要考据,而考据成本正是没人愿意免费付出的那部分。⇒ 打底层不存在,「逐步替换」也就没有起点。排期与预算必须按「文明特异性主题从第一天起就是外包定制」来做,不许留一个不存在的素材库当缓冲。
运行时硬约束(全部【本文实测】,逐条给 file:line)
- origin 每次都变 ⇒ 所有 Web 存储无一存活 —— NWListener(using: params, on: .any) ⇒ 每次启动由 OS 分配临时端口,origin http://localhost:{port} 每次都变。
【本文实测】MiniAppLocalServer.swift:84-87(:95 为 OS 回填端口)
localStorage / IndexedDB / Cache API / OPFS 全部按 origin 分区,无一存活。① CDN 资源每次启动全量重下 —— 不是「离线体验消失」这么轻,是「每次开都重下一遍」;② 旧 origin 的 WKWebsiteDataStore 数据持续堆积,且没有任何一次会被后续会话复用。 - 小程序 WebView 内没有 getUserMedia —— requestMediaCapturePermission 全仓 0 命中,WKUIDelegate 的媒体权限回调在整个 iOS 仓零实现。
【本文实测】grep -rn 'requestMediaCapturePermission' matrix-x-chat-ios/ | wc -l ⇒ 0
WKWebView 对 getUserMedia 的权限请求无人应答 ⇒ 小程序内拿不到麦克风与摄像头。KTV / 直播推流必须走原生层,游戏引擎不碰麦克风。而原生层不是要新建,是已经买好了(见 Agora 资产)。 - index.html 必须在 archive 根,且解包器剥掉第一层 —— 服务端要求 index.html 在 archive 根;iOS 解包器对每个 entry 无条件剥掉第一个路径分量,但根层 entry(路径不含 /)原样返回。
【本文实测】packagescan/archive.go:273、:310;MiniAppZipExtractor.swift:95、:196-201
正确要求是「剥掉第一层之后 index.html 必须落在根」。合法包有两种:① 完全扁平;② 恰好一层顶层目录。不合法的是两层及以上。旧表述「包必须完全扁平」漏掉根层例外 ⇒ 已订正,登记 444 X-12。 - index.html 必须能被判出「有启动配置」 —— containsLaunchConfiguration(in:) 是两条任一成立即通过:① html.contains("window.init_config");② 正则 id\s*=\s*["']preconnect["'] 命中。
【本文实测】MiniAppRuntimeHealth.swift:93-103;MiniAppHTMLInjector.swift:51-66;MiniAppLocalServer.swift:81
两条都不满足才判 .missingLaunchConfiguration,进而 MiniAppLocalServer.swift:81 直接 throw。工程口径仍写死「出包时带 <script id="preconnect"></script> 占位符」,但理由订正为「否则注入位置不可控」,不是「否则起不来」⇒ 登记 444 X-10。 - 不支持 Range 请求;MIME 表无 wasm 分支但有兜底 —— MiniAppLocalServer.swift 全文零命中 Range / bytes=;mimeType(ext:) 无 wasm case,default 落 application/octet-stream。
【本文实测】MiniAppLocalServer.swift:330-349(:348 为 default)
wasm 文件照样发得出去,只是 MIME 不对 ⇒ Emscripten 回退到非流式 instantiate,只降速不失败。服务端侧则完全相反:archive.go:451 与 :483 两张 MIME 表都含 ".wasm": "application/wasm",:501 把 .wasm 与 .js 并列当一等公民可执行代码 ⇒ 平台收 wasm,只是不收 16 MiB 以上的单个文件(444 X-11)。
距离衰减的空间语音是已付费、零美术、只需接线的能力,且它正是 Gather 的核心体验。
- 已付费 —— SDK 在 Podfile 里,扩展在链接列表里,账号已经是付费账号。
- 零美术 —— 空间语音不需要任何一张图、任何一个图集,因此不占 16.2 MiB 的岛屿预算。
- 只需接线 —— AgoraRtcAdapter.swift 是生产实现,im-core/internal/live/ 是完整的域,缺的是把玩家坐标喂给空间音频 API 这一段。
| 资产 | 事实 | 证据 |
|---|---|---|
| Agora RTC SDK 已入 Podfile | pod 'AgoraRtcEngine_iOS', '~> 4.6' | 【本文实测】matrix-x-chat-ios/Podfile:8 |
| 空间音频扩展已在链接列表 | AgoraSpatialAudioExtension | 【本文实测】Podfile:32(在 Podfile:24-35 的 CATALYST_EXCLUDED_FRAMEWORKS 列表中) |
| 生产级 RTC 适配层已存在 | AgoraRtcAdapter.swift,config.channelProfile = .liveBroadcasting | 【本文实测】AgoraRtcAdapter.swift:18、:50 |
| 服务端 live 是完整的域 | model.go / service.go / sql_store.go / memory_store.go / postgres_schema.go + 两个测试文件 | 【本文实测】im-core/internal/live/ 目录清单 |
CATALYST_EXCLUDED_FRAMEWORKS 是 Mac Catalyst 构建的排除名单。AgoraSpatialAudioExtension 出现在这张表里,恰恰说明它在 iOS 构建中是被链接进去的(否则无需为 Catalyst 单独排除)。⇒ 结论成立,但证据是「被 Catalyst 排除」这个反向事实,不是一张正向的 include 清单。引用时必须带上这句话。
RTC 单位经济:音频成立,视频不成立。 单价【主控实测】未复核 ⇒ 444 UV-5:语音 $0.99 / 千分钟、视频 $3.99 / 千分钟,每月 10,000 分钟免费额度(共享)。 视频:⚠️ 下式里的 $1.88 为 443 X-20 退回前的旧价点,仅作量级代入 —— 它在美区 App Store 配置不出来,PD-02 的具体价格点数字已退回 🔴 待拍板(同 A0/A3/A7 三处标注)。订阅价 $1.88/月,扣苹果 30% 后开发者净收 $1.88 × 0.7 = $1.316;$1.316 ÷ $3.99 × 1,000 = 329.8 分钟 = 5.50 用户小时。⇒ 5.5 用户小时/月即烧光一个订阅的全部净收入。⚠️ 这个 5.5 只有带上「扣苹果 30%」才算得出来 —— 不扣是 7.85 小时,引用时必须同时写出 30% 这个前提。 音频:20 人 × 60 分钟 = 1,200 参与者分钟;1,200 ÷ 1,000 × $0.99 = $1.188/房间小时。主控给的 $1.13 复算不出来 ⇒ 444 X-8,口径来源登记 444 UV-6。两个数都远小于订阅月净收 $1.316,音频成立的结论在两个数下都成立 —— 但结论不受影响不是留着一个复现不出来的数的理由。
旧判断「同步合唱需往返 <30ms,物理不可达」已推翻(444 X-3):<25ms 是单向、且是无指挥合奏的门槛(量纲错 + 模型错);KTV 是 master-slave,文献容忍 100–200ms 单向;悉尼↔中国大陆 RTT 95–110ms ⇒ 单向 48–55ms。⇒ 慢歌(≤80BPM)可用,快歌不可用,不是不可达。⚠️ 容忍带与 RTT 两项为【主控实测】未复核(444 UV-7/UV-8)⇒ 在 UV 关闭前「慢歌可用」不许被写成可立项的结论,只能写成「不是不可达,值得测」。
A5 · RISK DECISIONS · reits-knowledge 444 §5
风险决策 D-1…D-6:6 条全部生效
老板 2026-08-02 授权主控代决,六条全部是收紧方向。本节压缩自 444 号第 5 章,完整原文以 reits-knowledge 为准(镜像 623 行 · sha256 e9403673d0691512…)。
老板授权原话(2026-08-02,逐字引用,不改一个字)规避风险你肯定比我在行 所以我听你的 你来决策
这是一条针对「规避风险」的授权,不是一张空白支票。D-1…D-6 全部是收紧方向的决策(禁押注、禁筹码、独立账本、零筹码、能力外移、单套实现)。⇒ 任何以本授权为依据的「放松」都无效。与 443 X-23 写死的元纪律同源:收紧可以用低档证据,放松必须用一手证据。 443 号 PD-24(模拟仓押注形态)等仍标 🔴 的老板级待拍板项,444 号一条也不代拍。
系统内不存在任何押注机制
已裁决 · 收紧系统内不存在任何押注机制。沙豆永不因某个结果增减。
- 赔率 —— 任何形式的 odds 展示或计算,禁。
- 对手盘 —— 任何形式的 A 押涨 / B 押跌的配对,禁。
- 彩池 —— 任何形式的 pool,无论是否可提现,禁。
- 「投入 X 按结果返 Y」—— 任何「先付出后按结果结算」的结构,无论用什么词包装,禁。
边界这是 442 号红线五新表述的执行面落地(沙豆不得在任何预测/竞猜上被置于风险中 —— 不得押上、不得因预测错误被扣除)。D-1 与它是同一条,不是新增,也不是放松。
沙豆是劳动货币
已裁决 · 收紧入=干活(完成任务、参与建设、贡献内容);出=买虚拟商品;数量永不作为行情或事件结果的函数。
- 沿用既有红线「产出与行情零挂钩」(442 号)。
可机械检查的判据任何一行代码,只要沙豆的增减量出现在一个以行情价、事件结果、预测正确与否为自变量的表达式里,就是违规。与它是加是减、幅度多小、是否可提现全都无关。
ProbAtlas 模拟仓:以沙豆计价,但独立账本
已裁决 · 收紧计价单位=沙豆;独立账本,沙豆不流入不流出;季度重置;竞争维度=收益率;回报=名次 / 称号 / 场景与装饰解锁,不是沙豆。
- 「以沙豆计价」与「沙豆流动」是两件事:模拟仓里的数字用沙豆做单位(它是玩家已经熟悉的刻度),但那不是玩家的沙豆 —— 它是一份季度重置的独立记账。
- 主账本的沙豆余额,在模拟仓的整个生命周期里一次也不变动。
- 竞争维度取收益率而不是绝对额,是为了避免本金差异变成竞争维度。
边界这正是 D-1 在模拟仓场景下的落地方式:模拟仓不是被特批的例外,它是用「不流动」这个设计绕开了「置于风险中」这个触发条件。⚠️ 443 号 PD-24(模拟仓押注形态)仍是 🔴 老板级待拍板,D-3 不构成对 PD-24 的裁决,也不解除 442 号「PD-24 拍板前任何文档不得写『我们不构成模拟赌博』」这条约束。
「猜实际事件」零筹码保留
已裁决 · 收紧猜对涨准确度分数与排名,不发不扣沙豆。玩法保留,筹码清零。
- 这是老板 2026-08-02 定位「不结合赌,我们只是猜实际事件」的直接执行面。
可机械检查的判据准确度分数是一个只写不结算的量 —— 它进排行榜,不进任何账本。
所有能力皆小程序
已裁决 · 收紧主二进制只留三件:IM + 元宇宙 + 小程序宿主。其余全部下沉为小程序。
- 副作用写死(这是本条最重要的部分,不是附注):shouldHideReviewEntries 将失去存在必要,2.3.1 hidden, dormant 风险随之消失。目标不是修好这个开关,是让它没有存在必要。
- 这个开关现在的样子【本文实测】:生产源码 29 处调用点、跨 13 个文件;全仓含测试与文档 156 处;HIDE_REVIEW_ENTRIES 全仓 131 处;环境变量后门仍在且无 #if DEBUG 包裹(SecretsLoader.swift:439-443)。
- 13 个文件里有五个是 IM*Adapter(RedBag / Enterprise / Banner / Call / MiniApp),而这五个正是 D-5 要下沉为小程序的能力。这不是巧合,是同一件事的两端。
可机械检查的判据D-5 的价值不在于「少一个 if」,在于「让审核方能看到的功能集与用户能看到的功能集永远相同」—— 能力都在小程序里,小程序有独立的上架与审核链路,主二进制里就不再有任何「藏起来的东西」可藏。
边界主控给的「123 处调用点」复现不出来 ⇒ 已推翻,登记 444 X-7,口径来源登记 444 UV-11。正文一律写 29(生产源码)。
小程序平台一套两个入口
已裁决 · 收紧两个入口进两层:聊天列表下拉面板进全局俯视层(只见建筑),聊天室悬浮球半屏、申请或被邀请后走大厅进室内群空间层。群=企业=岛上一栋建筑=聊天室,同一套包格式、同一份货架、同一个沙豆账本。不做两套实现。(2026-08-06 从「手机端货架/岛上走近电脑」修订为双层双入口。)
- 引擎硬指标一:邻近触发 / 交互区 —— 引擎必须支持基于距离的触发区域。在 Phaser 里是常规能力(碰撞体 / 距离判定),风险低。
- 引擎硬指标二:世界内嵌 WebView —— 引擎必须支持在 2D/3D 世界内承载一个 WebView 表面。这不是 Phaser 的能力,是宿主的能力:需要 iOS 侧在元宇宙场景之上叠一层 WKWebView,并把它的位置与场景相机同步。
边界两条硬指标未对 Phaser 4.2.1 逐条验证 ⇒ 444 UV-12。UV-12 的关闭方式是原生侧出一个可运行的 WebView 叠层原型,不是去 Phaser 文档里找 API —— 该能力的责任在宿主。在 UV-12 关闭前,D-6 的「一套两个入口」在工程侧不许被排期成「引擎自带」。
在 443 号 UV-12 拿到苹果官方条款正文之前,主体结构(443 号 PD-13/PD-15)按「仍需公司主体」保守执行,不许在工程侧先落地。 元纪律:收紧可以用低档证据(按最坏情况保留);放松必须用一手证据。 分级证据表虽然全部是一手实测,也只用于两个方向:① 支撑 D-1/D-3/D-4 这些收紧决策;② 拆掉一条建立在 2018 年论坛转述上的旧约束(444 X-4)。它一次也没有被用来放松主体结构、放松分级申报、或者放松 442 号任何一条红线。
A6 · RATING EVIDENCE · reits-knowledge 444 §6
分级实测证据表:分水岭是「货币有没有被置于风险之中」
五个 app 的分级与 descriptor 全部由 itunes.apple.com 公开接口独立重跑复现。本节压缩自 444 号第 6 章,完整原文以 reits-knowledge 为准(镜像 623 行 · sha256 e9403673d0691512…)。
| App | 分级 | descriptor(advisories 原样) | 卖家 |
|---|---|---|---|
| INFER-pub众包预测真实事件,零筹码 | 4+ | ['Infrequent/Mild Contests'] | FlyoverWorks Inc. |
| Cultivate Forecasts同一家公司的另一个 app | 17+ | ['Frequent/Intense Contests', 'Infrequent/Mild Simulated Gambling', 'Gambling'] | FlyoverWorks Inc.(同一家) |
| Manifold Marketsplay money,不可提现 | 17+ | ['Frequent/Intense Simulated Gambling', 'Infrequent/Mild Profanity or Crude Humor', 'Frequent/Intense Contests'] | Manifold Markets, Inc. |
| Predict Six有金币 / 饰品 / streak / double down | 12+ | ['Frequent/Intense Contests'](无任何 Gambling 类 descriptor) | THOMAS GRAHAM DAVIS(个人) |
| Dice X - 3D dice roller推翻 2018 年 thread/662141 判定的实证 | 4+ | [](空) | Vladimir Roganov(个人) |
结论写死
- 分级是自报的结果。不是苹果扫出来的,是开发者在问卷里填出来的。
- 分水岭是「货币有没有被置于风险之中」。最硬的一组对照是 FlyoverWorks Inc. 同一家公司的两个 app:INFER-pub 零筹码 ⇒ 4+;Cultivate Forecasts ⇒ 17+ 且带 Simulated Gambling + Gambling。同一个开发者、同一个题材、同一套自报流程 —— 唯一的变量就是筹码。⇒ 这一条把 D-1 / D-3 / D-4 的整套设计从「谨慎」变成了「有对照组支撑」。
- Predict Six 是第二组对照:有金币、有饰品、有 streak、有 double down,仍然 12+ 且零 Gambling descriptor ⇒ 虚拟货币 + 装饰解锁 + 连胜机制本身不触发赌博类 descriptor,触发的是把货币置于风险中。这正是 D-3「回报是名次/称号/场景与装饰解锁,不是沙豆」的可引用先例。
与主控给的表有两处差异,均为「省略了程度前缀」而不是写错:① Cultivate Forecasts 主控写 Contests + Simulated Gambling + Gambling,实测拿到的是带程度前缀的完整串;② Manifold Markets 主控只写了 Frequent/Intense Simulated Gambling,实测另有两条。⇒ 本表以实测的完整串为准;主控原表不加删除线。