Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
4394a91
docs(repo): keep client names and data out of the public repo
ebma Oct 8, 2026
cd46a29
docs(repo): have reviewers flag client data in public changes
ebma Oct 8, 2026
d7b14b4
docs(repo): keep partner-facing and commercial docs in the private repo
ebma Oct 8, 2026
687e0ca
docs(frontend): generalize the design-context user segments
ebma Oct 8, 2026
da0bc3c
test(repo): use standard example tax IDs and bank accounts in fixtures
ebma Oct 8, 2026
642e681
fix(gold): use a reserved example domain for the demo email
ebma Oct 8, 2026
aa71fca
docs(repo): describe B2B onramp parameters as Vortex defaults
ebma Oct 8, 2026
03047b6
docs(api): align B2B code comments with the default fee policy
ebma Oct 8, 2026
54283f7
docs(repo): narrow the B2B rollout doc to engineering readiness
ebma Oct 8, 2026
98fce38
docs(repo): remove the B2B flow overview
ebma Oct 8, 2026
01e2f46
docs(api): document webhook registration as 201 created
ebma Oct 8, 2026
ba85721
docs(api): accept deposit events in the webhook listener example
ebma Oct 8, 2026
8e68838
docs(api): list the b2b routes in the managed-profile delegation rules
ebma Oct 8, 2026
2c86f16
docs(api): show a new b2b registration with an unchecked waitingReason
ebma Oct 8, 2026
b2f551b
docs(api): add a sandbox getting-started for the business eur onramp
ebma Oct 8, 2026
70a25a4
docs(api): explain when a b2b registration reports no waiting reason
ebma Oct 8, 2026
44dde0e
docs(api): clarify sandbox binding, test payments and refunds
ebma Oct 8, 2026
06b1e86
docs(api): list active-entity among routes that refuse delegation
ebma Oct 8, 2026
bf4061c
docs(api): fix b2b sandbox walkthrough examples and event fields
ebma Oct 8, 2026
3f83e03
docs(api): point the sandbox page to the b2b getting-started
ebma Oct 8, 2026
421ff2b
docs(api): use a valid email domain in the managed child example
ebma Oct 8, 2026
e24f326
Merge pull request #1413 from pendulum-chain/docs/public-repo-confide…
ebma Oct 9, 2026
68a90ab
Merge remote-tracking branch 'origin/staging' into docs/b2b-public-scope
ebma Oct 9, 2026
175b6db
test(api): keep client-side signing tests off public RPCs
ebma Oct 9, 2026
f810340
test(api): install the fetch guard for every hermetic test file
ebma Oct 9, 2026
92f9cb1
test(api): replace per-file eth_chainId shims with the shared fake
ebma Oct 9, 2026
69b9754
docs(repo): align B2B doc statements with the code
ebma Oct 9, 2026
3cb7394
Merge pull request #1420 from pendulum-chain/docs/b2b-public-scope
ebma Oct 9, 2026
55211bb
Merge pull request #1417 from pendulum-chain/test/neutral-fixtures
ebma Oct 9, 2026
a30fcc0
docs(api): describe the b2b sandbox steps as current practice
ebma Oct 9, 2026
19237de
Merge pull request #1421 from pendulum-chain/docs/api-b2b-getting-sta…
ebma Oct 9, 2026
c963ec1
Merge remote-tracking branch 'origin/staging' into test/hermetic-base…
ebma Oct 9, 2026
198fc76
ci(repo): run the deployed quote smoke test in live mode
ebma Oct 9, 2026
91c18b6
Merge pull request #1422 from pendulum-chain/test/hermetic-base-rpc
ebma Oct 9, 2026
966f067
docs(api): mark b2b sandbox test payments as not yet available
ebma Oct 9, 2026
14a08c7
docs(repo): add the partner-held white-label credential threat
ebma Oct 9, 2026
33e620a
docs(repo): describe key storage and fund movement in plain terms
ebma Oct 9, 2026
392c853
docs(repo): move the operator runbooks to the private repository
ebma Oct 9, 2026
ba36c28
docs(repo): state the consumer onramp security posture directly
ebma Oct 9, 2026
d4dc2f3
docs(repo): narrow the consumer onramp launch gates to engineering
ebma Oct 9, 2026
d9952c9
docs(repo): cite operator runbooks by name only
ebma Oct 9, 2026
ea4d5d4
Merge pull request #1424 from pendulum-chain/docs/b2b-sandbox-guide-a…
ebma Oct 9, 2026
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
5 changes: 5 additions & 0 deletions .agents/skills/vortex-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ the implementing session or via `/address-feedback`.
A stale snapshot on the branch = automatic P1 finding.
- Read the PR description and any linked proposal/ADR: findings include "the change
doesn't achieve its stated intent", not just "the code is wrong".
- Public-repo check (CLAUDE.md "Public Repository: No Client Data"): scan the diff, every
commit message in the range, the branch name, and the PR title and body for client,
partner or prospect names, commercial terms tied to a named party, and production
personal data. Any hit is an automatic P1 finding. Cite its location only: never repeat
the name or term in the report or in anything posted to GitHub.

