cmd

    cmd —— mooncmd 的 moonx 命令面:聚合词表 TOML 一令生成骨架代码(手写孪生件形状,消费者径)

    command-line
    moonx
    wasm
    codegen
    event-sourcing
    Download zip
    Author
    Version
    0.0.1
    License
    MulanPSL-2.0
    Last updated
    3 hours ago
    Downloads
    2

    #thy1016/cmd

    mooncmd 聚合词表 → 骨架代码的 moonx 命令面(独立薄模块;wasm-safe, moonx = 取注册表预编译 wasm → moonrun 执行)。

    读一份 aggregate 词表 TOML,发射三件骨架代码:

    产物内容regen 行为
    <名>_gen.mbt骨架本体(事件/命令/状态/分派/wire/账本)每次再生覆写(纯产物)
    <名>_contract_wbtest.mbt契约门脚手架(init 契约 + wire roundtrip + 确定性)每次再生覆写(纯产物)
    <名>_policy.mbt裁决策略 stub(正确签名守卫闭包,Err("TODO(...)") 即未填)仅缺位时落,regen 永不覆写(stub-zone)

    #用法

    moonx thy1016/cmd@latest <table.toml>

    @latest 恒写(消费口径;版本钉进产物头注溯源)。产物落表同目录。 exit 码:0 成功 / 2 缺参 / 3 表读不到 / 4 parse 拒 / 5 validate 拒。

    产出后两步:

    1. 填裁决体:<名>_policy.mbt 里每钩子 = 正确签名闭包,把 Err("TODO(<Cmd>): 裁决体待填——红线7") 换成真实裁决(红线7:裁决 不入表,策略件是唯一手写面);
    2. 装配 + 验:<名>_hooks() 传入 <名>_decide(见 gen 分派骨架); 契约罐 <名>_contract_wbtest.mbt 随包 moon test 即验。

    #词表格式(aggregate 方言)

    schema_version = "1.0" generator = "mooncmd_agg_gen" target_package = "你的包路径" [aggregate] name = "account" # 词根(Pascal/snake 两形派生) id = "string" # id 域(封闭集:string) [aggregate.state] fields = [ { name = "balance", type = "int", init = "0" }, ] [[aggregate.events]] name = "Deposited" fields = [ { name = "amount", type = "int" } ] evolve = ["add balance=amount"] # 演化指令封闭集:set|add|append|remove [[aggregate.commands]] name = "Deposit" fields = [ { name = "amount", type = "int" } ]

    封闭集:字段类型 string|int|bool;演化指令 set|add|append|remove; 裁决语义不入表(红线7)——词表只描述结构与演化,裁决在策略件。

    #治理三律(与上游 mooncmd 的契约)

    1. 变更单向律:发射器能力变更只先落主仓 bitbang/skelschema/mooncmd_agg_toml_gen.mbt,本仓 gen/ 只跟随 搬运(体保真);
    2. 漂移探测律:本仓 gen/ 测试面 golden 字节探针 = bank 表 → 期望产物 ≡ 主仓已提交 account_gen.mbt 字节(溯源三件换算,产物体 零漂)——主仓发射器一变,本罐当场红,照差移植(红灯驱动同步);
    3. 发布配对律:发射器变更 = mooncmd 与 cmd 同日发版。

    #开发

    sh driver/gate.sh # 一令门:双目标 check(--deny-warn)+ gen 双腿测试 + e2e 台 sh driver/e2e.sh # 单跑 e2e:native+wasm 双运行时 + only-if-absent 回归 + 消费项目核身

    判行:CMD-GATE: PASS / CMD-E2E: PASS。无叠层需求(依赖全在 registry);golden 探针用仓内冻结 fixture,不挂 mooncmd 仓。

    #配套文档

    词表语义/红线全谱 = mooncmd 仓 const.md + README(agg 表头注记); 配方节见 mooncmd README「从词表到骨架」。

    Source Files