现状
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 的性质不同:
风险:
- 若继续提交,
develop 会长期承载 TS SDK 输出噪音。
- 若直接移除,会破坏现有 TS contract drift guard / 可能的 gocell-web 消费路径。
- 若迁到 release-only/npm SDK,需要明确生成、验证、版本、消费和 CI 流程,避免失去 contract API 可审查性。
修复方向
评审并裁决 generated-ts/ 的发布归属,建议比较三种方案:
-
保留在 develop
- 适用:TS contract types 是开发期一等审查材料,gocell-web 或示例直接消费仓内输出。
- 要求:补充文档说明它与
generated/、release-only metadata bundle 的边界;保持 generatedverify / archtest 守卫。
-
迁为独立 npm/SDK package
- 适用:TS types 是外部前端/SDK 消费 API。
- 要求:新增 package manifest、release 流程、版本 pin、消费示例;develop 可只保留 generator + fixture/golden。
-
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.
现状
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 输出噪音。修复方向
评审并裁决
generated-ts/的发布归属,建议比较三种方案:保留在
developgenerated/、release-only metadata bundle 的边界;保持 generatedverify / archtest 守卫。迁为独立 npm/SDK package
release-only artifact
最低交付:
generated-ts/的归属。tools/generatedverify和 TS emit funnel,确保 develop CI 仍能验证 generator 正确性。Files
Trigger
非条件延后;在 PR #1515 release-only metadata bundle 策略确定后,应独立评审,避免三类 generated artifact 混用同一规则。
Source
Derived from PR #2490 / issue #1515 review discussion about generated artifact ownership.