## 2. Round 1 — finder fleet

Expand Down
1 change: 1 addition & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

## Repository invariants

- This repository is public. Flag customer, business-client, partner or prospect names, commercial terms tied to a named party, and production personal data anywhere in the change, including fixtures, the PR title and the PR description. Point to the location without repeating the name or term in your comment.
- Treat `docs/security-spec/` as normative for security-sensitive behavior. Flag code/spec contradictions and behavior changes that leave the relevant specification stale.
- Treat public OpenAPI schemas, `packages/sdk` exports, and shared wire types as compatibility contracts. Check consumers and documentation when their shapes, semantics, defaults, or errors change.
- Changes to `packages/shared` can affect every application. Check downstream assumptions, and require the shared build before consumer verification.
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ jobs:
if: always()
working-directory: apps/api
env:
# Live test: skips the hermetic preload, whose fetch guard would block these calls.
RUN_LIVE_TESTS: "1"
VORTEX_QUOTE_SMOKE_URLS: https://api-staging.vortexfinance.co,https://api.vortexfinance.co
run: bun test src/tests/deployed-quotes.e2e.test.ts

Expand Down
26 changes: 26 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,11 @@ update the existing canonical document when one owns the topic.
`docs/adr-NNNN-<topic>.md`, with current behavior updated in the relevant maintained
document.
- Keep local `README.md` files only when they explain a non-obvious subsystem contract.
- Never add a document written for a specific client or partner, or one that tracks
commercial gates, terms or negotiation status (see "Public Repository: No Client Data").
- Operator runbooks are maintained outside this repository. Cite them by name and section
(for example "runbook §2.7"); when a change alters a documented procedure, say so in the
pull request description.
- Repair indexes and relative links in the same change as a move or deletion.
- Agent skills live in `.agents/skills/<name>/SKILL.md` so every coding agent can use
them; `.claude/skills/` holds only symlinks to those directories (Claude Code follows
Expand Down Expand Up @@ -139,6 +144,27 @@ Commit examples from history: `fix(api): keep active phase retries below lock ex
`feat(dashboard): add searchable token selection`, `docs(dashboard): sync implemented
feature specs`.

## Public Repository: No Client Data

This repository is public. Files, commit messages, branch names, PR titles and
descriptions, and review comments are world-readable, and git and GitHub keep every
earlier version even after an edit.

- Never name customers, business clients, partners, prospects, or their end users. Write
"the partner", "a business client", or another neutral role, even when the user or the
task context uses the real name. Providers the code already integrates (for example
Monerium or Avenia) are not clients and may be named.
- Keep commercial details out as well: agreement and negotiation status, prices, fees or
discounts agreed with a specific party, onboarding status, contacts, and anything quoted
from a client conversation.
- Never commit production personal data (names, emails, tax IDs, IBANs, wallet addresses
tied to a person). Fixtures use obviously fake values such as `@example.com`, and must
not hint at a real client in disguise.
- Before every commit, push, `gh pr create`, `gh pr edit`, or review comment, check the
diff, message, branch name, and PR title and body for any of the above.
- If something already leaked, stop and tell the user. Never write a commit message, PR
title, or comment that explains what was removed or why.

## Lean, Safe Fixes

For fixes, prefer the smallest change that fully resolves the demonstrated root cause
Expand Down
2 changes: 1 addition & 1 deletion apps/api/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ BROWSER_SDK_ORIGINS=
# Environment Configuration
SANDBOX_ENABLED=false

# Sales-demo account (sandbox only) — see docs/operations-demo-environment.md
# Sales-demo account (sandbox only) — see the internal demo-environment runbook
DEMO_ACCOUNT_EMAIL=demo@satoshipay.io
# Serves Alfredpay KYB from canned in-process responses so the demo corridor can be
# re-onboarded endlessly. Refuses to start unless DEPLOYMENT_ENV=sandbox.
Expand Down
2 changes: 1 addition & 1 deletion apps/api/scripts/monerium-b2b-sandbox-e2e.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/**
* End-to-end run of the Monerium B2B onramp against a live backend, the sandbox or a local
* rehearsal (docs/operations-monerium-b2b-runbook.md §8). It registers a client's destination
* rehearsal (B2B operations runbook §8). It registers a client's destination
* the way the partner does, waits until the keeper has deployed, linked and activated the
* account, then waits for one EUR payment and checks on chain that it was converted and
* forwarded, or refunded with --refund.
Expand Down
2 changes: 1 addition & 1 deletion apps/api/scripts/seed-demo-account.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*
* Sandbox only — the restore routine itself refuses to run anywhere else. The demo profile
* must have signed in once via OTP first; the seed cannot forge a Supabase Auth user.
* See docs/operations-demo-environment.md.
* See the internal demo-environment runbook.
*/
import path from "node:path";
import dotenv from "dotenv";
Expand Down
Loading
Loading