# vox1000 宪法(const)—— 六边形总纲纪律

版本:v1.0(2026-10-27 立卷;定谳源 = `.mingspace/` 茗篇四篇:libp2p /
iroh / p2p-core 接口评审 / hexagonal 评审 + 自研边界)
表述纪律:本卷只允许「必须 / 禁止」句式;论证与考据归茗篇,本卷只立律。

---

## 1. 分层律(六边形总纲)

1. **必须**:四层格局——Domain(纯 ADT)/ Ports(trait)/ Adapters
   (具体实现)/ Orchestration(状态机编排);核心域(Domain+Ports+
   Orchestration)**禁止**依赖任何具体传输、发现实现或密码学实现。
2. **必须**:Domain 全纯值、零副作用;时间**必须**以 `now : Int64`(毫秒)
   参数注入,**禁止**核心包内取钟、睡眠、mock。
3. **必须**:决策面(路径选择 / 状态迁移 / 评分)为纯函数同步形
   (`path_select(policy, paths)`、`next_action(state, event)`);
   IO 槽(connect / accept / 读写 / 路径切换)为 async 形。**禁止**决策
   面挂 async 色,**禁止** IO 槽写同步签名。
4. **禁止**:Orchestration 写死在传输/适配器内——状态机、路径切换、
   探测重试一律住核心,由 P2pEvent 事件驱动。

## 2. 三真变点律(Ports 只有三扇门)

1. **必须**:Ports 仅三枚——**网络缝 SeamNet**(包级哑管道:send/recv/
   now 时钟)、**Discovery**(resolve/announce + TTL)、
   **ProtocolHandler**(Router/accept,协议 = 连接级)。变点之外不再立
   trait;装配门面 = 具体 `Endpoint` struct,**禁止** Host trait。
2. **禁止**:`Transport` trait(可插拔传输)。传输独苗 = moonkcp(KCP),
   包缝实现,不与缝平级可换;TCP/WS 兜底不排期,复活须先修本律。
3. **禁止**:`Relay` trait、`StreamMuxer` trait。relay 在域内只是
   `PathKind::Relay` 变体(MagicSocket 内管),服务端为第四阶段独立件;
   流复用由传输自带(stream 从 Connection 直出)。
4. **必须**:缝只递包、不建连接;`connect(peer, protocol)` 归
   MagicSocket/Endpoint,内部跑 Resolving→Probing→Established/Fallback
   →Upgrade 状态机。
5. **必须**:`upgrade_to_direct` 为 hint 语义(尽力而为返 Bool),
   **禁止**作 command 承诺。

## 3. 连接与安全律

1. **必须**:连接安全面 = **secchan 上座**——连接建立 = KCP 通道 +
   secchan 握手(认证对端 PeerId)+ record layer(方向密钥 + 滑窗防重放);
   **禁止**出现未认证可收发的连接态(Handshaking 空壳不立,connect 返回
   即已建立或错)。
2. **必须**:协议 = 连接级(`connect(peer, protocol)`),**禁止**每流
   携协议(multistream-select 残留不复活)。
3. **必须**:连接保底在前(relay-bootstrap):先经 relay 通、直连并行
   打洞、成则静默换道、败则 relay 续流。**禁止**文案与实现标反成
   "直连优先"。
4. **禁止**:与 iroh / libp2p / 任何 QUIC 实现的线级互通;桥接将来走
   网关层适配,**禁止**污染内核。

## 4. 密码学与 wire 律(自研边界)

1. **必须**:算法层单一真源 = @mooncry(Ed25519 / AES-GCM / SHA-256 /
   HKDF);核心包**禁止**自带密码学实现;门 = 标准测试向量对拍。
2. **必须**:wire/握手/relay 消息集/发现记录/协议 id 全自研;**禁止**
   引入 multiaddr / multihash / multibase / libp2p protocol-id 词表。
3. **必须**:每个自研协议的握手/帧头带 version 位;版本协商不上 =
   断连报错,**禁止**猜版本。改 wire = 升 version,旧字节含义永不变。
4. **必须**:签名面钉规范化编码(确定性字节),**禁止**对非规范序列化
   直接签名(pubsub 坑账)。
5. **必须**:中继按恶意假设设计("assume a malicious relay")——中继面
   只见密文;资源边界 = 限速 + 每端缓冲。

## 5. 工程守卫律

1. **必须**:core 包 `moon.pkg` 依赖审计——只许 import `moonbitlang/async`
   本体(async fn 语言级零 import;唯 async fn main / async test 须本体);
   adapter 包才许 import core + moonkcp/mooncry。依赖审计 = 六边形守卫,
   破层即红。
2. **必须**:`P2pError` = `pub(all) suberror`;政策错与协议错分面
   **禁止**互染(错误语义面互不污染——全仓家法)。
3. **禁止**:`derive(Eq, Debug)` 滥用([0079],deny-warn 门下即红);
   判等走显式比较或规范形。
4. **必须**:trait 方法 self 显式注记(`fn m(self : Self, ...)`),
   函数值字段带括号调(`(self.accept)(conn)`)。
5. **必须**:每阶段绿门 = `moon test` + `moon info` + `moon fmt`,
   核 `.mbti` diff;阶段性回放用例(绿门二/三)事件序列断言。
6. **必须**:memchor 编排吃 `P2pEvent` 事件流(PeerResolved /
   PathProbed / PathSelected / ConnectionEstablished / PathSwitched /
   PathFailed / ConnectionClosed / DiscoveryAnnounced),**禁止**暴露
   轮询式路径查询作编排原语(`paths()` 仅供诊断)。
7. **必须**:代码小修入 `ctx.md` 即时账本,设计定谳入 `.mingspace/`
   茗篇;三震报停律全程有效(根 AGENTS.md 同款)。

---

## 附:目录对位(T0.1 立骨架即落)

```
vox1000/
  core/           ← Domain + Ports + Orchestration(律 1.1/5.1 守卫)
  adapter/kcp/    ← 缝的 KCP 实现(todo T3.2)
  adapter/sim/    ← 缝的内存实现 + 回放(todo T2.4,绿门二)
  adapter/disc/   ← Memory/种子 discovery(todo T3.1)
  examples/       ← 对打 demo(绿门三)
```

定谳索引:`.mingspace/vox1000_ming.md`(主卷)→ `iroh_review_ming.md` /
`p2p_core_review_ming.md` / `custom_boundary_ming.md` /
`hexagonal_review_ming.md`;开工序 = `todo.md`;小修账 = `ctx.md`。
