Skip to content

[Decision] E4 of #27293 — official connector apps: which are open edition (this repository) and which commercial (cloud repository), and when the first shelf starts #27302

Open

Description

@objectstack-fleet

epic:#27293#1 · sunhaolin · session_017xRBcVBKAFk1ntXSjvPt7U

Ruled: 6486157794 · letter A (phased) · 2026-10-29T02:27Z
Blocked-by: #26709
Blocked-by: #27237

Filing gate: ② a decision only the maintainer can take, on ③ the maintainer's direct instruction in session_017xRBcVBKAFk1ntXSjvPt7U, 2026-10-28, verbatim, in order: 「连接器先不考虑」 · 「连接器立决策卡」 · 「连接器分开源版和商业版,商业版在 cloud 仓库。」 Sub-issue of #27293 (E4 row). ⛔ Not a claim; nothing in E4 is dispatched while this card is open.

维护者速读

Background

#27293's E4 row asks the epic PM to file 20–30 official connector apps as metadata packages (normalized spec + include + listing + README credentials section): a static-key batch (Stripe read, GitHub, Twilio, Okta, Adyen, OpenAI, monday, Neon) after E1 #26709 and E2 #27237; an OAuth batch (Microsoft Graph, Notion, Atlassian, Google) after #26702; a signature batch (Alipay v3) after #26710; DocuSign as the first declarative verification of the OAuth path. The parent assigns ingestion and listing generation to the cloud repository.

Settled by the maintainer (verbatim above): connectors come in an open edition and a commercial edition; the commercial edition lives in the cloud repository.

Governing text: docs/adr/0097-declarative-connector-instances.md §"Open / enterprise line (ADR-0015)", as amended by ADR-0143 (2026-10-27): open source = the rest / openapi / mcp provider factories, static auth, env-resolved credentialRef, and now oauth2 / app-credential / signed with the connection record and Connect / Reconnect flow; enterprise keeps the vault-backed CredentialResolver backend and per-tenant connection lifecycle. That line is about platform capabilities; no text says which listed app belongs to which edition. Searched: git grep -n -iE "official (app|package|connector)|first-party (app|package|listing)" origin/main -- docs/adr docs/NORTH-STAR.md packages/spec/src/marketplace → 1 hit (ADR-0141:310, a dependency table row, not this); docs/design/marketplace-publishing.md for official|first-party|repo|source|seed|curat → none.

Protocol statement: nothing an author can write changes here; every option consumes E1–E3's keys as they land.

Premises (each with its re-check)

  1. No package home for official connector apps exists in this repository. Re-check: git ls-tree --name-only origin/main packages/apps/ → 3 entries (account, setup, studio), all platform apps (read 2026-10-28T15:39Z).
  2. Every auth kind the named apps need is open tier after ADR-0143. Re-check: the sed -n 125,145p read above (static: Stripe…Neon; oauth2: Microsoft Graph, Notion, Atlassian, Google, DocuSign; signed: Alipay v3).
  3. Every E4 batch is gated on an open card: connectors: auto-shelf readiness — declarative include and a loud Swagger 2.0 refusal for connector-openapi; tools/list pagination, fatal 401 and a tool-snapshot hash for connector-mcp; an offline spec-normalization tool #26709 open (items 1, 3(c), 4 remain), connectors: sys_connector_credential + open-tier resolver chain (env → credential object → vault), reconcile on credential change, install-local prompt for missing credentialRefs (ruling A on #27230) #27237 open (in flight, domain:server seat 3), connectors: outbound OAuth in the open tier — connection-scoped authorization-code / client-credentials / app-credential tokens, refreshed per dispatch, for the openapi, mcp and rest providers #26702 and connectors: request-signing auth kind for the openapi and rest providers (RSA2 / HMAC canonical-request signers: Alipay, WeChat Pay, Aliyun, Tencent Cloud, e签宝) — the vendor-auth half that #26702 does not cover #26710 open and pm:blocked on ADR: move outbound connector auth (OAuth2 grants, app-credential exchange, request signing) into the open tier — the successor record #26702 and #26710 both wait on #26768. Re-check: gh api repos/objectstack-ai/objectstack/issues/N --jq .state for each.
  4. No named customer has asked for a specific connector app on the board. Re-check: the dedupe below.

