Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,21 @@ Web Infra Team members should have access to maintain the services mentioned abo

Members of this team are nominated either by the Node.js Technical Steering Committee (TSC) or the Node.js Build WG and follow the guidelines provided in the Collaborator Guidelines of the Node.js Build WG. Current members of the Node.js Web Infra Team may also nominate individuals.

#### Trial Period for New Members

Upon acceptance, new members of the Web Infra Team enter a **trial period of 3 months** with limited access to infrastructure services. The purpose of this trial period is to ensure new members can demonstrate competence and trustworthiness in managing critical infrastructure before being granted elevated privileges.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Upon acceptance, new members of the Web Infra Team enter a **trial period of 3 months** with limited access to infrastructure services. The purpose of this trial period is to ensure new members can demonstrate competence and trustworthiness in managing critical infrastructure before being granted elevated privileges.
Upon acceptance, new members of the Web Infra Team enter a **trial period of 3 months (90 days)** with limited access to infrastructure services. The purpose of this trial period is to ensure new members can demonstrate competence and trustworthiness in managing critical infrastructure before being granted elevated privileges.


During the trial period, new members receive the following reduced permissions:

- **Cloudflare**: Read-only access (day-to-day operations generally do not require manual changes)
- **Vercel**: Viewer-level access (sufficient to review deployments, check logs, and monitor project status)
- **Sentry, Crowdin, Atlassian Statuspage**: Read-only or limited access
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Sentry, Crowdin, Atlassian Statuspage**: Read-only or limited access
- **Sentry, Crowdin**: Read-only or limited access

- **1Password**: Access is not granted during the trial period; credentials may be shared on a case-by-case basis by an existing member for specific tasks
Copy link

Copilot AI Feb 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The trial-period guidance suggests sharing 1Password-stored credentials “on a case-by-case basis”. Credential sharing reduces accountability/auditability and can violate provider ToS. Consider rephrasing to recommend that an existing member performs the needed action, or that temporary/least-privilege individual access is granted for a specific task instead of sharing credentials.

Suggested change
- **1Password**: Access is not granted during the trial period; credentials may be shared on a case-by-case basis by an existing member for specific tasks
- **1Password**: Direct access is not granted during the trial period. For tasks requiring secrets or credentials, an existing member should either perform the required action or, where appropriate, grant temporary, least-privilege individual access (for example, via a shared vault or per-service role) instead of sharing their own credentials.

Copilot uses AI. Check for mistakes.

New members should use the trial period to familiarize themselves with the team's infrastructure, processes, and incident response procedures. Existing team members are expected to actively mentor and support new members throughout this period.

At the end of the trial period, existing Web Infra Team members will assess the new member's readiness for full access, based on demonstrated competence and trust. Full access may be granted earlier by consensus of existing team members if the member demonstrates exceptional competence and trustworthiness. Conversely, the trial period may be extended if the team determines that additional time is needed.

\* This team has access to infrastructure providers directly related to the Website only, such as Vercel. Other providers that are shared beyond the Website may be controlled by other teams (for example, the Node.js Build WG owns Cloudflare).

