Skip to content

[GEN-TS] Decide generated-ts ownership: develop artifact vs npm SDK vs release-only #2491

Description

@ghbvf

现状

generated-ts/ 当前作为 contractgen 的 TypeScript 输出提交在 develop:

  • generated-ts/index.ts 是 cross-contract barrel,重导出所有 TS contract types。
  • generated-ts/contracts/**/types.ts 是 per-contract TS 类型输出。
  • tools/generatedverify 已把 TS 输出纳入 drift 校验,缺失或手改会报 drift。
  • tools/archtest/contractgen_ts_emit_funnel_test.go 约束 TS 输出只能写到 generated-ts/。

这与另外两类 generated artifact 的性质不同:

  • generated/ 是独立 Go module(github.com/ghbvf/gocell/generated),被 Go 代码编译期 import,必须保留在 develop。
  • cellmodules/.gocell/exported-metadata/** 是 PR Operator-SDK mode: cellmodules metadata bundle + module-cache resolver #1515 的 module-cache resolver 发布数据,应只在 release branch/tag 或独立 metadata module 中出现,不进 develop。
  • generated-ts/ 当前不是 Go 编译依赖,更接近前端/SDK 发布物;是否继续提交到 develop 需要单独裁决。

风险:

  • 若继续提交,develop 会长期承载 TS SDK 输出噪音。
  • 若直接移除,会破坏现有 TS contract drift guard / 可能的 gocell-web 消费路径。
  • 若迁到 release-only/npm SDK,需要明确生成、验证、版本、消费和 CI 流程,避免失去 contract API 可审查性。

修复方向

评审并裁决 generated-ts/ 的发布归属,建议比较三种方案:

  1. 保留在 develop

    • 适用:TS contract types 是开发期一等审查材料,gocell-web 或示例直接消费仓内输出。
    • 要求:补充文档说明它与 generated/、release-only metadata bundle 的边界;保持 generatedverify / archtest 守卫。
  2. 迁为独立 npm/SDK package

    • 适用:TS types 是外部前端/SDK 消费 API。
    • 要求:新增 package manifest、release 流程、版本 pin、消费示例;develop 可只保留 generator + fixture/golden。
  3. release-only artifact

    • 适用:TS types 只服务发布包,不需要日常 review。
    • 要求:release branch/tag 或 release workflow 生成并验证;develop 不提交全量输出;CI 用 temp dir 验证 generator。

最低交付:

Files

  • generated-ts/index.ts
  • generated-ts/contracts/
  • tools/generatedverify/generatedverify.go
  • tools/generatedverify/generatedverify_test.go
  • tools/archtest/contractgen_ts_emit_funnel_test.go
  • tools/codegen/contractgen/

Trigger

非条件延后;在 PR #1515 release-only metadata bundle 策略确定后,应独立评审,避免三类 generated artifact 混用同一规则。

Source

Derived from PR #2490 / issue #1515 review discussion about generated artifact ownership.

Activity

  1. added
    area-tooling元数据治理/archtest + codegen/工具链
    backlogBacklog item — automation trigger 入 project
    cx-2Cx2 改动量:同包 ≤5 文件
    on Jun 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-tooling元数据治理/archtest + codegen/工具链backlogBacklog item — automation trigger 入 projectcx-2Cx2 改动量:同包 ≤5 文件pri-p2Priority P2type-arch-opt架构优化

    Projects

    • Status
      Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions