Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Feature request: opt-in exclusive worktree ownership for session families (v2)

已关闭
#53,220 1 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 1 天内回复

@kitlangton 已经在做这个了。

开始于 2026年10月4日。

评估

这个 Issue 还没有评估数据。

描述

needs:compliance

Feature request: opt-in exclusive worktree ownership for session families (v2)

Problem

The v2 session API accepts a location when creating a root session and allows an existing session to be moved. In an isolated OpenCode v2.0.22 scratch-config probe, two sequential and two concurrent independent root sessions were accepted at the same linked-worktree path. A child inherited its parent location. A separate root moved to that occupied destination and the API returned 204; reading the session confirmed the new location.

This is a bounded API behavior report, not a claim that every OpenCode workflow has this problem or that a universal existing bug is promised. The concern is that independent roots can share a working tree unintentionally, while session ancestry already distinguishes families.

Reproduction (isolated scratch instance only)

Prerequisites: use an isolated OpenCode v2.0.22 scratch configuration/database and an owned loopback listener. BASE and TEST_PASSWORD must come from that isolated listener only; explicitly reject the production listener on port 4097 and any user's working data. WT is an absolute path to a disposable linked worktree. Keep the scratch password only in the local variable, do not put its value in docs or logs, and do not enable shell tracing.

body=$(jq -n --arg directory "$WT" '{id:"ses_probe_root_A_001",location:{directory:$directory}}')
curl -fS --max-time 20 --user "opencode:${TEST_PASSWORD}" -X POST "$BASE/api/session" \
  -H 'content-type: application/json' --data "$body"

body=$(jq -n --arg directory "$WT" '{id:"ses_probe_root_B_001",location:{directory:$directory}}')
curl -fS --max-time 20 --user "opencode:${TEST_PASSWORD}" -X POST "$BASE/api/session" \
  -H 'content-type: application/json' --data "$body"

Both returned HTTP 200 in the isolated probe. Repeating two root creates concurrently also returned HTTP 200 for each. Creating a child with parentID set to root A returned 200 and inherited that location. Creating root C at another disposable directory, then posting {"directory":"/absolute/path/to/linked-worktree"} to /api/session/ses_probe_root_C_001/move, returned 204; a GET of that session showed the target location.

These are placeholders; normalize the path and use fresh probe IDs in any reproduction. The complete isolated run log is not a public artifact and contains host-specific paths.

Request

Please consider an opt-in native admission policy that atomically limits each real linked worktree to one root session family across all writers. Resolve aliases such as symlinks and subdirectories to the same linked-worktree identity. Apply the same admission decision to create, move, import, fork, and queued placement/delivery paths; reject foreign, ambiguous, or incomplete ownership states without mutation. Children should inherit family ownership naturally.

The v2.0.22 source review shows session-ID idempotency, not a location-occupancy guard. The request is for native enforcement using existing durable session state, not a second ownership ledger. Preserve ordinary multi-session behavior unless the opt-in policy is enabled. Pending-move reservations must be atomic/durable; a client-side check followed by a list is racy and bypassable. This is an implementation proposal, not a claim that a particular storage mechanism already exists.

Expected checks

  • Two concurrent independent roots targeting one worktree: exactly one admitted when opt-in is enabled.
  • Same-family children, grandchildren, and resume remain permitted.
  • Alias paths identify the same worktree; foreign move/import/fork and queued placement races fail without mutation.
  • Archived or descendant-only roots remain ownership anchors until explicit clearance; failed ancestry/enumeration fails closed.
  • Default behavior without opt-in preserves normal multi-session workflows.

References

主要语言
TypeScript
星标
221k
派生
29.6k
平均合并
7 小时 41 分钟
30 天内合并 PR
510

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

anomalyco/opencode 的其他 Issue

查看 anomalyco/opencode 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。