You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
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
Filing gate: ④ execution of a maintainer ruling. Ruling 6556740185 on #28590 (letter B, maintainer 「28590 27855 同意」 2026-11-01T10:29Z) requires every MCP connector app on the shelf to ship providerConfig.toolsSnapshot for every tool it includes. The listing's sha256 is the digest of that pin set. Child of #27293 (E4). ⛔ Not a claim.
Ruling-ref: 6556740185
Work
packages/apps/connector-github/src/connectors/github.connector.ts:39 (read at origin/main) includes ['search_issues', 'issue_read'] and pins nothing. Do the following:
Add providerConfig.toolsSnapshot with one sha256 per included tool. Take the digests as computeMcpToolsSnapshot (@objectstack/connector-mcp, PR feat(connector-mcp,spec): toolsSnapshot pins each MCP tool; a mismatch degrades through CONNECTOR_UPSTREAM_CHANGED #28515) computes them over the live tools/list answer of https://api.githubcopilot.com/mcp/, with the headers the app already sends (X-MCP-Readonly: true). Record the date and the measured digests in the app's README, beside the existing provenance section.
Add a test in packages/apps/connector-github/test/ that fails when an included tool has no pin or a pin is not 64 lowercase hex. It must stay offline (no live call in CI).
Give the listing a provenance line: upstream = the server URL, commit = the package commit, sha256 = the digest of the pin set. The digest is stableStringify of the record, then sha256. Name the exact recipe in the README so cloud's ingestion can recompute it.
Re-pinning when GitHub changes a tool is the shelf's routine. The ruling says a degraded instance means re-pin and re-publish, never drop the pin.
Measurement constraint:tools/list on GitHub's server needs a token whose scopes list both tools. A session without one cannot measure the digests. A measurement with no token, or with an under-scoped one, is no measurement: the answer is a 401, or a list missing a tool. If no token is available, the dev reports blocked naming the secret it needs; it must not commit placeholder digests.
Business reason
#27293's Done-when gives each shelf listing a verifiable upstream, commit and sha256. For an MCP app, only the pin set makes sha256 mean something, and it also turns silent tool drift into a named, degraded instance on the app that administrators install.
Reader
The epic PM of #27293 dispatches it (domain:server, packages/apps/*). Cloud seat 2 reads the provenance recipe for its ingestion (#28278).
Dedupe
The 200 most recent issues and PRs (read 2026-11-01T11:05Z), titles grepped for toolsSnapshot|\bpin\b: 3 hits (PR #28515, the mechanism; #28582 and PR #28597, the skills recipe); none pins a shelf app. Control connector: 21 hits.
Dispatch held: the environment cannot do the measurement. ⛔ Not a claim.
Measured at 2026-11-01T12:03Z from this seat's container: a POST to https://api.githubcopilot.com/mcp/ (an MCP initialize, no token) answered curl: (56) CONNECT tunnel failed, response 403. The environment's network policy denies the host before any request reaches GitHub. With a token, the call would still be refused there.
This environment also has no dedicated measurement secret. The session's own GitHub credential is the fleet operator's and will not be used to measure a shelf app.
Two things unblock the card, both the maintainer's to set in the cloud environment: (1) add api.githubcopilot.com to the environment's allowed network domains; (2) store a read-only GitHub token whose scopes list both search_issues and issue_read, as the environment secret GITHUB_MCP_TOKEN (the app's own credentialRef). Once both are in place, the epic seat claims and dispatches this card. No placeholder digests will be committed.
Activity
objectstack-fleet commentedon Nov 1, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: 发布并装进一个环境 | none | P④
Triage: p2 ·
area:automation·pm:epickept · 2026-11-01T11:55Z⛔ Not a claim.
toolsSnapshot, and the listing's sha256 is the digest of the pin set. p2, in step with [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 other children.domain:serverstands.pm:epicstays. The epic PM 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 dispatches it.Generated by Claude Code
objectstack-fleet commentedon Nov 1, 2026
epic:#27293#1 · sunhaolin · session_017xRBcVBKAFk1ntXSjvPt7U
Dispatch held: the environment cannot do the measurement. ⛔ Not a claim.
https://api.githubcopilot.com/mcp/(an MCPinitialize, no token) answeredcurl: (56) CONNECT tunnel failed, response 403. The environment's network policy denies the host before any request reaches GitHub. With a token, the call would still be refused there.api.githubcopilot.comto the environment's allowed network domains; (2) store a read-only GitHub token whose scopes list bothsearch_issuesandissue_read, as the environment secretGITHUB_MCP_TOKEN(the app's owncredentialRef). Once both are in place, the epic seat claims and dispatches this card. No placeholder digests will be committed.