本文把目标架构翻译成可并行执行的工程方案。它不重复产品定义,而是规定每项能力怎样拆仓库、按什么依赖顺序交付、在哪里联调以及何时算真正完成。
发生冲突时按以下顺序处理:
下层不得通过实现便利改变上层语义。发现冲突时先修文档并完成复审,再改代码。
每个功能必须同时交付以下十五项,缺一项都保持 incomplete:
| # | 交付项 | 必须回答 |
|---|---|---|
| 1 | 用户入口 | 谁从哪里发起,默认值是什么 |
| 2 | 权威对象 | 哪个服务保存最终事实与 revision |
| 3 | 命令/API | 输入、幂等、并发和权限怎样校验 |
| 4 | Policy | 谁能做、默认允许还是拒绝 |
| 5 | Projection | NSD 如何编译最小目标配置 |
| 6 | Runtime | ns/NSGW 如何原子应用和恢复 |
| 7 | UI 状态 | pending、ready、degraded、denied、unknown 怎样显示 |
| 8 | 失败恢复 | 重试、回滚、保留缓存还是 fail-closed |
| 9 | 撤销 | 谁能撤销,多久收敛,离线节点怎么办 |
| 10 | 审计/通知 | 哪些事件记录,谁需要知道 |
| 11 | Entitlement | 免费、计量、配额或托管能力边界 |
| 12 | 验收 | 正向、反向注入、跨平台和真机证据 |
| 13 | 发行生命周期 | 怎样安装、升级、回滚、卸载和托管 |
| 14 | 运营连续性 | SLI/SLO、状态页、支持、备份和恢复责任 |
| 15 | 数据与商业闭环 | 采购/计费影响、保留、导出、删除与合规证据 |
团队不能以“API 已返回”“页面已画好”或“数据库已建表”作为完成功能的依据。
产品能力目录与实现闭环定义产品语义,功能闭环总账记录每项能力在 Authority/API/Projection/Credential/Data Plane/Failure/Gate 六个位置的实现与证据状态。每个 Slice 开工前必须同时引用两份总账;发现缺少对象、状态、失败、撤销或线协议时,先补权威文档再拆任务。
| 仓库 | 第一责任 | 明确不负责 |
|---|---|---|
ns-shared-next | wire schema、ID、签名、错误、测试 fixture | 数据库、UI、平台网络 |
nsd-next | 权威对象、Identity、Policy、Projection、Audit、租户 API | 业务流量、节点私钥 |
ns-next | agent、TUN/WG、DNS/Proxy、Service、Route、Gateway 客户端、CLI/FFI | 租户权限创作、计费判断 |
nsc-app-next | NS App 桌面/移动交互与系统集成 | ACL/route/supports_scope 算法 |
nsgw-next | Relay、Ingress、Egress、Exit 的隔离数据面 | 账号目录、套餐 SKU、全局策略编译 |
admin-next | 平台运营、部署、计费和基础设施 | 租户日常 Network/Grant 操作 |
product-docs-next | 最终用户与管理员操作手册 | 架构决策来源 |
qa-next | 跨仓库环境、真机矩阵、发布证据 | 用 mock 结果替代真机结论 |
身份、注册和共享事件信封是所有纵向功能的前置。Relay、ServiceFlow 和 L3 candidate/roaming 是独立的数据面 Foundation:先固定 claims、frame、handshake、关闭与 generation fixture,再允许 L3/L4 团队并行实现。L3 与 L4 在 Membership/Grant 和 Foundation 之后并行,不要求先把整套 L3 做完再做 Service,也不允许先做 UI 再补授权。
所有 schema、索引、分页、Compiler、projection 和 benchmark 任务必须使用产品能力目录 §19.5的首发目标/设计上限/已验证值三列。没有 benchmark 证据时保持 G8 阻塞,不能把设计上限写成已支持规模,也不能先按演示数据量实现后再补分片语义。
用户旅程:部署 NSD → CLI bootstrap 首个管理员 → 打开登录页 → 创建/获得 Personal Organization 和默认 Network。
交付:Identity schema、Session、Organization/Network 创建事务、默认 Grant 模板、审计、SMTP 未配置时的 bootstrap 路径。
退出条件:空数据库只通过公开流程达到可注册 Device 的状态;重放 bootstrap、并发创建和部分失败不会产生两个 owner 或半个 Network。
用户旅程:安装 App/CLI → 系统浏览器登录 → 选择空间/Network → Device Key 绑定 → Device/Membership committed → 本机进入已连接状态。
交付:PKCE、Enrollment Request/Grant、Staging Key、Node IP、netmap snapshot、Client 状态和取消/恢复。
退出条件:关闭浏览器、App 崩溃、Grant 过期、管理员拒绝、配额满和 NSD 读取失败都有准确可恢复结果。
用户旅程:第二台设备加入 → 目录看到两台设备 → 通过 Node DNS Ping/SSH → 直连失败自动基础 Relay。
交付:TUN、固定 1280 MTU、Node IP/DNS、EndpointCandidate、authenticated probe、roaming/key rotation、WG session、Node Grant、双端 enforcement、RelayRouteLease/attach/frame 和路径状态。
退出条件:无 Grant 时不进入 peer map且伪造包被目标端拒绝;LAN/NAT/UDP blocked 按路径阶梯工作;Relay 不获得稳定 Membership/Node/WG 身份,直连/Relay/WSS 切换不改变 TUN MTU 和 Node IP。
用户旅程:任一 ns 节点从 App/CLI 声明本地或远程后端 → 本地确认/企业审批 → NSD 分配 Service ID/VIP/name → 被授权用户从目录打开。
交付:Local Manifest、declaration、Endpoint health、Service Grant、consumer/publisher role projection、ServiceFlowCredential、OPEN/ACCEPT/REJECT、TCP half-close/RST、UDP idle、generation、Service DNS/VIP、Proxy/TUN 两条消费路径和撤销。
退出条件:L3 横向关闭时 Service 仍可访问;publisher 不获得完整用户目录且不回查 NSD;半关闭/重置/UDP 超时两端语义一致;停 Service 不删除 Node;读取故障不显示空目录。
用户旅程:邀请成员 → 分组 → 用向导创建 Node/Service Grant → 预览影响 → 发布 → 撤销。
交付:Membership、Group、GrantSet/Rule、模拟器、compiler、revision、approval、审计和状态解释。
退出条件:管理员能回答“谁可从什么设备访问哪个资源的什么动作”;任何 allow 扩大反向注入都会让测试失败。
用户旅程:节点声明 CIDR/域名 → 管理员审批 → 用户获得 Route Grant → 本地装路由/split DNS → 冲突或健康失败准确显示。
交付:Route advertisement、ownership、冲突规划、DNS origin resolver、防解析环、漂移恢复和撤销租约。
退出条件:未批准不装;外部 VPN 占用时不抢;Route 撤销或过期后在 SLA 内移除。
用户旅程:直连失败时自动中继,无需购买 NSGW 商品。
交付:RelayRouteLease、opaque attach/session、固定 frame、区域候选、端到端密文转发、公平使用、容量状态和 WSS fallback。
退出条件:Relay 无稳定节点身份、Service 目录和解密能力;QUIC/WSS 使用同一 frame/lease;UDP 封锁环境仍可用;容量不足不伪装成 ACL 拒绝。
用户旅程:管理员授权具体 Gateway/Profile → Service 或用户看到授权候选 → 选择/启用 → runtime 最终校验 → 状态和撤销闭环。
交付:Gateway report、profile、candidate projection、selection、EgressOriginLease/ExitTunnelLease、双端 scope projection、capture readiness、IPv4/IPv6 事实状态、路由所有权、fail-closed 和明确关闭动作。
退出条件:候选用于交互但不替代最终六项校验;Exit 已捕获后失败不能自动本地直出;Egress 只影响目标 Service。
用户旅程:管理员从已有 Service 创建入口 → 选择域名/证书/区域/保护 → 预览 → 启用 → 观察健康与访问日志 → 独立停用。
复用基线:现有 NSIO Public Application、六种 Edge 认证 handler/verifier、Envoy/NSGW listener、证书/WAF 和 fail-closed 测试优先适配,不把方法认证重新实现一遍。
Next 交付:PublicApplication/EdgeAuthPolicy/IngressBinding v1 object、签名 target-minimal policy projection、EdgeSessionCredential 与统一撤销索引、NSGW lease、IngressBackendCredential、ServiceFlow backend binding、DNS ownership、审计和配额。旧数据库和线格式不进入 Next runtime。
退出条件:现有六种方法的正常/过期/重放/轮换/fail-closed 用例在 Next fixture 下继续成立;入口不能指向未授权任意后端;停入口不删除内部 Service;NSGW 不获得额外内网访问;按应用/策略/Binding/身份/凭据撤销能终止对应长会话;NSGW 后端建流不回查 NSD。
用户旅程:配置 OIDC/SCIM → 员工登录 → Device 审批/姿态 → 离职 → 会话、Membership、Grant 和 peer lease 在 SLA 内收敛,公司 Device 保留。
交付:Federation Binding、issuer/subject、amr/acr、step-up、SCIM transaction、Webhook/SIEM、审计保留和 Legal Hold。
退出条件:logout、解绑身份、SCIM 停用和 Device revoke 四条路径结果不同且有自动化测试。
用户旅程:安装 App/CLI → 复用唯一 daemon → stable 灰度更新 → 版本不兼容时获得明确升级动作 → 卸载并恢复网络。
交付:artifact provenance/signing、release manifest、通道/cohort、local API handshake、Runtime Owner Binding、single-active-OS-user、MDM/package-manager 路径、升级 journal、cleanup helper、商店审核清单。
退出条件:五平台安装/升级/中断恢复/卸载真机通过,外部 VPN 路由不被删除,App/CLI 不产生第二 runtime;桌面多 OS 用户切换不泄露租户状态、不允许非 owner 控制,也不复用原 owner 隧道;冷启动时 user-owned 不建网、managed-device 按策略无人值守恢复。
用户旅程:PoP/控制面故障 → Client 显示准确能力状态 → 公开状态页持续通报 → 恢复 → 客户看到事故和 SLA 证据。
交付:分服务 SLI/SLO、合成探针、error budget、incident workflow、状态订阅、支持分级、隐私遥测和激活漏斗。
退出条件:SEV-1/region 故障演练贯通告警、状态页、客户端、支持和 SLA bucket,不把故障伪装成无授权。
用户旅程:免费使用 → 在线升级或接受 Quote → 付款/授信 → 发票 → entitlement revision 生效 → 增购/降档/取消。
交付:Catalog、Billing Account、Quote/Order/Subscription、Invoice/Payment/Refund、税务资料、dunning、对账和签发 outbox。
退出条件:重复 webhook 不重复扣款,支付故障不切断安全数据面,订单可追到唯一 effective entitlement。
用户旅程:Hosted region 或 Self-hosted 主机丢失 → 选择有效备份 → 影响预览 → 安全恢复 → 节点重新连接且旧授权不复活。
交付:PITR/snapshot、备份 manifest/verify、restore plan/epoch、key recovery、deletion tombstone、演练和 RPO/RTO dashboard。
退出条件:从空环境恢复完整控制闭环,不需要节点私钥,真实 RPO/RTO 有证据。
用户旅程:用户/组织导出 → 注销/删除 → Legal Hold 或法定保留分流 → 各系统完成 → 获取完成报告。
交付:数据清单、retention、export/delete orchestrator、Hold、Trust Center、claim registry、子处理者和认证证据库。
退出条件:注销、组织删除、SCIM、Device revoke、Subscription cancel 不互相代替;恢复后删除对象不复活。
A 表示权威,E 表示执行,U 表示用户交互,O 表示可观测/运营。
| 功能 | Shared | NSD | ns | Client | NSGW | QA |
|---|---|---|---|---|---|---|
| 登录/会话 | schema | A | Device proof | U | - | E2E |
| Enrollment | schema | A | E | U | - | state/fault |
| L3 Node | netmap/grant | A | E | U | Relay E | native/network |
| L4 Service | service/grant | A | publisher+consumer E | U | optional E | L3-off/L4-on |
| Grant/ACL | rule/projection | A | E | U/admin | E only scoped | negative |
| Subnet/App Route | route | A | E | U/admin | optional | conflict |
| Relay | lease | A | client E | status | E | NAT matrix |
| Gateway Egress | gateway/service | A | E | U/admin | E | target-only |
| Gateway Exit | profile/selection | A | E | U | E | leak/fail-close |
| Public Ingress | ingress | A | backend E | admin U | E | exposure |
| Entitlement | bundle/lease | A | display only | U/admin | E lease | downgrade |
| Audit/Support | event/error | A | telemetry | U/export | telemetry | correlation |
| Distribution lifecycle | manifest/schema | update policy | daemon slots/cleanup E | U/store/MDM | image rollout | install/upgrade/uninstall |
| Hosted operations/SLA | status schema | SLI source | runtime evidence | U/status/support | SLI source | incident/game day |
| Billing/procurement | entitlement schema | effective projection | display only | U/admin | lease display | payment/idempotency |
| Backup/restore | backup manifest | A/restore E | local journal | U/admin | config/outbox restore | empty-site restore |
| Data rights/compliance | export/delete schema | A/orchestrate | device cleanup | U/admin | scoped erase | hold/delete/restore |
ns-shared-nextnsd-nextns-nextnsc-app-nextnsgw-next| 环境 | 用途 | 必需依赖 |
|---|---|---|
| contract | schema/serialization/signature | 无网络、确定性 fixture |
| component | 单仓库行为 | fake clock、fault injection |
| local stack | NSD + 2 ns + optional NSGW | 临时 PKI、SQLite |
| integration | 多租户、PostgreSQL、Relay | 容器/VM、真实 DNS |
| native lab | 平台路由和 VPN 共存 | Win/macOS/Linux/iOS/Android |
| staging | 云托管产品旅程 | 真实 OIDC、SMTP、域名、证书 |
| release lab | 安装/更新/回滚/卸载 | 签名 artifacts、MDM/store test tracks、五平台真机 |
| recovery lab | Hosted/Self-hosted 空环境恢复 | 隔离 KMS、备份副本、禁止外发副作用 |
测试数据按 Organization 隔离,禁止复用生产身份或密钥。每次发布产出 component version、schema ranges、commit、测试矩阵和已知限制。
跨仓库功能按以下顺序合并:
生产者不得先发送消费者尚不能安全忽略的必需字段。可选字段可以先发,但 UI 必须有明确回退。任何临时字符串嗅探、复制授权算法或放宽 fail-closed 的兼容补丁都不能进入 main。
一个纵向切片只有同时满足以下条件才可发布:
这份清单是各模块共同的完成标准,不允许由某个团队单独宣布豁免。