Repository navigation
Description
Ruled: 6617232764 · letter A · 2026-11-03T22:34:37Z (batch #12: F8 is a DocuSign openapi connector instance declared inside hotclm, document and include taken from the 18.3.0 official app, OAuth connected once by an administrator, status by scheduled polling; supersedes the 10-25 ruling below)
Blocked-by: the maintainer-provided DocuSign developer-sandbox OAuth client (integration key + secret key) connected once in the demo deployment — the acceptance cannot run without it (objectstack#25747, the platform plugin this card waited on, was closed not planned on 2026-10-28)
Earlier: Ruled: 6393744399 · letter A · 2026-10-25T05:02Z (platform connector-esign; superseded).
Split by the ruling: F15 (HotCRM hand-off) moved to #107; this card keeps F8 (e-signature), which consumes the platform connector of objectstack-ai/objectstack#25747.
Card spec: docs/backlog/12-esign-and-crm-handoff.md — read it in full; this issue carries only the increment. Milestone M4. The card's own blockers (cards 06 and 09) have both landed (#16, #39).
Why it is blocked on #82, and on nothing else
#82 moves @objectstack/* from 17.4.0 to 17.7.0. This card authors new flows and connectors; authored against 17.4.0 schemas, they would meet 17.5–17.7's new refusals on the next bump. It is filed now so it is visible, and it unlocks when #82 merges.
Release changes that bear on this card (leads from the 17.5–17.7 release pages, not measured against code that does not exist yet)
- 17.5 — an
apiflow's start node needs a non-blankconfig.secret(or the flow is declaredautolaunched), or it stops registering at boot. F8's callback is anapi-triggered flow. - 17.6 — Connectors keep only what runs: connector
triggers,syncConfigandfieldMappingsare deleted; a sync moves to amappingwithconnectorSource. - 17.7 — inbound and outbound flow secrets move into
sys_flow_credential; credential values leave the copies they were made into.
Read the pages (objectstack-ai/objectstack → content/docs/releases/v17/17-{5,6,7}.mdx) for the exact shapes at dispatch time.
Premises the seat re-checks before dispatch
- A provider sandbox is reachable from a dev container. The card's acceptance needs "against a provider sandbox, a contract goes
signing → activewith the signed PDF attached". The PM has no reading that a DocuSign sandbox credential or the network path exists for a dev. If it does not, the seat asks the maintainer how acceptance is met before dispatch — ⛔ not decided by the seat, ⛔ not faked by the dev (AGENTS.md: a capability the runtime does not deliver is hidden, not faked). - The
with-hotcrmcomposition can be booted for the gate run ("Gates green in both compositions"). How HotCRM'scrm_contractis present in that composition is a reading the dev takes from HotCRM'sHOTCRM_COMPOSITIONprecedent; the PM has none.
Filed by the repo:hotclm PM seat from the backlog card file.
Activity
objectstack-fleet commentedon Oct 9, 2026
决策:卡 12 的电子签验收需要服务商沙箱,开发容器里没有凭据——怎么验收? · 2026-10-09T16:05Z
Governing text:
docs/backlog/12-esign-and-crm-handoff.md验收「Against a provider sandbox, a contract goessigning → activewith the signed PDF attached」·AGENTS.md「Honest capabilities … A capability the runtime does not deliver is hidden, not faked」与「Capability expansion: Tight … unless the card says so」维护者速读
事情:卡 12 有两半——F8 电子签(DocuSign 起步)与 F15 HotCRM 交接。F15 不依赖外部服务;F8 的验收要在服务商沙箱里真跑通「签署中 → 生效」并挂上签好的 PDF。
读数(2026-10-09,派发容器):环境变量中电子签相关凭据 0 个;
https://account-d.docusign.com/网络可达(HTTP 200)。也就是说,缺的只是一个沙箱账号凭据,不是网络。你要做的:回一个字母。
四棱分析
另:卡 12 还需要
with-hotcrm组合能启动以跑「两种组合下 gate 全绿」,席位没有读数,派发时由 dev 先测。Generated by Claude Code
zhuangjianguo commentedon Oct 25, 2026
Ruling: batch #1 item 1 · letter A · maintainer 「同意」 2026-10-25T05:02Z
本裁的 A 是 2026-10-25 重写后的 A,不是 2026-10-09 评论里的 A。 维护者同日裁下方向性原则,逐字:「本项目是元数据应用,平台相关的功能应该在平台开发」,并问电子签是否该做成平台统一的插件。按此,卡 12 原文让 hotclm 在
src/connectors/自写每个服务商的连接器,是平台能力落在应用里,不采纳。裁决 A:电子签做成平台连接器,hotclm 只消费。
connector-esignwith DocuSign first, three fixed actions, consumed by apps as a declarativeprovider: 'docusign'instance objectstack#25747 ——connector-esign,DocuSign 首发,对外provider: 'docusign',动作固定为创建信封 / 查询状态 / 取签署件三个(ADR-0097 声明式实例,执行器由插件提供)。优先级随本卡 M4,不降档。connectors:实例声明 +api触发的回调流 +sys_setting;DocuSign 开发者沙箱凭据由维护者在 objectstack 侧提供,hotclm F8 验收时复用。工作量(卡面读数):平台
domain:services· 1 个连接器包 · 先例 connector-slack 348 行 / connector-openapi 822 行(源码,不含测试);hotclm 侧 1 个 PR(声明 + 回调流)+ F15 1 个 PR。Governing text(录裁前重读):维护者 2026-10-25 原话(上)· pm-dispatch 应用仓推荐序特例「能力先建在平台……应用仓不自建替代」· ADR-0097 §1–§2、§5(webhook 入站仍未实现,回调留在应用的
api流)· ADR-0022 §1 · ADR-0025(独立分发未实现,连接器包住单仓)·docs/backlog/12验收「Against a provider sandbox, a contract goessigning → activewith the signed PDF attached」不变。裁后执行(
repo:hotclm席位):本卡拆为 F15 子卡(Blocked-by:18.1 升级 PR)与 F8(pm:blocked+Blocked-by: objectstack-ai/objectstack#25747);本席只录裁,不改标签。#38 里clm_signature.envelope_id的消费者随 F8 到。鲜度门:正文最后编辑 2026-10-09T14:43Z;其后唯一评论是席位 2026-10-09T16:06Z 的决策分析(其 A 已被本裁取代);2026-10-25 复测电子签凭据仍为 0 个,objectstack 无既有 e-sign 卡(两条查询 0 命中)。决裁文档:https://claude.ai/artifact/WpsJbszPncNgj1cDt2Ucw9
Generated by Claude Code
objectstack-fleet commentedon Oct 25, 2026
Out of the decision box — Ruling-ref: comment 6393744399 (batch #1 item 1 · letter A · maintainer 「同意」).
CLM_COMPOSITION(M4) #107 (pm:blocked,Blocked-by:the 18.1 upgrade PR); this card keeps F8.needs-user-decision→pm:blocked,Blocked-by: objectstack-ai/objectstack#25747(the platformconnector-esign). The oldBlocked-by: #82line is replaced: Upgrade the@objectstack/*dependencies from 17.4.0 to 17.7.0, walking the official upgrade checklists of 17.5, 17.6 and 17.7 #82 is now ruled C (scheduled jobs inpnpm demo), not an upgrade.@objectstack/*release this repo has installed, plus the DocuSign sandbox credential the ruling says the maintainer provides.Generated by Claude Code
Remove the two declared fields nothing fills (screened_at, template_p…
objectstack-fleet commentedon Nov 3, 2026
Platform re-scoped — to the decision box · 2026-11-03
objectstack#25747 (the
connector-esignplugin this card waited on) was closed as not planned on 2026-10-28. The maintainer ruled there that no e-signature plugin is built, and DocuSign becomes a declarativeopenapiconnector instance inside the consuming app, once objectstack#26702 (outbound OAuth) and #26709 (include+ Swagger 2.0 normalization) land. Both are now closed. That changes F8's shape from installing a connector to declaring one in hotclm, so it goes back to the maintainer before any lane work. State:pm:blocked→needs-user-decision.Generated by Claude Code
zhuangjianguo commentedon Nov 3, 2026
Ruling: batch #12 item 3 · letter A · maintainer 「同意」 2026-11-03T22:34:37Z
裁定:A —— F8 改为 hotclm 内声明的 DocuSign
openapi连接器实例决策箱文档:https://claude.ai/artifact/VTMgyRUKZu1gQChSijSnXD 。本裁取代 10-25 的 A(平台
connector-esign插件):objectstack#25747 已于 10-28 按维护者「不需要这个插件」关卡;#26702(出站 OAuth)与 #26709(include+ Swagger 2.0 归一化)均已落地并进 18.3.0;18.3.0 还自带官方 DocuSign 连接器应用packages/apps/connector-docusign(私有包、不上 npm、只连开发者沙箱、状态靠轮询)。F8 的新形状(卡面按此改写)
src/connectors/docusign.connector.ts:provider: 'openapi',文档取自官方应用openapi/docusign-esignature.openapi.json(MIT,已裁到三操作:Envelopes_PostEnvelopes/Envelopes_GetEnvelope/Envelopes_GetEnvelopes),同样的providerConfig.include;auth: { type: 'oauth2', grant: 'authorization_code', … },客户端密钥走credentialRef,由管理员在 Setup → Integrations → Connector Connections 连接一次。esign_dispatch动作 + 流:connector_action建信封,写clm_signature.envelope_id、status: sent。docusign_poll_status_changes的做法)更新clm_signature.status;完成时建final_signed版本、写signed_at,进入 F9 既有路径。⛔ 不把 DocuSign Connect 指向 api 流(平台 api 门只校验自家签名,验不了厂商 HMAC);esign_callback等平台校验厂商回调签名后再回 api 流——席位开 objectstack 卡。signing → active并挂上签好的 PDF。clm_signature.provider不动。前提(Blocked-by,与原来相同):维护者提供 DocuSign 开发者沙箱的集成密钥 + 密钥,并在 demo 部署里连接一次(official README 列出了步骤:注册 redirect URI、Authorization Code Grant、
signaturescope)。⛔ 不伪造、不只跑到 gate。⛔ 不取 B(依赖官方应用——它不上 npm、跨包分发已被 10-29 裁暂缓)、C(F8 退出 M4)。⛔ 本席不动标签。
Generated by Claude Code