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
mcp: the host cannot pass server instructions per request, so the authoring door answers initialize with the default sentence — add instructions to McpAuthoringInjection #31022
Filing gate: (b) a contract gap with a named consumer, measured by the objectstack-ai/cloud#3658 dev (PR objectstack-ai/cloud#3684). Platform gaps go to the platform: 「平台的问题应该在平台处理」 (objectstack#30765).
Measured (objectstack pin c50e0dfa and main 1aeeafd9d3)
MCPServerRuntime.handleHttpRequest builds the per-request server with this.config.instructions, falling back to the default (packages/mcp/src/mcp-server-runtime.ts:1937-1939).
McpAuthoringInjection carries only registry, principal and environmentId (packages/mcp/src/types.ts:100-115), and handleHttpRequest's opts have no instructions.
MCPServerPluginOptions.instructions is server-wide, set once at init (plugin.ts:317, :379), so it would also reach data:read tokens that get no build tools.
Cloud constructs new MCPServerPlugin() with no options (objectos-runtime/src/artifact-kernel-factory.ts:1317).
Expected
An optional instructions on McpAuthoringInjection (or on handleHttpRequest opts), used in the initialize answer when the authoring family is registered for that request; otherwise the default.
Acceptance
Tests: a request with an authoring injection carrying instructions gets them at initialize; a data:read request gets the default.
Consumer: objectstack-ai/cloud#3658 (follow-up wiring after the pin moves).
Suggested-grade: p2.
Dedupe (2026-11-06): MCP instructions per request, McpAuthoringInjection instructions → none.
The MCP host cannot pass server instructions per request. McpAuthoringInjection carries no instructions, so the authoring door answers initialize with the default sentence. Measured by the cloud#3658 dev.
p2, domain:server, pm:queue kept: an optional field on a host injection type, with no spec key and no new tool. The instructions reach only requests where the authoring family is registered, never a data:read token.
Claim: PM loop round 1
Session: session_017ihL2dLQEXWGsE2SZ3Qn5F
Account: marchtian
Branch: claude/issue-31022-mcp-per-request-instructions
Worktree: objectstack-issue-31022
Domain: domain:server
Seat: domain:server#4
File surface: packages/mcp/src/** (types.ts, mcp-server-runtime.ts, tests), the runtime/host call site only if the injection is built there, .changeset/ (stop on breach; explain in the report)
Container & model: M, mode:subagent (in-seat background subagent, the project's standing dev form), model: default (dispatch-gates --tier: no path-derived mandate; PM judgment, default tier), effort: high
Clause-②: yes
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6692920691
Premise: holds
Serial constraints cleared: last same-package landing e1dac19 (#31042) is merged; no open pm:dispatched claim on packages/mcp
Landed · PR #31141 merged by the merge queue as 56baf78e0c422b6555238043cc7d4c1a22db3568 (second queue entry, after one inherited-row ejection from the #31120 stack; audit 6708650017).
Activity
objectstack-fleet commentedon Nov 6, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p2 kept ·
domain:server· 2026-11-06T18:57Z⛔ Not a claim.
McpAuthoringInjectioncarries noinstructions, so the authoring door answersinitializewith the default sentence. Measured by the cloud#3658 dev.domain:server,pm:queuekept: an optional field on a host injection type, with no spec key and no new tool. The instructions reach only requests where the authoring family is registered, never adata:readtoken.Generated by Claude Code
objectstack-fleet commentedon Nov 7, 2026
domain:server#4 · marchtian · session_017ihL2dLQEXWGsE2SZ3Qn5F
Claim: PM loop round 1
Session:
session_017ihL2dLQEXWGsE2SZ3Qn5FAccount:
marchtianBranch:
claude/issue-31022-mcp-per-request-instructionsWorktree:
objectstack-issue-31022Domain:
domain:serverSeat:
domain:server#4File surface:
packages/mcp/src/**(types.ts, mcp-server-runtime.ts, tests), the runtime/host call site only if the injection is built there,.changeset/(stop on breach; explain in the report)Container & model:
M,mode:subagent(in-seat background subagent, the project's standing dev form),model: default(dispatch-gates --tier: no path-derived mandate; PM judgment, default tier),effort: highClause-②: yes
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6692920691
Premise: holds
Serial constraints cleared: last same-package landing e1dac19 (#31042) is merged; no open
pm:dispatchedclaim on packages/mcpobjectstack-fleet commentedon Nov 7, 2026
domain:server#4 · marchtian · session_017ihL2dLQEXWGsE2SZ3Qn5F
os-dev-report
{ "pr": "https://github.com/objectstack-ai/objectstack/pull/31141 (draft, head e5540c8fdccbf43495ef331b840ee8b8d8adc027, assignee marchtian, no reviewers)", "premise_still_valid": true, "files_changed": [ ".changeset/mcp-per-request-authoring-instructions.md", "packages/mcp/src/types.ts", "packages/mcp/src/mcp-server-runtime.ts", "packages/mcp/src/mcp-server-runtime.authoring-scope.test.ts" ], "line_budget": "153 changed lines (+152 / -1, 4 files) vs the 3000 human-merge threshold: under; all inside the claim's file surface", "gates": { "head": "e5540c8f", "merge_origin_main": "git merge origin/main :: exit 0 (Already up to date; origin/main == 5f003744 == branch point, read by ls-remote)", "local": [ "pnpm --filter '@objectstack/mcp^...' build :: exit 0 (lock VERDICT command-exit 0)", "pnpm --filter @objectstack/mcp exec vitest run --maxWorkers=2 src/mcp-server-runtime.authoring-scope.test.ts :: exit 0 (Tests 24 passed (24))", "pnpm --filter @objectstack/mcp test :: exit 0 (Test Files 60 passed (60), Tests 767 passed (767))", "pnpm --filter @objectstack/mcp typecheck :: exit 0", "eslint packages/mcp --no-inline-config (repo pnpm lint scoped to the touched package) :: exit 0", "pnpm build --concurrency=2 :: exit 0 (to clear the missing-dist exit 3s)" ], "derived": "dispatch-gates --commands: 60 derived; 56 exit 0 first pass; 4 exit 3 then re-run exit 0: check:dual-build-cjs-loads and check:lean-entry-closure (missing dist, after full build), check:type-check-debt (lock queue-timeout, re-run under lock), check-plugin-teardown-shape --self-test (pinned fixture commit absent from the shallow clone, re-run once the object was present)", "ran_reconciliation": "dispatch-gates --ran :: exit 0 - 60 derived famil(ies) accounted for, 60 run, 0 NOT-MEASURED (a DERIVED zero, all 60 carry an exit code)", "ablation": "grant gate in authoringInstructions removed via scripts/ablation-replace.mjs (anchor 1->0, blob f68539a8ec22 -> 83181ec01751): 3 failed / 21 passed (24); restored blob == HEAD, git diff HEAD empty", "ci": "in_progress - PR check-runs not yet concluded at report time" }, "deviations": [ "the mcp package has no lint script, so the repo lint command (eslint --no-inline-config) ran scoped to packages/mcp", "Clause-② copied from the claim as a bare yes, with no (widening) arm; the change is additive", "test:repo not run locally (diff touches no repo-project test); left to CI Test Core" ], "open_questions": [], "out_of_scope_findings": [], "mcp_calls": "0", "api_writes": "2 relay-mediated plus 1 comment: fleet-write dispatch fw-20261107T141258Z-b3692e (POST /repos/objectstack-ai/objectstack/pulls draft -> #31141, POST /repos/objectstack-ai/objectstack/issues/31141/assignees); POST /repos/objectstack-ai/objectstack/issues/31022/comments (this report, via post-stamped.mjs)", "security_findings": "none" }objectstack-fleet commentedon Nov 7, 2026
domain:server#4 · marchtian · session_017ihL2dLQEXWGsE2SZ3Qn5F
Landed · PR #31141 merged by the merge queue as
56baf78e0c422b6555238043cc7d4c1a22db3568(second queue entry, after one inherited-row ejection from the #31120 stack; audit 6708650017).merged_atfrom the pulls APIcompletedbyFixes #31022pm:dispatchedremoved with this record.