joshspicer
90d · built 2026-09-08
Performance
What joshspicer shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+15.5engineers
delivers like 16.5 (16.5x pre-AI)
Output (ETV)
31.6ETV
−1.0% vs 31.9 prior
Features share
46.5%
−0.1 pp vs prior window
Fixes share
12.6%
−2.6 pp vs prior window
Work mix
46.5% Features12.1% Maintenance25.2% Tests3.6% Docs12.6% Fixes
66 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 45 %
- By Features share
- Top 11 %
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.
- 3.0ETVmanaged settings: forceRemoteSettingsRefresh fails closed (#332388) * policy: add managed-settings freshness contract Groundwork for making `forceRemoteSettingsRefresh` a real fail-closed startup gate (microsoft/vscode-internalbacklog#8825). Contract only — no behavior change, and nothing gates on freshness yet. Adds `managedSettingsFreshness.ts`, declaring the state machine shared by the fetch path, the policy gate and Policy Diagnostics so those consumers cannot drift: `NotRequired` / `Pending` / `Satisfied` / `Blocked`, the failure categories every inability-to-refresh maps to, and scoping by account + provider + endpoint so satisfaction is never transferable across accounts or GHE hosts. Replaces `shouldForceRemoteSettingsRefresh` with `resolveForceRemoteSettingsRefresh`, which resolves through `pickManagedSettings` instead of re-implementing precedence. Two fixes fall out: the file channel now participates (the old helper read only native MDM and server, silently ignoring managed-file delivery), and an explicit managed `false` is now distinguishable from an absent value, which a later change needs in order to know when the requirement may be cleared. The old helper had no production caller — it was left orphaned when 661f18fdeb7 reworked the managed-settings fetch — so this is inert. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * policy: enforce freshness invariants in the type Address PR feedback: `IManagedSettingsFreshness` was a bag of optional fields, so a consumer could construct `Blocked` with no failure, `Satisfied` with no scope, or attach `httpStatus`/`retryAfter` to states where they mean nothing — leaving the fetch, gate and diagnostics consumers free to drift despite the type. Models it as a discriminated union instead, so each active state requires the fields its contract defines. `Blocked` is itself a union keyed on the failure category, so a status code is required for an HTTP error, a backoff deadline for rate limiting, and neither is accepted elsewhere. `source` is now the shared `ManagedSettingsChannel` rather than `string`, and is required on the effective states, which also encodes that it is never `'none'` once a channel has supplied the control. Adds `@ts-expect-error` coverage for the three rejected shapes: the directives fail the build if any shape becomes constructible again. `isSameManagedSettingsFreshnessScope` is now a private helper with required arguments — the union guarantees a scope is present, so its undefined-tolerance was unreachable, and nothing outside this module used it. Also trims two over-long comments flagged in review. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: fail closed on forced managed settings refresh Require a fresh managed-settings response before enabling AI features when forceRemoteSettingsRefresh is effective. Preserve recovery through sign-in and retry, expose diagnostics, and cover native, server, file, failure, scope, and sign-out behavior. Related to microsoft/vscode-internalbacklog#8825. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: tighten managed settings recovery UX Re-render the Agents window when freshness failure details change and preserve startup notification deferral. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: address managed settings review feedback Scope cached server controls before precedence, avoid expired rate-limit poll loops, and align update-required recovery guidance across workbench and Agents window UI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test: await explicit managed settings recovery refresh Classic web initialization intentionally skips the default-account fetch. Exercise the explicit refresh path before asserting the no-token fail-closed state so the browser suite observes the same lifecycle it is validating. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test: provide product name in policy overlay fixture Ensure managed-settings messages render Code - OSS instead of an undefined product label in component screenshots. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test: add managed settings failure modes Let the mock policy server return HTTP errors, malformed JSON, immediate disconnects, or no response until client timeout through presets, the GUI, and the control API. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: tighten forced managed settings recovery Improve forced-refresh progress and blocked-state UX, bound automatic retries after failures, preserve the ungoverned cache path, and simplify mock policy failure controls. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: close managed settings dialog on retry Start the explicit managed-settings refresh without making the dialog wait for the network request to complete. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: separate managed settings requirement copy Place the organization requirement and fetch failure remediation in separate paragraphs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: address managed settings review feedback Preserve cached and blocked freshness state, report failed manual syncs, retain pending mock-server edits, and include attempted scope in diagnostics. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: reduce managed settings freshness implementation Trim redundant contract commentary and tests, simplify refresh resolution, deduplicate failure transitions, and keep no-flag tests independent from retry bypass behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 8ae28580 · 2026-08-26
- 2.0ETVpolicy: dev mock server for copilot_internal policy endpoints (#321871) * policy: add dev mock server for copilot_internal policy endpoints Adds scripts/mock-policy-server, a standalone dev tool (npm run mock-policy-server) that mocks the Copilot policy endpoints DefaultAccountService calls: entitlements (/copilot_internal/user), token (/copilot_internal/v2/token), MCP registry (/copilot/mcp_registry) and managed settings (/copilot_internal/managed_settings). A small web GUI lets devs pick presets or edit each JSON response, and Wire/Unwire buttons point product.overrides.json at the local server (preserving the rest of defaultChatAgent, since bootstrap-meta merges overrides shallowly). The managed-settings JSON schema is loaded from --schema/MANAGED_SETTINGS_SCHEMA, defaulting to ./copilot-agent-runtime/schema/managed-settings-schema.json relative to the app cwd; web URLs and file URIs are accepted, and the GUI warns about keys not declared in the schema. The three browser/shared .js files are added to .eslint-allowed-javascript-files since the GUI loads them directly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * policy: address mock-policy-server review feedback - Scope permissive CORS to the mocked GET endpoints only; keep /api/* same-origin so a website can't drive /api/wire and rewrite product.overrides.json (CSRF). - Coerce an empty editor body to {} instead of "" so mocked responses stay JSON objects. - Build the endpoint meta line with textContent/DOM nodes instead of innerHTML. - Drop the misused tablist/tab ARIA roles; the nav now has an aria-label and the active item uses aria-current. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * policy: document mock policy server in add-policy skill Add local-testing.md to the add-policy skill with basic steps for using the mock policy server (scripts/mock-policy-server) to exercise the account/managed-settings flow locally, and link it from SKILL.md and github-managed-settings.md. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * policy: polish mock server GUI — schema validation, wiring backup, localStorage persistence * policy: auto-save, rename wiring to product.overrides.json, copy path button * mock-policy-server: convert server.js to TypeScript; add raw response diagnostics - Convert server.js → server.ts (runs via --experimental-strip-types) - Add endpoints.d.ts type declarations for the UMD endpoints module - Add managedSettingsRawResponse to IDefaultAccountProvider/IDefaultAccountService - Show raw response in Developer: Sync Account Policy output - Remove server.js from eslint allowed-javascript-files * mock-policy-server: convert all JS to TypeScript - endpoints.js → endpoints.ts with proper interfaces (replaces .d.ts) - public/app.js → public/app.ts with full type annotations - Server uses module.stripTypeScriptTypes() to serve .ts as plain JS to the browser — no build step needed - Remove all mock-policy-server entries from .eslint-allowed-javascript-files --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 593c7f23 · 2026-06-18
- 1.9ETVForce the Agent Host harness when the sandbox is managed (#331298) * Force the Agent Host harness when the sandbox is managed Enterprises in the sandbox pilot enforce `chat.agent.sandbox.enabled` (or `chat.agent.sandbox.enabledWindows`) through managed settings. Treat that as the governance signal for the chat harness: hide the legacy local harness from the new-chat pickers and default new chats to the Agent Host Copilot SDK, without the administrator having to also push `chat.editor.localAgent.enabled`, `chat.defaultToCopilotHarness` and `chat.editor.preferCopilotHarness`. A user- or workspace-level sandbox opt-in does not trigger this, and existing local chat sessions keep running on the local harness. The decision is reported in the Policy Diagnostics developer report. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Report the effective harness decision, not just the signal Address PR review feedback: - `chat.editor.localAgent.enabled` and `chat.defaultToCopilotHarness` descriptions claimed the policy always applies, but virtual workspaces are checked first and keep the local harness. Scope both descriptions to non-virtual workspaces. - Policy Diagnostics reported the harness as unconditionally hidden/forced whenever the policy signal was active. Split the section into the governance signal and the effective decision in this window, deriving the latter from the workspace kind and Agent Host enablement, which `getComputedDefaultSessionType` also depends on. Also export the harness setting ids from the platform module so the diagnostics labels stay in sync with the registration, and cover the case where a governed window has no Agent Host and no contributed harness. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Key enforcement on the only policy-backed sandbox setting A review council independently found that the `chat.agent.sandbox.enabledWindows` branch could never fire. `inspect().policyValue` is only populated for settings that declare a policy (`PolicyConfiguration.update`), and unlike `chat.agent.sandbox.enabled` that setting declares none, so its policy value is permanently undefined. The accompanying test fabricated a policy value the real configuration service cannot produce for that key, so it asserted behavior on a state unreachable in production. Key the governance signal on `chat.agent.sandbox.enabled` alone and drop the dead field, its picker listener, and the fabricated test case. Add a test locking in the real contract: the Windows setting must not act as a signal, so a local user opt-in on Windows cannot silently retire the local harness. Sandboxing is per-platform while enforcement is fleet-wide, so Policy Diagnostics now reports the platform-appropriate sandbox setting and whether the sandbox is actually active on this machine, instead of implying an enforced user is sandboxed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Key harness enforcement on the SDK sandbox managed setting The previous revision keyed on `chat.agent.sandbox.enabled` — the VS Code terminal-engine sandbox that the *local* harness uses — which is the wrong signal. The sandbox the pilot enforces is the Copilot SDK sandbox floor, delivered as the runtime-owned `sandbox.enabled` managed setting (`force-on-wins` in the runtime's managed-settings schema) and applied by the Agent Host over AHP. Read that key directly from the managed-settings channels instead of through a VS Code configuration policy: the control is runtime-owned, so mirroring it as a `policy:` declaration would invert ownership. `sandbox.enabled` is registered as a pipeline-consumed control (like `forceRemoteSettingsRefresh`) so native MDM watches it without any setting declaring it, and resolution follows the standard native MDM > server > file precedence. The enablement service exposes the result as a `managedSandboxEnforced` observable, which the harness decision points take as an explicit argument rather than re-reading configuration. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Apply the sandbox floor on every new-chat path and trim the diff A review council unanimously found that the floor never reached the real New Chat entry points. `managedSandboxEnforced` was an optional parameter defaulting to `false`, so every call site that was not updated silently opted out: the picker hid the local harness while the New Chat, panel and editor actions kept creating local sessions the user could no longer re-select, and a remembered local selection kept overriding the mandated default. Thread the flag through `getDefaultNewChatSessionResource` and remembered-type resolution, and supply it from every production call site. Cover both the resource path and the remembered-local override with a regression test. Also drop the file managed-settings channel: it was accepted as an optional constructor argument that no concrete service ever supplied, so its precedence branch was unreachable while diagnostics still reported the channel. Resolution is now native MDM plus server, matching `shouldForceRemoteSettingsRefresh`; wiring the file channel is follow-up work. Trim the rest to what the change needs: collapse the Policy Diagnostics section to a single table, unexport two module-private helpers, and revert the exported setting ids that only existed to label the removed diagnostics rows. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Resolve sandbox floor with managed-settings precedence Use the canonical native MDM, server, and file precedence when deciding whether the managed sandbox floor should retire the local harness. Observe file-managed changes and include that channel in policy diagnostics. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Encapsulate managed settings resolution Expose effective managed values from AccountPolicyService through a source-agnostic platform service. Agent Host now observes one resolved sandbox value instead of depending on native, server, and file channel implementations. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix Agent Host test service mocks Register the effective managed-settings service in web enablement tests and complete the Agent Host enablement mock used by chat component fixtures. Format the earlier test-stub updates so hygiene accepts them. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Restore chat harness setting descriptions Remove the managed-sandbox qualification from the existing harness setting descriptions and leave their behavior documentation unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Keep local harness when Agent Host is unavailable Apply the managed sandbox harness override only while Agent Host is enabled, including picker visibility and remembered session usability. Also reduce policy diagnostics to the effective harness decision. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 262a87b1 · 2026-08-18
- 1.8ETVMock policy server: upstream passthrough, per-endpoint mocking, request log (#330711) * Mock policy server: upstream passthrough, per-endpoint mocking, request log The mock policy server only worked via product.overrides.json, which limits it to Code OSS running from sources, requires a reload after every change, and cannot exercise a stable/Insiders build or the CLI. Support a system HTTP proxy as a second wiring path, keeping product.overrides.json as the default. - Proxy anything not explicitly mocked to the real API (--upstream, default https://api.github.com) and stream it back, so a blanket proxy rule is safe: only endpoints deliberately switched on are faked. Rewrites Host, strips hop-by-hop headers and accept-encoding, forwards Authorization untouched, and reports upstream failures as 502. - Add a per-endpoint mock/passthrough toggle. Only managed settings is mocked by default; applying a preset implicitly switches mocking on. - Add managed-settings disk cache clearing. A cache entry under an hour old makes the runtime skip the network entirely, so an override is never even requested. Paths verified against managed_settings_cache.rs and path_helpers.rs, including the COPILOT_CACHE_HOME override. - Add a rolling request log (GET/DELETE /api/log) surfaced in the GUI, so it is obvious whether the client actually reached the server. - Add realistic managed-settings presets, each validated against the schema, and branch-point presets for the other endpoints. - Only warn about unknown schema keys on 2xx, and re-validate on status change: a 404/466/500 body is an error payload, not a policy document. - Route GUI assets from an explicit allowlist instead of probing public/ for anything that looks like a file, which would otherwise shadow proxied paths. UX: - Make save semantics consistent: everything auto-saves, with a pill showing whether the editor matches what is being served. - Surface mocked vs proxied via tab dots, a checkbox, and reactive help text. - Add a light palette; the dark-only one declared color-scheme: light dark, so UA form controls rendered light on a dark page. - Make the schema disclosure a real button with aria-expanded, add focus-visible styles, and expose tab state to screen readers. - Build the validation table from DOM nodes rather than innerHTML. - Surface save and wire failures instead of failing silently, and fall back to the shared endpoint definitions when the control API is unreachable. - Answer the GUI's own favicon request so it stops appearing in the log as a proxied 404. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Polish mock policy server workflows Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Route runtime policy diagnostics through proxy Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Minimize runtime proxy integration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Move runtime proxy fix to separate PR Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address mock policy server review feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 8fb912f5 · 2026-08-13
- 1.4ETVImprove mock policy server troubleshooting (#333930) * Improve mock policy server troubleshooting Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix mock policy draft reconciliation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · f6258c4f · 2026-09-02
- 1.4ETVagentHost: bridge legacy settings to managed permissions (#330349) * agentHost: bridge legacy settings to managed permissions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: apply managed settings with extension methods disabled Treat the typed managed-settings notification independently from generic extension requests, and cover the local host configuration. Initialize the Copilot managed-settings snapshot in the constructor to satisfy class-field ordering checks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: isolate managed settings bridge plumbing Send managed permissions before fresh-connect restoration and assert that wire order. Inject the dedicated managed-settings service into the protocol handler so the provider-neutral agent service no longer exposes Copilot SDK types. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: keep managed permission types host-owned Use a restrictive host DTO across common and browser layers so Copilot SDK Node globals do not pollute Monaco compilation. Cover the exact local apply and clear notifications, and correct the AHP notification terminology. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: clean managed settings on handler disposal Remove every handler-owned client's managed permission contribution before disposing active connections or disconnect-grace timers, preventing stale restrictions when an endpoint handler is replaced. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: scope managed settings by protocol handler Namespace managed permission contributions per ProtocolServerHandler so handler-local client IDs cannot collide in the shared aggregate. Preserve same-handler reconnect identity and cover cross-handler cleanup. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 4d0ab006 · 2026-08-12
- 1.2ETVAdd discovery of copilot MDM policy (#320991) * Add Copilot managed settings policy source * Refactor Copilot managed settings policy evaluation * Clarify raw managed settings bridge policy * Use dedicated Copilot managed settings service * Avoid Copilot managed settings IPC update loopgithub.com-microsoft-vscode · d72b81a9 · 2026-06-12
- 1.1ETVMock policy server: Add onboarding page (#331720) * Add mock policy server onboarding Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Clarify mock policy setup method selection Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Simplify mock policy runtime terminology Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Group mock policy setup status Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Emphasize mock policy connection status Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Move mock policy setup into modal Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Align mock policy proxy diagnostic Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 7013704a · 2026-08-20
- 1.1ETVLoad managed-settings.json from well-known disk path (#321870) Add a file-based managed-settings delivery channel that reads managed-settings.json from a well-known per-OS disk path in the main process and exposes it to renderer windows over IPC. Mirrors the existing Copilot managed-settings (server / native MDM) channels. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 865f5a0b · 2026-06-24
- 1.0ETVchat: Enforce per-marketplace plugin auto-updates (#327844) * chat: Enforce per-marketplace plugin auto-updates Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: Address plugin auto-update review feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * policy: Regenerate marketplace policy data Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · d5eb7d2e · 2026-07-31