Marc Codina
90d · built 2026-09-30
Performance
What Marc Codina shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+29.5engineers
delivers like 30.5 (30.5x pre-AI)
Output (ETV)
7.0ETV
−15.8% vs 8.3 prior
Features share
49.5%
+2.2 pp vs prior window
Fixes share
4.9%
−5.7 pp vs prior window
Work mix
49.5% Features1.3% Maintenance37.4% Tests7% Docs4.9% Fixes
16 commits over 90 days, ending 2026-09-30.
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.
- 2.9ETVfeat(sandbox-mock): add @vercel/sandbox-mock package (#245) Testing code that uses `@vercel/sandbox` means provisioning real sandboxes — slow, network-bound, and requiring credentials. In order to do that, customers must mock the whole Sandbox object, and they cannot run the integration tests until they go live (or they use real sandboxes). This new package, `@vercel/sandbox-mock`, provides a mock that aims to run a local sandbox with some constraints. We are mocking the API layer, and instead of relying into the Vercel services, we mock it by using `just-bash`. We have also configured changeset to maintain version parity between `@vercel/sandbox` and `@vercel/sandbox-mock`, to ensure that users and agents install the mock with the correct signatures. Testing --- - Each file that I have added contains unit tests (unless it is just types or interfaces). - There is a `packages/vercel-sandbox-mock/tests/compat.test.ts` test file which attempts to run the mock and real sandboxes, to ensure there is compatibility. - I ran the integration tests locally to ensure the compatibility tests work. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>github.com-vercel-sandbox · 96aa20fa · 2026-07-20
- 1.2ETVfeat(sandbox,vercel-sandbox): multi-region support (#301) Enable multi-region for sandboxes and snapshots. When we show the region, if it is not defined, we default to `iad1`, which is where we place sandboxes/snapshots by default. Example of creating a sandbox (now we also show the region): ``` ❯ sandbox create ✅ Sandbox silver-colossal-wren-WU4M8Y created. │ team: marc-codina-enhanced-vtest314 │ region: iad1 │ project: my-sandbox-app-tmp ╰ connect with: sandbox ssh silver-colossal-wren-WU4M8Y ``` Example of creating a sandbox with failover regions: ``` sandbox create --region cle1 --failover-regions sfo1,iad1 ✅ Sandbox scarlet-vitreous-woodpecker-kkjYfK created. │ team: marc-codina-enhanced-vtest314 │ region: cle1 │ project: my-sandbox-app-tmp ╰ connect with: sandbox ssh scarlet-vitreous-woodpecker-kkjYfK ``` Example of updating an existing sandbox region and failover regions: ``` ❯ sandbox config list crimson-chronic-mackerel-pbh3WM FIELD VALUE Region cle1 Failover regions sfo1, iad1 ... ❯ sandbox config failover-regions crimson-chronic-mackerel-pbh3WM sfo1 ✅ Configuration updated for sandbox crimson-chronic-mackerel-pbh3WM ╰ failover-regions: sfo1 ❯ sandbox config region crimson-chronic-mackerel-pbh3WM iad1 ✅ Configuration updated for sandbox crimson-chronic-mackerel-pbh3WM ╰ region: iad1 ❯ sandbox config list crimson-chronic-mackerel-pbh3WM FIELD VALUE Region iad1 Failover regions sfo1 ... ``` Notes: - We are not validating the regions, so that if in the future we add more, old sandbox versions keep working. --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Tom Lienard <tom.lienrd@gmail.com>github.com-vercel-sandbox · 2997ecc3 · 2026-08-20
- 0.8ETV[cli] Add vercel vcr build and vercel vcr push (#17226) We are improving the `vercel vcr` command line so that we include: - `vercel vcr build <engine>` - `vercel vcr push <engine>` Formats: ``` vercel vcr build <engine> [path] [name[:tag]] [--push] [--platform] [-- engine commands] vercel vcr push <engine> [name[:tag]] ``` --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>github.com-vercel-vercel · 6322f454 · 2026-07-28
- 0.5ETV[sandbox-sdk] adopt the new snapshot defaults (#300) The API changed its snapshot defaults (endpoints with major versions), but the SDK, CLI and Skill still targeted the previous versions. These are the new defaults: - Snapshots expire after **7 days** instead of 30. - Persistent sandboxes get a `{ count: 1, deleteEvicted: true }` retention policy by default. - `keepLastSnapshots: null` (CLI: `--keep-last-snapshots 0`) disables the limit and keeps every snapshot until it expires. --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: Tom Lienard <tom.lienrd@gmail.com>github.com-vercel-sandbox · adf41df4 · 2026-08-14
- 0.3ETVfeat(cli): support vcr login <engine> command (#16900) Support the new `vercel vcr login <engine>` command. Examples of valid operations: ``` ❯ vercel vcr login docker Vercel CLI 54.18.7 (Node.js 20.18.0) > Success! Logged in to vcr.vercel.com as oidc (docker). ❯ vercel vcr login podman Vercel CLI 54.18.7 (Node.js 20.18.0) > Success! Logged in to vcr.vercel.com as oidc (podman). ``` Examples of invalid operations: ``` ❯ vercel vcr login Vercel CLI 54.18.7 (Node.js 20.18.0) Error: Missing engine. Choose one of: docker, podman, buildah. ❯ vercel vcr login podman Vercel CLI 54.18.7 (Node.js 20.18.0) Error: `podman` is not installed or not on your PATH. Install it and try again. ❯ vercel vcr login invalid Vercel CLI 54.18.7 (Node.js 20.18.0) Error: Invalid value for engine: "invalid". Must be one of: docker, podman, buildah. ``` --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>github.com-vercel-vercel · 176d9391 · 2026-07-08
- 0.3ETVfeat(sandbox,vercel-sandbox): support the image parameter from a sandbox (#253) Support, in the SDK/CLI, the `image` parameter. We already supported it when creating sandboxes with image, but now we also support showing it. In the CLI, we show it under `runtime/image` as they are both mutually exclusive. And in the future, `image` will be replacing runtime. In the SDK, we just added a new `image` property to sandbox. Notes: there are also some other changes made by the linter. --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>github.com-vercel-sandbox · a2237010 · 2026-07-16
- 0.2ETVfeat(vercel-sandbox): support the fork API (#258) Instead of implementing the Fork on the client-side, use the new API endpoint that implements the sandbox fork. --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>github.com-vercel-sandbox · 63a7ec16 · 2026-07-24
- 0.2ETVfeat(sandbox,vercel-sandbox): support orhpan snapshot deletion (#316) Support `deleteOrphanSnapshots` parameter. SDK: ``` await sandbox.delete({ deleteOrphanSnapshots: true }); ``` CLI: ``` sandbox remove <name> --delete-orphan-snapshots ```github.com-vercel-sandbox · 6a9d34f0 · 2026-08-27
- 0.2ETVfeat(sandbox,vercel-sandbox): improve timeout update and get (#239) Get timeout --- Improve how we fetch and show the timeout of a running sandbox at the CLI level. - Before: we showed the static timeout. It did not take into account whether the timeout was extended or not. - After: we take into account timeout extension and show it properly. Example: ``` ❯ sandbox list NAME STATUS CREATED MEMORY VCPUS RUNTIME TIMEOUT SNAPSHOT TAGS black-dull-basilisk-DwTaCA running 8 seconds ago 4,096 MB 2 node24 in 5 minutes - - ❯ sandbox config timeout black-dull-basilisk-DwTaCA 10m ✅ Configuration updated for sandbox black-dull-basilisk-DwTaCA ╰ timeout: 10m ❯ sandbox list NAME STATUS CREATED MEMORY VCPUS RUNTIME TIMEOUT SNAPSHOT TAGS black-dull-basilisk-DwTaCA running 40 seconds ago 4,096 MB 2 node24 in 9 minutes - - ``` Update timeout --- Now, when updating the timeout at the CLI or SDK via the configuration, we will also extend the current session timeout to match the expected value. Note that to avoid breaking existing sessions, we only update the timeout for the current session IF the increase is positive. --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>github.com-vercel-sandbox · 144b3d9a · 2026-07-03
- 0.2ETVfix(sdk): resume stuck stopping sessions (#344) When a sandbox is in a wrong state, we wait indefinitely to start. We should delegate this waiting to the API, which already does and better, as it can recover from the wrong state. Changes: - Delegate stopped, stopping, and snapshotting recovery to the API. - Avoid waiting indefinitely for session status transitions that may never arrive.github.com-vercel-sandbox · fdd69124 · 2026-09-23