# module: activity-registry 职责: 活动库:包清单六区的落库、安装两审(静态审 + 回放审)、包版本 × 资产版本两条序列、 两维分类、.JS 产物存取、资产版本进化管线(候选 → 回放 → 人放行 → 生效 / 回退) 不负责: .JS 的执行(见范式运行器)、工具契约与模型绑定的真身(经端口问 toolbox / llm)、 台账物化(经端口问 ledger)、模版净化的实现(经端口问 interaction) 公开出口: index.ts - 类型:`ActivityRegistryService` `ActivityCard` `LoadEnvelope` `AssetVersion` `PackageVersion` `ReplayCase` `ReplayVerdict` `DependencyFile` `ExternalChecks` - 错误:`InstallRejectedError` `ActivityNotInstalledError` `ToolNotDeclaredError` `IllegalIncrementTransitionError` - 端口类型:`RegistryStore` `ToolContractProbe` `ModelBindingProbe` `LedgerDeclarationApplier` `TemplateGuard` `Clock` `IdGenerator` - 用例工厂:`createRegistryService(deps): ActivityRegistryService` - 纯函数:`staticAudit` `auditPassed` `danglingListeners` `acceptanceLevelFindings` `loopFindings` `scanArtifact` `buildLoadEnvelope` `shouldSeedAsset` `canTransition` `assertTransition` `judgeReplay` `mayTakeEffect` - adapter:`createRegistryStore` - Drizzle 表:`activityPackageTable` `activityAssetTable` `assetIncrementTable` 层级: L4(编码规范 §4) 依赖: @contracts;@shared/db;port 注入:toolbox(L2)、llm(L1)、ledger(L1)、interaction(L3) 被依赖: loop-engine, flow-engine, skill-engine, task, process, app(治理台 · 活动库管理) 不变量(OS 11.2 / 11.3,AM 11.3): - **安装两审**:静态审有 error 即不上架;「旧成不坏」是**生效硬门**, 「旧败能成」只入重演报告、不作门槛;首装无历史即免回放审 - **悬空监听拒绝**:无时限或无关联键与内容条件的监听一律拒装(AM 4.4) - **装不齐不上架**:工具调用契约缺一即拒;模型名未绑定四元即拒 - **活动包零环境能力**:产物含 `process.env` / `fetch(` / node 核心模块 / 动态执行即拒(ADR-004) - **模版无脚本**:含脚本或外部资源的视图模版即拒 - **验收等级不得谎报**:标为 L1/L2 却无可机检谓词即拒 - **资产与包分离**:包只携资产初始版;`shouldSeedAsset` 保证**不覆盖已有更高资产版**, 覆盖只能是显式的 `rollbackAsset` 治理动作 - **进化必过治理**:候选 → 回放 → 人放行,状态机不许跳过回放 - **安装恒为新增、版本并存**:卸载只置 state,在途任务按其启动时版本跑完 近变(2026-07-28):模块面未变。app 层的 `GET /api/gov/activities` 出参加 `contract` 面 (必填入参 / 入参字段 / 输出口与载荷字段 / 声明的工具·模型·域对象·岗位 / 调人预算), 由 `manifestOf` 逐个读清单组装。此前治理台看不到活动的契约: 编排的人引用一个活动却不知道它吃什么,边映射只能靠猜; 要开发一个活动的人也没有一处能照着看。