The question

When the marketplace gets official connector apps, which of them does a self-hosting open-source user get from this repository, and which come only with the commercial edition from the cloud repository — and does the work start now or after E1 + E2?

Options

What it does What a customer sees Effort
A The edition follows the ADR-0097/0143 capability line: an app whose every key runs on the open tier is open edition and lives in this repository (private, validated by this repo's CI against the runtime at HEAD); an app that needs an enterprise capability (vault backend, per-tenant connection lifecycle) or a commercial-only provider is commercial edition in the cloud repository. On today's list that puts all 20–30 in the open edition. Start after E1 + E2. Open-source users get the whole first shelf; the commercial edition adds the apps that need its capabilities, plus hosting. domain:devx ~3 PRs (one per batch) + 1 cloud pipeline card; no precedent
B The edition is a business choice per listing: this repository ships only a small open reference set (DocuSign + 2–3 static-key apps, the ones #27293's Done-when needs); the rest of the shelf is commercial edition in the cloud repository even though it runs on the open tier. Start after E1 + E2. Open-source users get a few samples and the E3 recipes to build the rest; the full shelf is a commercial feature. domain:devx 1 PR + repo:cloud ~3 PRs; no precedent
C Every official connector app is commercial edition in the cloud repository; the open edition ships the providers and E3's recipes only. Start after E1 + E2. Open-source users build their own from the recipes; no official apps outside the commercial edition. repo:cloud ~3 PRs; no precedent

Business meaning: A is "the edition is decided by what the engine can do, so one rule sorts every app"; B is "a few free samples, the catalogue is the paid product"; C is "the catalogue is entirely the paid product".

四维分析

os-decision-facets

  • ① 项目长远合理性:两年后的样子是「开源版与商业版的边界只有一条,且写在 ADR 里」;A 复用 ADR-0143 已裁的能力线,新应用按其所需能力机械归版,不新增第二份手工名单;B、C 是逐个应用的商业判断,需要一份长期维护的归属清单,边界随清单漂移。
  • ② 实际业务拉动:板上无具名客户点名要某个连接器(检索见下);拉动来自 [Epic] Marketplace and connector auto-shelf — E1 platform prerequisites (openapi/mcp hardening, outbound OAuth, request signing), E2 administrator credential hand-off, E3 author recipes and handbook, E4 the first shelf of official connector apps #27293 的 Done-when 与北极星第④步。零客户拉动 ⇒ 三个选项都先停到 E1/E2 落地;商业版靠目录收费有多大拉动,席位测不到,只有你知道。
  • ③ 防 AI 犯错:A 的归版判据可机械判定(应用用到的认证种类是否全在开源枚举内),写应用的 agent 放错仓会被检查出来;B、C 靠名单,放错仓不会有任何报错(静默)。开源仓内的应用还能在同一 CI 里过 os validate,契约变化当场响亮失败。
  • ④ 创业阶段不扩散:每个上架应用都是永久维护义务(厂商 API 漂移、来源 sha256、许可证复核);B 让开源仓只背 3–4 个,最省;A 让开源仓背全部 20–30 个;C 让开源仓零负担但维护全落到 cloud。
    Prior rulings read: connector app,shelf,official listing,marketplace seed → 0 hits; ADR-0097 §Open/enterprise line amended by ADR-0143 (capabilities, not listings); thread: none; repo: objectstack-ai/objectstack

Recommendation

A, phased: park now; when E1 + E2 land, start with only the apps #27293's Done-when needs (DocuSign for the OAuth path plus two or three static-key apps), and grow toward 20–30 on customer pull. Not B: it adds a second, hand-kept edition boundary next to the ADR one, and a misplaced app fails nowhere. Not C: it leaves the open edition's marketplace with no reference the E3 recipes can point at. Confidence gap: the commercial edition's revenue model is not on the board; if its value is meant to be the curated catalogue itself, B is the shape that serves it. Also unverified: whether hosted runtimes ship the openapi / mcp / rest providers by default (#27293 Risks).

Self-check: 只看①选 A;②③④ 是否翻转:否(②④ 只把时序推到 E1/E2 之后并分期;④ 偏 B 但不翻字母)。

After the ruling

Related

#27293 (parent) · #26709 · #26702 · #26710 · #27237 · #27240 (handbook) · #27284 (#27108 M4's plugin shelf, shares the listing enum) · #25747 (closed, DocuSign pointer) · ADR-0097 · ADR-0143 · ADR-0015.

Dedupe

Activity

  1. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    director#1 · os-bill · session_01Utp6CbQLcy8yg6vhJVXXi8

    Brief-claimed-by: session_01Utp6CbQLcy8yg6vhJVXXi8 · batch #426 · 2026-10-29T02:15Z

    Director seat, summon #54 (ledger objectstack#12708, opening mark 6485456694). Presented to the maintainer in batch #426 as item 3 of 3, together with #27298 and #27299.

    Seat increment (re-read at origin/main 73725c20, 2026-10-29T02:15Z):

    Prior rulings read: connector app, shelf, official listing, open edition, commercial → ADR-0097 §Open/enterprise line (capabilities only), ADR-0143 D1; thread: none; repo: objectstack-ai/objectstack

  2. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    director#1 · os-bill · session_01Utp6CbQLcy8yg6vhJVXXi8

    Ruling: batch #426 item 3 · letter A (phased) · maintainer 「同意」 2026-10-29T02:23Z

    Director seat, summon #54 (ledger objectstack#12708, opening mark 6485456694, brief 6486036679). The maintainer answered batch #426 in the summon chat with one word, verbatim: 「同意」 — the seat's letter on each of the three cards; for this card A, phased. The condition the brief named for B (the curated catalogue itself being the commercial product) was put to the maintainer in the same presentation and not taken up.

    What the ruling binds (letter A, phased): the edition of an official connector app follows the ADR-0097 / ADR-0143 capability line, mechanically: an app whose every key runs on the open tier is open edition and lives in this repository (a metadata package validated by this repository's CI against the runtime at HEAD); an app that needs an enterprise capability (the vault-backed CredentialResolver, per-tenant connection lifecycle) or a commercial-only provider is commercial edition in the cloud repository. On today's E4 list every app runs on open-tier auth, so the first shelf is open edition. Timing: park now; when E1 (#26709) and E2 (#27237) have landed, start with only the apps #27293's Done-when needs — DocuSign for the OAuth path plus two or three static-key apps — and grow toward 20–30 on customer pull, batch by batch (static-key; OAuth after #26702; signature after #26710). Ingestion and listing generation stay with the cloud repository as #27293 assigns them. Not taken: B (a second, hand-kept edition list beside the ADR line; a misplaced app fails nowhere), C (the open edition's marketplace with no reference the E3 recipes can point at).

    Governing text: ADR-0097 §"Open / enterprise line" as amended by ADR-0143 (capabilities); the maintainer's 2026-10-28 instructions quoted in this card's filing gate (the split itself); #27293 E4 row and Done-when. Premises re-read at origin/main 73725c20 (brief 6486036679).

    Workload of the letter: domain:devx ~3 PRs (one per batch, metadata packages) + 1 repo:cloud pipeline card · after E1 + E2 · no precedent.

    Execution: this card moves needs-user-decision → pm:blocked in this act with Blocked-by: #26709 and Blocked-by: #27237 (body and thread); pm:epic stays. When both close, the epic PM of #27293 files one card per batch as sub-issues of #27293 in this repository, plus the pipeline card in the cloud repository, each citing this comment on a Ruling-ref: line; #27293's E4 row is updated by the epic PM to this ruling.

    os-decision-facets
    ① 长远:开源与商业只有一条边界且写在 ADR 里,按应用所需能力机械归版,不新增第二份手工名单
    ② 拉动:板上无客户点名;先停到 E1/E2 落地,首批只做验收所需,再按拉动增长
    ③ 防错:归版判据可机械判定,放错仓可被检查出来;开源仓内应用在同一 CI 里过 os validate
    ④ 不扩散:分期把开源仓的永久维护义务压到首批 3–4 个应用,20–30 只随拉动增长

  3. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 发布并装进一个环境 | none | P④

    Triage: p2 · ruled A (phased) · coordination · 2026-10-29T04:06Z

    ⛔ Not a claim.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions