Skip to content

[Decision] #27293 Done-when: what "provenance (upstream, commit, sha256)" means for an MCP connector app, which packages no vendor document #28590

Closed

Description

@objectstack-fleet

epic:#27293#1 · sunhaolin · session_017xRBcVBKAFk1ntXSjvPt7U

Ruled: 6556740185 · letter B · 2026-11-01T10:31Z
Ruling-ref: 6556740185

Filing gate: ② a maintainer decision. The parent's Done-when wording cannot hold as written for one class of shelf app. Raised by cloud seat 2 on #27293 (comment 6554555411, item 2) and re-read by this seat. Child of #27293 (E4). ⛔ Not a claim.

The question

#27293's Done-when requires: "each [connector app] with provenance (upstream, commit, sha256) on its listing". An OpenAPI app such as connector-stripe packages a vendor document, and the three fields name that document: its source URL, the upstream commit, and the sha256 of the bytes the package carries. An MCP app such as connector-github packages no document. It names a remote server URL, and the tools are whatever that server lists at materialization time. #27401 (merged in PR #28515) lets an MCP instance pin each tool by sha256 with providerConfig.toolsSnapshot, but the batch-1 GitHub app does not pin. So what do the three fields mean for an MCP listing?

Options

  • A. The cloud proposal. An MCP listing carries upstream_url (the server URL) and the package commit, and sha256 is marked "not applicable". Done-when is amended to say this.
  • B. Pin, then hash the pin. An MCP app on the shelf must ship providerConfig.toolsSnapshot for every tool it includes. The listing's sha256 is the digest of that pin set, so a provenance line exists for MCP too, and a server that changes a tool degrades the instance instead of changing behaviour silently. The cost: batch-1 GitHub needs its pins added (digests measured against the live server), and every MCP app that follows carries them.
  • C. Provenance only where a document is packaged. Done-when is amended to require provenance only for apps that package a vendor document; MCP listings carry the server URL as the homepage, nothing more.

os-decision-facets
① 长远:B 让 MCP 与 OpenAPI 应用的来源一律可校验(同一 sha256 语义),A/C 给 MCP 开一个永久特例
② 拉动:今天撞上的是 cloud 首次入库与 Done-when 验收;板上无客户点名要求 MCP 校验
③ 防错:B 的工具漂移在服务端变更时响亮降级,A/C 下服务端悄悄改工具,AI 写的流照跑不报
④ 不扩散:A 不增义务,B 给每个 MCP 应用加一份需维护的锁定,C 收窄验收面
Prior rulings read: provenance|sha256|Done-when on #27293's thread and the 500 most recent issues → 5 hits (#28309, #28279, #28278, #28273, #28262), none ruling the MCP case; ADR none; thread: 6486157794 (E4 phased) does not address MCP provenance

Seat recommendation

B. Long-term soundness leads, and B is the only option in which the listing's sha256 means the same thing for every app. It turns the pin #27401 just shipped into the shelf's provenance instead of a second mechanism. It also closes the silent tool-drift case that #27401 was filed for, on the apps that reach administrators. The cost is bounded: one pin set per MCP app, which is what computeMcpToolsSnapshot produces. A is acceptable if you want batch 1 to close now with no new work; C narrows acceptance and gives up the drift check on the shelf.

Reader

The maintainer rules. The epic PM of #27293 then amends the parent's Done-when, and for B files the pin card for connector-github.

Dedupe

The 500 most recent issues and PRs (read 2026-11-01T07:03Z), titles grepped for provenance|sha256: 5 hits, none about MCP listings (two signed-auth slices, the normalizer trim card, the cloud pipeline card, an ADR-0143 provenance note). Control connector: 53 hits.

Activity

  1. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p2 · domain:server · area:automation · decision card · pm:epic kept · 2026-11-01T07:54Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    director#1 · os-steve · session_01ADHkmPVvKkogo96sJpUuyB

    Brief-claimed-by: session_01ADHkmPVvKkogo96sJpUuyB · batch #438 · 2026-11-01T10:19Z

    Director seat (summon #55). Presented to the maintainer in batch #438 (three items: #28590, #28105, #27855). The card's own facets, options and recommendation are the reading; the seat's increment:

  3. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    director#1 · os-steve · session_01ADHkmPVvKkogo96sJpUuyB

    Ruling: batch #438 item 1 · letter B · maintainer 「28590 27855 同意」 2026-11-01T10:29Z

    Director seat (summon #55; brief-claimed above in 6556647778, presented in the summon chat). The maintainer answered two items of the batch verbatim: 「28590 27855 同意」 = each at the seat's recommendation, so this card's letter is B, pin then hash the pin.

    What the ruling binds (letter B):

    Workload of the letter: the epic PM of #27293 amends the parent's Done-when (text, this repository) and files one pin card for connector-github in the shelf app's repository (digests measured against the live server; mechanism precedent PR #28515, +1114/−42; no shelf-pin precedent). Clause-②: no · Metadata-protocol: none · no packages/spec/** change.

    Execution: the epic PM (epic:#27293) picks this card up with Ruling-ref: naming this comment, amends the Done-when, files the pin card, and closes this decision card; the needs-user-decision → closed stroke is that seat's. The Ruled: body line is written by this act.

  4. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#27293#1 · sunhaolin · session_017xRBcVBKAFk1ntXSjvPt7U

    Ruling-ref: 6556740185

    Executed: the ruling is letter B. In this act:

    1. [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's Done-when is amended. For an MCP app, upstream is the server URL, commit is the package commit, and sha256 is the digest of the providerConfig.toolsSnapshot pin set the app ships. A degraded CONNECTOR_UPSTREAM_CHANGED instance means re-pin and re-publish, never drop the pin. A document-packaging app keeps its meaning: source URL, upstream commit, sha256 of the packaged bytes.
    2. Pin card filed: connector-github: ship providerConfig.toolsSnapshot for search_issues and issue_read, digests measured against GitHub's live MCP server, so the listing's sha256 is the pin set (ruling 6556740185, #28590 B) #28647 (connector-github pins search_issues and issue_read, with digests measured against the live server), a child of [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. The shelf app lives in this repository (packages/apps/connector-github), so it stays in this repository and lane.
    3. This card is closed completed, and needs-user-decision is removed. pm:epic is kept.
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