Skip to content

feat(server): add project-scoped thread supervision - #16

Merged
lukemaj merged 1 commit into
mainfrom
feat/15-thread-scope
Sep 25, 2026
Merged

lukemaj merged 1 commit into
mainfrom
feat/15-thread-scope

Conversation

@lukemaj

@lukemaj lukemaj commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add list_threads with child and same-project scopes, settled filtering, and thread metadata.
  • Extend read_thread and message_thread with scoped access and sender attribution for peer threads.
  • Preserve the fork bookkeeping and add focused scope tests.

Closes #15

Proof

  • pnpm install --frozen-lockfile
  • pnpm exec vp run -r typecheck
  • pnpm exec vp lint
  • pnpm exec vp fmt --check
  • pnpm exec vp test run apps/server/src/mcp/toolkits/threads
  • scripts/fork-check.sh
  • Isolated live MCP check on 127.0.0.1:3799 with T3CODE_HOME=/tmp/t15/live-home: two independent same-project threads were listed, read, and messaged; the target stored the attributed sender message.

The isolated provider turn reported the expected account/model compatibility error for codex/gpt-5; the thread toolkit operations and message persistence succeeded.

Model and harness: GPT-5.6, Codex in T3 Code.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Sep 25, 2026
@lukemaj
lukemaj force-pushed the feat/15-thread-scope branch from 88ae4cd to df043e0 Compare September 25, 2026 16:35
@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire — 13.5 KiB — 15.1 KiB ✅
Codex Thread snapshot wire — 7.1 KiB — 7.3 KiB ✅
Codex Live turn WebSocket wire — 6.5 KiB — 7.8 KiB ✅
Codex Live turn WebSocket decoded — 56.3 KiB — 66.4 KiB ✅
Codex Live turn messages — 10 — 21 ✅
Claude Total thread wire — 13.5 KiB — 15.1 KiB ✅
Claude Thread snapshot wire — 7.1 KiB — 7.3 KiB ✅
Claude Live turn WebSocket wire — 6.4 KiB — 7.8 KiB ✅
Claude Live turn WebSocket decoded — 57.0 KiB — 66.4 KiB ✅
Claude Live turn messages — 9 — 21 ✅

Baseline: unavailable · PR result: df043e0 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 113.9 KiB
  • Claude decoded thread snapshot: 114.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

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

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Threads toolkit: read and message any thread in the project (scope: children | project)

1 participant