From e5fb71d6728759bebc648c0623dd7beea1d5b4f3 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 6 Oct 2026 09:08:19 +0000 Subject: [PATCH 1/4] chore: record the lockdown audit Co-authored-by: Jared Wray --- DEFENSE_IN_DEPTH.md | 2 +- SECURITY.md | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/DEFENSE_IN_DEPTH.md b/DEFENSE_IN_DEPTH.md index 330beef6..707a7c92 100644 --- a/DEFENSE_IN_DEPTH.md +++ b/DEFENSE_IN_DEPTH.md @@ -52,4 +52,4 @@ Profile: npm library · public ## 7. Repository lockdown - [x] Phishing-resistant 2FA (passkeys / hardware keys) on the GitHub and npm accounts (manual) — PR #1706 - [x] Recovery codes stored offline in a password manager (manual) — PR #1706 -- [x] `lockdown-repo.sh` applied by a repo admin (never committed to this repo); `--check` with `--required-checks` and `--allowed-actions` passes (PRs required on the default branch, merges blocked unless required status checks pass, tag ruleset, immutable releases, fork-PR approval (public repos), read-only workflow tokens, Actions allowlist, secret scanning, Dependabot disabled, private vulnerability reporting (public repos)) — PR #1705, required checks updated PR #1707 +- [x] `lockdown-repo.sh` applied by a repo admin (never committed to this repo); `--check` with `--required-checks` and `--allowed-actions` passes (PRs required on the default branch, merges blocked unless required status checks pass, tag ruleset, immutable releases, fork-PR approval (public repos), read-only workflow tokens, Actions allowlist, secret scanning, Dependabot disabled, private vulnerability reporting (public repos)) — PR #1705, required checks updated PR #1707, admin --check passed 2026-10-06 (PR pending) diff --git a/SECURITY.md b/SECURITY.md index ad350451..48743881 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -29,9 +29,10 @@ hardening checklist; progress is tracked in [DEFENSE_IN_DEPTH.md](./DEFENSE_IN_D - CI workflows default to read-only `contents: read` permissions; generated output is never committed back from CI; every action is pinned to a full commit SHA; Socket Firewall (`sfw`) wraps `pnpm install`; workflows are security-linted with zizmor on every PR. - npm publishing authenticates with OIDC trusted publishing configured **stage-only** on each published package (GitHub Actions → `jaredwray/cacheable` → workflow `release.yml`). There are no npm tokens in Actions secrets, and packages disallow tokens. CI packs tarballs and stages them with `pnpm stage publish`; Drydock reviews staged releases; a maintainer promotes with 2FA. The release job `needs` a passing Aikido `scan-release`. - GitHub and npm maintainer accounts use phishing-resistant 2FA (passkeys / hardware keys). -- pnpm is pinned via `packageManager` (`pnpm@11.5.1`), and the lockfile is committed. -- Dependencies install through pnpm with a 7-day cooldown on new versions, lifecycle scripts blocked by default, and `trustPolicy: no-downgrade`. +- `packageManager` pins pnpm at 12.8.1. The lockfile is committed. +- Dependencies install through pnpm with a 7-day cooldown, blocked lifecycle scripts, and `trustPolicy: no-downgrade`. - There is no `.github/dependabot.yml`. -- Codespaces and Cursor Cloud Agents install through Aikido Safe Chain; package-manager shims must not be bypassed. -- Socket reviews every dependency change; Aikido scans every build. -- `.github/CODEOWNERS` names owners for `/.github/`, `/.cursor/`, `/.devcontainer/`, and `/scripts/`. +- Codespaces, Cursor Cloud Agents, and Claude Code on the web install through Aikido Safe Chain. Do not bypass the package-manager shims. +- The Dev Container image uses a digest pin. The tag is not `latest`. +- Socket reviews every dependency change. Aikido scans every build. +- `.github/CODEOWNERS` names owners for `/.github/`, `/.vscode/`, `/.cursor/`, `/.devcontainer/`, `/.claude/`, `/.codex/`, and `/scripts/`. From 40561bef4580b0a1a721696873e75f029a814748 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 6 Oct 2026 09:08:34 +0000 Subject: [PATCH 2/4] chore: record the lockdown pull request number Co-authored-by: Jared Wray --- DEFENSE_IN_DEPTH.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEFENSE_IN_DEPTH.md b/DEFENSE_IN_DEPTH.md index 707a7c92..5457d0ba 100644 --- a/DEFENSE_IN_DEPTH.md +++ b/DEFENSE_IN_DEPTH.md @@ -52,4 +52,4 @@ Profile: npm library · public ## 7. Repository lockdown - [x] Phishing-resistant 2FA (passkeys / hardware keys) on the GitHub and npm accounts (manual) — PR #1706 - [x] Recovery codes stored offline in a password manager (manual) — PR #1706 -- [x] `lockdown-repo.sh` applied by a repo admin (never committed to this repo); `--check` with `--required-checks` and `--allowed-actions` passes (PRs required on the default branch, merges blocked unless required status checks pass, tag ruleset, immutable releases, fork-PR approval (public repos), read-only workflow tokens, Actions allowlist, secret scanning, Dependabot disabled, private vulnerability reporting (public repos)) — PR #1705, required checks updated PR #1707, admin --check passed 2026-10-06 (PR pending) +- [x] `lockdown-repo.sh` applied by a repo admin (never committed to this repo); `--check` with `--required-checks` and `--allowed-actions` passes (PRs required on the default branch, merges blocked unless required status checks pass, tag ruleset, immutable releases, fork-PR approval (public repos), read-only workflow tokens, Actions allowlist, secret scanning, Dependabot disabled, private vulnerability reporting (public repos)) — PR #1705, required checks updated PR #1707, admin --check passed 2026-10-06 (PR #1737 pending) From 59001723104d092ac80de9d08cb1d3e1fa560d04 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 6 Oct 2026 09:12:26 +0000 Subject: [PATCH 3/4] chore: retrigger CI after a pre-existing cache-manager flake Co-authored-by: Jared Wray From 70688004b38a946aa985f2371add0be44214c3e7 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 6 Oct 2026 09:13:32 +0000 Subject: [PATCH 4/4] chore: qualify lifecycle scripts and the pending status Co-authored-by: Jared Wray --- DEFENSE_IN_DEPTH.md | 2 +- SECURITY.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEFENSE_IN_DEPTH.md b/DEFENSE_IN_DEPTH.md index 5457d0ba..3699ff29 100644 --- a/DEFENSE_IN_DEPTH.md +++ b/DEFENSE_IN_DEPTH.md @@ -52,4 +52,4 @@ Profile: npm library · public ## 7. Repository lockdown - [x] Phishing-resistant 2FA (passkeys / hardware keys) on the GitHub and npm accounts (manual) — PR #1706 - [x] Recovery codes stored offline in a password manager (manual) — PR #1706 -- [x] `lockdown-repo.sh` applied by a repo admin (never committed to this repo); `--check` with `--required-checks` and `--allowed-actions` passes (PRs required on the default branch, merges blocked unless required status checks pass, tag ruleset, immutable releases, fork-PR approval (public repos), read-only workflow tokens, Actions allowlist, secret scanning, Dependabot disabled, private vulnerability reporting (public repos)) — PR #1705, required checks updated PR #1707, admin --check passed 2026-10-06 (PR #1737 pending) +- [x] `lockdown-repo.sh` applied by a repo admin (never committed to this repo); `--check` with `--required-checks` and `--allowed-actions` passes (PRs required on the default branch, merges blocked unless required status checks pass, tag ruleset, immutable releases, fork-PR approval (public repos), read-only workflow tokens, Actions allowlist, secret scanning, Dependabot disabled, private vulnerability reporting (public repos)) — PR #1705, required checks updated PR #1707, admin --check passed 2026-10-06 (PR #1737 is pending) diff --git a/SECURITY.md b/SECURITY.md index 48743881..f4f98b9e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -30,7 +30,7 @@ hardening checklist; progress is tracked in [DEFENSE_IN_DEPTH.md](./DEFENSE_IN_D - npm publishing authenticates with OIDC trusted publishing configured **stage-only** on each published package (GitHub Actions → `jaredwray/cacheable` → workflow `release.yml`). There are no npm tokens in Actions secrets, and packages disallow tokens. CI packs tarballs and stages them with `pnpm stage publish`; Drydock reviews staged releases; a maintainer promotes with 2FA. The release job `needs` a passing Aikido `scan-release`. - GitHub and npm maintainer accounts use phishing-resistant 2FA (passkeys / hardware keys). - `packageManager` pins pnpm at 12.8.1. The lockfile is committed. -- Dependencies install through pnpm with a 7-day cooldown, blocked lifecycle scripts, and `trustPolicy: no-downgrade`. +- pnpm installs dependencies with a 7-day cooldown, blocks lifecycle scripts by default, and sets `trustPolicy` to `no-downgrade`. - There is no `.github/dependabot.yml`. - Codespaces, Cursor Cloud Agents, and Claude Code on the web install through Aikido Safe Chain. Do not bypass the package-manager shims. - The Dev Container image uses a digest pin. The tag is not `latest`.