Skip to content

Triage SPOFs and re-verify RA-4 boot guard - #730

Merged
davedumto merged 1 commit into
Vellar-Wallet:devfrom
themancalledemma:feat/issues-474-475-ops-security-v2
Oct 24, 2026
Merged

davedumto merged 1 commit into
Vellar-Wallet:devfrom
themancalledemma:feat/issues-474-475-ops-security-v2

Conversation

@themancalledemma

Copy link
Copy Markdown
Contributor

Summary

closes #474
closes #475

Changes

  • Single points of failure: no multisig anywhere, all keys held by one person #474: triages each single point of failure named in open-work-catalogue.md (sponsor secret key, npm publish rights, Render account/DNS, M5 multisig attestor) as accept/mitigate/eliminate, with a concrete sponsor-key rotation procedure and a Render/DNS account recovery path. M5 itself stays tracked only in security-audit.md to avoid two sources of truth for the same item.
  • Free-tier Postgres expires 30 days after creation #475: re-ran the RA-4 fail-closed persistence boot guard tests (pnpm test persistence in packages/service-kit, 9/9 passing) and confirmed wallet-service, policy-service, and verification-service all wire it correctly at boot, and that the actually-deployed services/all-in-one process imports each of them as self-starting modules, so the guard runs during the real combined boot sequence. Documents the remaining infra steps (establish the DB's actual creation date, provision Neon, migrate with the keyId→contractId mapping verified, confirm a backup) that require Render/Neon dashboard access I don't have from here, plus a follow-up gap I found but didn't rush: no test in the repo spawns the actual all-in-one boot sequence as a subprocess to confirm the exit-on-fail path fires end to end.

Both issues are mostly operational decisions and infra actions (key rotation, account access, database migration) rather than pure code changes, so this PR is the triage/documentation/verification half that's achievable from a repo checkout. The remaining dashboard-access-gated steps are called out explicitly in contrib/issues-474-475-ops-security/decisions.md rather than silently left undone.

Test plan

  • pnpm test persistence in packages/service-kit: 9/9 passing, confirms the RA-4 fail-closed boot guard still holds.
  • No other code was touched; this PR is contrib/-only per CONTRIBUTING.md.

…ellar-Wallet#475)

Issue Vellar-Wallet#474: triages each single point of failure named in
open-work-catalogue.md (sponsor secret key, npm publish rights, Render
account/DNS, M5 multisig attestor) as accept/mitigate/eliminate, with a
concrete sponsor-key rotation procedure and a Render/DNS recovery path.
M5 itself stays tracked only in security-audit.md to avoid two sources
of truth.

Issue Vellar-Wallet#475: re-ran the RA-4 fail-closed persistence boot guard tests
(pnpm test persistence in packages/service-kit, 9/9 passing) and
confirmed wallet-service, policy-service, and verification-service all
wire it correctly at boot, and that the actually-deployed
services/all-in-one process imports each of them as self-starting
modules, so the guard runs during the real combined boot sequence.
Documents the remaining infra steps (establish the DB's actual
creation date, provision Neon, migrate with the keyId to contractId
mapping verified, confirm a backup) that require Render/Neon dashboard
access this change doesn't have, plus a follow-up gap: no test in the
repo spawns the actual all-in-one boot sequence as a subprocess to
confirm the exit-on-fail path fires end to end.
@vercel

vercel Bot commented Oct 24, 2026

Copy link
Copy Markdown

@themancalledemma is attempting to deploy a commit to the david's projects Team on Vercel.

A member of the Team first needs to authorize it.

@davedumto
davedumto merged commit d9a8511 into Vellar-Wallet:dev Oct 24, 2026
1 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Free-tier Postgres expires 30 days after creation Single points of failure: no multisig anywhere, all keys held by one person

2 participants