When considering new members, approvers are primarily concerned with **competence** and **trust**. The [language within the Build WG pertaining to competence and trust](https://github.com/nodejs/build/blob/main/GOVERNANCE.md#wg-membership) applies here. The following is repeated, for emphasis:
Expand Down
17 changes: 17 additions & 0 deletions PERMISSIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,23 @@
| **[Sentry][]** | - | - | - | Admin | Admin | |
| **[Vercel][]** | - | - | - | Developer | Owner | Along with individual access, credentials for a user with elevated exist in 1Password. |

### Trial Period Permissions for New Web Infra Members

As outlined in [GOVERNANCE.md](GOVERNANCE.md), new members of the @nodejs/web-infra team undergo a **3-month trial period** with reduced permissions before receiving full access. The table below shows the access levels granted during the trial period compared to the full access levels shown above.

| Service | Trial Period Access | Full Access (post-trial) | Notes |
| ---------------------------- | ------------------- | ------------------------ | -------------------------------------------------------------------------------------------------- |
| **[1Password][]** | - | Admin | Not granted during trial; credentials shared on a case-by-case basis by an existing member. |
| **[Atlassian Statuspage][]** | Read | App Admin | Public status page is accessible to everyone; management access is granted after trial. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| **[Atlassian Statuspage][]** | Read | App Admin | Public status page is accessible to everyone; management access is granted after trial. |
| **[Atlassian Statuspage][]** | - | App Admin | Public status page is accessible to everyone; management access is granted after trial. |

| **[Chromatic][]** | Read | Admin | Read access available via GitHub authentication. |
| **[Cloudflare][]** | Read | Read | Read-only access is sufficient for day-to-day; elevated access may be granted on a case-by-case basis post-trial. |
Copy link

Copilot AI Feb 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Terminology is inconsistent across docs: GOVERNANCE.md/onboarding use “Read-only”, while this table uses “Read”. Aligning on a single term (ideally the exact role name used by each provider) would reduce confusion when granting access.

Suggested change
| **[Cloudflare][]** | Read | Read | Read-only access is sufficient for day-to-day; elevated access may be granted on a case-by-case basis post-trial. |
| **[Cloudflare][]** | Read-only | Read-only | Read-only access is sufficient for day-to-day; elevated access may be granted on a case-by-case basis post-trial. |

Copilot uses AI. Check for mistakes.
| **[Crowdin][]** | Read | Admin | Read access to review translations; admin access after trial. |
| **[Sentry][]** | Read | Admin | Read access to view error reports and logs; admin access after trial. |
| **[Vercel][]** | Viewer | Developer | Viewer access allows reviewing deployments and checking logs; Developer access after trial. |

> [!NOTE]
> GitHub repository permissions are **not** affected by the trial period. New members receive the same repository-level access as all @nodejs/web-infra members from day one.
Comment on lines +41 to +47
Copy link

Copilot AI Feb 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The trial-period table includes Cloudflare “Read” access, but the onboarding checklist doesn’t currently mention how/when Cloudflare access is granted (and the main External Services table notes it’s controlled by @nodejs/build). Consider clarifying in this section whether Cloudflare access is expected during the trial, and if so, how it’s coordinated with the owning team.

Suggested change
| **[Cloudflare][]** | Read | Read | Read-only access is sufficient for day-to-day; elevated access may be granted on a case-by-case basis post-trial. |
| **[Crowdin][]** | Read | Admin | Read access to review translations; admin access after trial. |
| **[Sentry][]** | Read | Admin | Read access to view error reports and logs; admin access after trial. |
| **[Vercel][]** | Viewer | Developer | Viewer access allows reviewing deployments and checking logs; Developer access after trial. |
> [!NOTE]
> GitHub repository permissions are **not** affected by the trial period. New members receive the same repository-level access as all @nodejs/web-infra members from day one.
| **[Cloudflare][]** | Read | Read | Read-only access is sufficient for day-to-day; during the trial, access requests are coordinated by @nodejs/web-infra with @nodejs/build, who own the Cloudflare account. Elevated access may be granted on a case-by-case basis post-trial. |
| **[Crowdin][]** | Read | Admin | Read access to review translations; admin access after trial. |
| **[Sentry][]** | Read | Admin | Read access to view error reports and logs; admin access after trial. |
| **[Vercel][]** | Viewer | Developer | Viewer access allows reviewing deployments and checking logs; Developer access after trial. |
> [!NOTE]
> GitHub repository permissions are **not** affected by the trial period. New members receive the same repository-level access as all @nodejs/web-infra members from day one.
> Access to external services owned by other teams (for example **[Cloudflare][]**, which is owned by @nodejs/build) is requested on your behalf by an existing @nodejs/web-infra member as part of onboarding.

Copilot uses AI. Check for mistakes.

## Access Tokens & Automations

| Secret Name | Display Name | Platform(s) / Location(s) | Associated Project(s) | Access Level | Expiry | Notes |
Expand Down
36 changes: 27 additions & 9 deletions onboarding/web-infra.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,22 @@ This document is an outline of the tasks necessary to onboard a new member of th
Please note these tasks should only be performed after an individual's nomination has passed.
To start the nomination process, see [GOVERNANCE.md](../GOVERNANCE.md).

## Tasks
## Phase 1: Trial Period Access

New members begin with a **3-month trial period** and receive limited access to infrastructure services. See [GOVERNANCE.md](../GOVERNANCE.md) for details on the trial period policy.

### Tasks

- [ ] Add the **Nominee** to the @nodejs/web-infra team on GitHub.
- [ ] The **Nominee** should open an issue in [nodejs/admin](https://github.com/nodejs/admin) requesting access to the Web Infra 1Password vault.
- [ ] Grant the **Nominee** access to Sentry.
- [ ] The **Nominee** should enable physical or passkey 2FA on their Sentry account.
- [ ] Grant the **Nominee** access to Vercel.
- [ ] The nominee should enable physical or passkey 2FA on their Vercel account.
- [ ] Grant the **Nominee** _Viewer_ access to Vercel.
- [ ] The Nominee should enable physical or passkey 2FA on their Vercel account.
- [ ] Grant the **Nominee** _Read-only_ access to Sentry.
- [ ] The Nominee should enable physical or passkey 2FA on their Sentry account.
Comment on lines 14 to +18
Copy link

Copilot AI Feb 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The onboarding checklist describes trial-period access grants, but it doesn’t include any step for the Cloudflare read-only access mentioned in the PR description and in GOVERNANCE.md. Either add an explicit onboarding task (e.g., request/add the nominee in Cloudflare via the owning team) or clearly state in this phase that Cloudflare access is handled separately/optional due to @nodejs/build ownership.

Copilot uses AI. Check for mistakes.
Comment on lines +16 to +18
Copy link

Copilot AI Feb 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent formatting/capitalization for “Nominee”: elsewhere in the onboarding docs the term is consistently bolded as Nominee, but these sub-tasks use plain “Nominee”. Aligning this keeps the checklist consistent and easier to scan.

Copilot uses AI. Check for mistakes.
- [ ] Grant the **Nominee** _Read-only_ access to Crowdin.
- [ ] Grant the **Nominee** _Read-only_ access to the Node.js Status Page.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [ ] Grant the **Nominee** _Read-only_ access to the Node.js Status Page.

- [ ] The **Nominee** should add their email to the following aliases (by opening a PR in [nodejs/email](https://github.com/nodejs/email)):
- [ ] [`nodejs-crowdin`](https://github.com/nodejs/email/blob/main/iojs.org/aliases.json#L174)
- [ ] [`nodejs-vercel`](https://github.com/nodejs/email/blob/main/iojs.org/aliases.json#L241)
- [ ] Grant the **Nominee** access to Crowdin.
- [ ] Grant the **Nominee** access to Search Console.
- [ ] Grant the **Nominee** access to the Node.js Status Page.
- [ ] An OpenJS Slack Admin should add their Slack account to the `nodejs-website-team` team.
- [ ] Add the **Nominee** to the following OpenJS Slack channels:
- [ ] `#nodejs-website`
Expand All @@ -33,6 +35,22 @@ To start the nomination process, see [GOVERNANCE.md](../GOVERNANCE.md).
- [ ] The **Nominee** should have any SSH or GPG key attached to their GitHub account have passphrases and/or be stored on a physical 2FA device.
- [ ] The **Nominee** should sign their Git commits.

## Phase 2: Full Access (Post-Trial)

After the trial period concludes (typically 3 months), existing Web Infra Team members will assess the new member's performance and trustworthiness. If the team agrees the member is ready, the following tasks should be completed to grant full access.

> [!NOTE]
> Full access may be granted earlier by consensus of existing team members. The trial period may also be extended if the team determines additional time is needed.

### Tasks

- [ ] The **Nominee** should open an issue in [nodejs/admin](https://github.com/nodejs/admin) requesting access to the Web Infra 1Password vault.
- [ ] Elevate the **Nominee** to _Developer_ access on Vercel.
- [ ] Elevate the **Nominee** to _Admin_ access on Sentry.
- [ ] Elevate the **Nominee** to _Admin_ access on Crowdin.
- [ ] Elevate the **Nominee** to _App Admin_ access on the Node.js Status Page.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [ ] Elevate the **Nominee** to _App Admin_ access on the Node.js Status Page.
- [ ] Grant the **Nominee** _App Admin_ access to the Node.js Status Page.

- [ ] Grant the **Nominee** access to Search Console.

## Notes

There currently is not a set level of access that @nodejs/web-infra members have on Cloudflare.
Expand Down
Loading