Benjamin Christopher Simmonds
90d · built 2026-09-08
Performance
What Benjamin Christopher Simmonds shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+22.1engineers
delivers like 23.1 (23.1x pre-AI)
Output (ETV)
159.9ETV
+1842.4% vs 8.2 prior
Features share
44.2%
−12.5 pp vs prior window
Fixes share
15.9%
−9.9 pp vs prior window
Work mix
44.2% Features8.1% Maintenance30.3% Tests1.6% Docs15.9% Fixes
327 commits over 90 days, ending 2026-09-08.
Where this dev ranks
Percentile against the global top-100 leaderboard (all-time totals).
- By commits
- Top 22 %
- By Features share
- Top 25 %
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 9.3ETVgithub: add reusable platform API service (#330673) * Phase 1: GitHub API service foundations with transport, coordination, and deterministic testing - Enhance AgentHostAuthenticationService with token generation tracking and lifecycle - Implement GitHubScheduler, GitHubRequestQueue, GitHubRateLimitCoordinator for deterministic coordination - Implement GitHubTransport with no-store REST/GraphQL, exact ETag/body caching by account, request coalescing, priority queueing, retry with deterministic jitter - Implement GitHubCredentialService with stable account resolution via /user probe, generation-scoped caching, automatic invalidation on 401 - Implement GitHubHostCapabilitiesService with schema probing, fail-closed defaults, endpoint-change resets - Convert AgentHostOctoKitService to adapter using new transport stack, preserving behavior compatibility - Wire new services into AgentService with auth-required forwarding for credential/endpoint changes - Create ProgrammableGitHubServer loopback test helper with ordered REST/GraphQL scripting, ETag/304, redirects, delays, rate-limit, errors, disconnects - Create FakeGitHubScheduler for deterministic time control with injection, due-time scheduling, positive deterministic jitter - Add comprehensive unit tests for transport (no-store, caching, coalescing, rate-limit, priorities), credentials (stable account, generation tracking, invalidation), capabilities (probing, error handling), and schedule (advancement) - Fix review findings: dual-resource endpoint-change auth, legacy-token resurrection blocking, transient capability failure caching, GraphQL rate-limit coordination Type-checked; 18 new files, 6 modified production files, all tests deterministic. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: add shared GitHub pull request reads Introduce normalized pull request fragments, capability-aware request planning, canonical shared resources, independent polling, complete conversation and checks pagination, mergeability fallbacks, and generation-safe lifecycle handling. Also include the reviewed Phase 1 transport and coordination corrections that these resources depend on.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: add safe GitHub mutations and diagnostics Add typed idempotent comment and review-thread mutations, workflow diagnostics and rerun reconciliation, bounded redacted log downloads, expected-head branch updates, generation-anchored merge preparation, direct merge reconciliation, and merge-queue enrollment.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: complete typed GitHub service parity Add shared repository and issue resources, comparison and pull request context queries, viewer work searches, issue linkage, behavior-compatible lookup operations, typed pull request creation and auto-merge, GHES capability handling, and the final internal service facade.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: group GitHub implementation files Move GitHub contracts, implementations, and focused tests into dedicated github folders.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: expose a single GitHub service Collapse GitHub credentials, transport, capabilities, queries, pull request resources, and mutations behind one IGitHubService composition root. Keep only the endpoint configuration and legacy OctoKit adapter as separate compatibility services, update moved imports and coverage paths, and remove the implementation plan from the branch.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * github: add reusable platform service Move the new GitHub API implementation into src/vs/platform/github behind caller-supplied endpoint and token providers. Keep all existing Agent Host and Sessions GitHub/auth behavior unchanged; AgentService only constructs and registers the new service for future adoption.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * github: reconcile pull request resource aliases Converge concurrent old and canonical repository subscriptions onto one scheduled entry while preserving issued resource handles. Reject review-thread pages and in-flight results that no longer match the current pull request head. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * github: add service diagnostics Add privacy-safe debug and trace logging for credential, transport, capability, resource, query, and mutation lifecycles. Cover the service path with a regression that verifies tokens and response payloads are not logged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * github: fix service hygiene Resolve the platform GitHub ESLint findings while preserving asynchronous request, scheduler, and loopback test behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * github: retrigger CI after hygiene fix Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · ff1603fb · 2026-08-14
- 5.7ETVEnable chat input pill features by default on insiders (#331724) * Chat input pills: reusable widget, artifacts, customizations and visibility Rework the pill row above the Agents-window chat input: - Left-align the row and make it horizontally scrollable, with a reusable observable-driven ChatPillsWidget in the workbench layer. Sessions owns the adapters from session state so the workbench layer never imports sessions. - Add chat.agentSessions.showSessionMetadataInInput, which moves the session header metadata pills down into the input row, hides the header second row, moves Chats into the title toolbar and shows workspace metadata inline. - Add agent-host artifact tools (add/remove/list_artifacts) with persistence, a gating setting and an artifacts pill. GitHub pull request and issue artifacts are promoted into the session GitHub links rather than shown twice. - Derive the customizations a chat used or read from its output stream and surface them in a customizations pill that reveals the picked entry in the customizations editor. - Add a right-click visibility menu for the row, with Hide <pill> for the clicked pill and kinds grouped by whether they have data. Customizations and Subagents start hidden; Changes can never be hidden. - Consolidate pill rendering onto one base plus four implementations: icon and label, dropdown, resource label, and the animated changes pill. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * also add this to the pr * Fix chat pill rendering crash from space-separated class names `classList.add` rejects tokens containing spaces, so the changes and resource pills threw while rendering. Subclasses now contribute a single modifier class instead of the full class list, which makes the mistake impossible, and the base always applies the shared classes. Port the changes pill's styling onto the shared pill classes and retire the now-dead chatTurnPills.css, whose rules all targeted the pre-refactor DOM. Cover the render path of every pill implementation, which is what CI caught and the existing unit tests missed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review feedback on chat input pills - Restrict artifact `link` to http(s). A link is opened with `openExternal`, so a `file:` or custom-scheme link would reach the OS protocol handler from an agent-labelled pill. - Never let promotion lose an artifact. A GitHub reference is only removed from the artifacts pill when the GitHub pills actually surface it, so a session with no repository, or a reference belonging to another repository, keeps showing it. References from another repository are also no longer polled against the checkout's coordinates. - Let the dropdown pill's trigger close its own dropdown, and expose `aria-haspopup`/`aria-expanded` while it is summarized. - Keep the Windows drive prefix attached when matching customization paths, so `C:\repo\...` resolves. - Derive a plugin's container folder from its type rather than basename punctuation, so a versioned root such as `plugins/foo/1.2.0` no longer claims its sibling roots. - Gate customization data presence on the turn-status setting, without gating it on visibility, which would drop the pill from the menu that restores it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Show session metadata above the chat input by default on insiders `chat.agentSessions.showSessionMetadataInInput` now defaults to on for non-stable builds, matching `chat.artifactTools.enabled`, which already uses the same gate. Stable keeps the session header's metadata row. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 8629d2d1 · 2026-08-19
- 4.7ETVImprove agent feedback workflows and persistence (#331079) * collapse vs expand * Include external changes in feedback scope Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix delayed agent feedback reveal Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Agent host: filter resolved comments by default Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Wait for session model before banner actions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Agent host: add reply to comment tool Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Reveal resolved feedback from chat attachments Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add split action to agent feedback input Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Show feedback attachments in context view Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Hide feedback overlay in Files placeholder Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Persist agent feedback annotations Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix CI: annotations restore race, compile errors, and fixture services Gate annotations subscribe on the annotations channel rather than session state, so a subscribe racing session restore no longer serves the synthetic empty snapshot. Show feedback row actions for keyboard-focused tree rows. Fix the implicit-any 'ref' compile error and align custom-tool permission 'args' test helpers with the tightened SDK type. Register the workbench services the feedback input widget now needs, and add the feedback events and visible-resolved-ids the comments provider reads to fixture mocks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 38220eab · 2026-08-16
- 3.2ETVUnify worktree isolation across agents (#324246) * agentHost: unify worktree isolation across Copilot, Codex, and Claude Extract Copilot's git-worktree session isolation into a shared WorktreeIsolation controller (schema contribution, branch completions, worktree creation on materialize, metadata persistence, archive/unarchive cleanup, first-turn announcement live + restore) and wire it into the Codex and Claude agents so all three providers get the same folder/worktree isolation picker and base-branch picker. - Refactor CopilotAgent to delegate to the shared controller. - Wire isolation into CodexAgent (materialize-time worktree resolution, prewarm skip for worktree sessions, worktree sequencer, archive cleanup). - Wire isolation into ClaudeAgent (worktree before SDK cwd lock, watcher + project re-anchor, session-sequencer archive cleanup). - Move the branch-name generator into node/shared as the provider-neutral IAgentBranchNameGenerator / AGENT_BRANCH_PREFIX. - Add WorktreeIsolation unit tests and Codex isolation config coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Merge branch 'main' into agents/provider-isolation-picker-unification # Conflicts: # src/vs/platform/agentHost/test/node/copilotAgent.test.ts * fix merge * set project * move a layer up * cleanup * Enhance agent communication by adding working directory support in sendMessage methods and related interfaces * move back to be pull based * Revert "move back to be pull based" This reverts commit 5182107ecaf91120d6c5c1dc7ce3100681972467. * move branch generator into isolation picker * enable tests * also test the terminal tool * make working directory non optional * :lipstick: * Fix agent host worktree E2E replay * :lipstick: * Increase TSEC compile heap * Revert "Increase TSEC compile heap" This reverts commit 9f1c4d16c767e3ad993118e2466231a301025b24. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 7c3cb26c · 2026-07-13
- 3.0ETVAgents: support multiple pull requests per session (#333189) * sessions: support multiple pull requests Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: cover multi-PR review loading Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: address multi-PR review feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: register banner fixture services Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: register toolbar fixture providers Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: align input banner split buttons Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>github.com-microsoft-vscode · 2ae61ac0 · 2026-08-29
- 3.0ETVAdd annotations support for agent feedback (#321133) * commit phase 1 * phase 2 * phase 3 * phase 4 * phase 5 * :lipstick: * fixes * fix cycle * auto approve tool * attachment fixesgithub.com-microsoft-vscode · b36d3a4c · 2026-06-12
- 2.8ETVsessions: pull request operations in the changes title bar (#332987) * sessions: pull request operations in the changes title bar The changes button bar only offered "Create PR" variants, and they disappeared once a pull request existed. It now keeps offering the next step for that pull request, and gives Agent Merge a home next to it. Agent host: - New `AgentHostPullRequestStatusService` watches the `core` and `mergeability` fragments of the session's pull request. It subscribes only while a client is subscribed to the session's changeset, so the GitHub API cost is bounded to the session the user is looking at. - `AgentHostPullRequestOperationContribution` now advertises `pr-mark-ready`, `pr-merge` and `pr-enable-auto-merge` / `pr-disable-auto-merge` instead of bailing out once a pull request exists. Auto-merge is driven off GitHub's own capability flags rather than re-deriving its rules. Nothing is advertised while the state is unresolved, so the bar stays hidden rather than flashing the wrong action, or once the pull request is merged or closed. - `AgentHostPullRequestLifecycleOperationHandler` executes them. Merging goes through `prepareMerge`, so a pull request that stopped being mergeable between render and click is rejected rather than force-merged, and enqueues when the repository requires a merge queue. - Adds the `markReadyForReview` and `disableAutoMerge` GitHub mutations. Agents window: - New `AgentsChangesOperationsDropdown` menu whose entries are merged into the primary button's dropdown. A submenu contributed to its `primary` group names a group of related actions rather than being one, so clicking the button opens just those as a context menu. - Agent Merge contributes its session toggle, repair-action toggles, merge-choice submenu and "Agent Merge Defaults" there, gated on the existing precondition plus the session having an open pull request. `chat.agentMerge.mergePullRequest` becomes a three-way enum. `ifUnchanged` merges only while Agent Merge has not changed the pull request: when a repair turn lands a commit the session's value rewrites itself to `never` and says so in the transcript, so the chosen value always reflects what will happen. Re-selecting it starts a fresh baseline. Existing boolean values migrate. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentMerge: base the unchanged check on the local commit The `ifUnchanged` merge option compared the pull request's published head before and after a repair turn. GitHub reports a push only after a replication delay, and a turn ends by evaluating immediately, so the comparison routinely read a stale head: the session was not demoted, the gate still saw `ifUnchanged`, and it could merge changes the option exists to hold back. It also failed open, treating "cannot tell" as "unchanged". Compare the session worktree's commit instead, captured when the repair turn starts and re-read when it ends. The commit exists locally the moment the agent makes it, so there is no window to race, and it answers the actual question -- did Agent Merge change anything -- without also firing when somebody else pushes to the pull request. The decision now happens once in `_completeTurn` rather than on every evaluation, with the sync path keeping it only as a backstop for a host restart that lost the in-flight turn. An unreadable worktree records a sentinel baseline that no commit can match, so it fails closed: a missed automatic merge is cheaper than merging agent-written changes unreviewed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix CI: lint warnings and a missing test service registration - `AgentHostContributions` builds a strict instantiation service with only the services its contributions needed. `AgentHostPullRequestOperationContribution` gained two dependencies, so register the status service and a log service. - Replace the `in` operator with an explicit discriminated union on the pull request watch target (`local/code-no-in-operator`). - Read services off the accessor before awaiting rather than after (`local/code-no-accessor-after-await`). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review feedback on the pull request operations title bar - Rebuild pull request watches when the GitHub credential is invalidated for an account or endpoint change. `PullRequestResourceService` disposes the resource for those reasons, so the watch was left holding a subscription whose snapshot could never update, advertising stale operations until an unrelated event happened to resync it. - Gate the Agent Merge entries on a distinct open-pull-request signal rather than on an operation being advertised. An open but blocked pull request in a repository without auto-merge offers no operation, which is exactly when the repair actions are useful, yet the entries were hidden. - Clear the repair baseline when "merge only while unchanged" is selected afresh. The client writes only its own Agent Merge state, so a baseline left by an earlier repair turn would immediately demote the choice back to never and the option could never be turned back on. - Move the Agents Window menu IDs to `sessions/browser/menus.ts` so the shared platform layer no longer owns Sessions concepts. - Cover the watcher's subscription lifecycle, mid-flight invalidation and credential handling, and the merge handler's preparation gate, merge-queue selection, configured-method rejection and stale preparation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Show a spinner on the changes title bar button while work is in flight The title bar buttons deliberately show no icon, so a running operation had no visual feedback: the loading-icon prefix the operation actions carried was stripped along with every other icon by the button config provider. `WorkbenchButtonBar` gains an opt-in `showSpinner` button config, rendering the pixel spinner already used for in-progress sessions in the sessions list, session header and automations view. It leads the label, inherits the button foreground through `currentColor`, and the primitive pauses itself offscreen and honours reduced motion. For a dropdown button it attaches to the primary half rather than the chevron. The changes button bar turns it on while an advertised operation is running -- create PR, commit, and the rest -- and while Agent Merge owns the primary button and is enabled, since it watches the pull request continuously rather than completing. `sessionAgentMergeEnabled` moved to the shared sessions context keys so the widget can read it without importing Agent Merge. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Tie the contributed-primary spinner to Agent Merge specifically The primary group is open to any contributor, so keying the spinner on Agent Merge enablement alone would have mislabelled a future contributor's button as busy. Match the contributed submenu instead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · ca8c6023 · 2026-08-28
- 2.5ETVagentHost: Add agent merge controller (#331010) * agentHost: Add agent merge controller Add provider-neutral pull request lifecycle automation backed by the shared GitHub service, with scoped repair tools, native merge execution, persisted session controls, and Agents Window commands. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refactor agent merge feature implementation and update tests - Improve agent merge logic in various files. - Update tests to reflect changes in agent merge functionality. - Enhance documentation for AGENT_HOST_SESSIONS_PROVIDER. * agentHost: Let providers own autonomous agent merge config Provider agents now select and restore their native unattended configuration, repair prompts carry bounded authorized review-thread detail, and branch and session-wide turn checks are revalidated before claiming a turn or merging. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: Advertise agent merge tools only when enabled Gate the Agent Merge server tool group on the host feature setting so sessions without Agent Merge keep their existing tool catalog and provider prompts, and re-advertise host tools when the setting is toggled. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 30ad9a50 · 2026-08-16
- 2.2ETVSurface sessions requiring input in the agents titlebar (#324203) * sessions requiring input * Dismiss blocked-sessions dropdown + context-specific requires-input messages - Close the dropdown on Escape or an outside click (contextView onDOMEvent) - Show a specific titlebar message when all blocked sessions share one reason (terminal approval, failing CI, question, unresolved comments); fall back to the generic 'N sessions require input' for a mix - Animate the first requires-input appearance (preserve the blink class across redundant re-renders)github.com-microsoft-vscode · d769f0de · 2026-07-03
- 2.1ETVsessions: add worktree merge changeset operation (#330242) * sessions: add worktree merge operation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: optimize base branch change probe Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 7ea31df9 · 2026-08-11