Skip to content
Merged
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
9 changes: 9 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,12 @@
/CONTRIBUTING.md @YieldVault-RWA/docs-maintainers @YieldVault-RWA/core-maintainers
/TRIAGE_AND_REVIEW.md @YieldVault-RWA/docs-maintainers @YieldVault-RWA/core-maintainers
/README.md @YieldVault-RWA/docs-maintainers

# Monitoring & Observability
/monitoring/ @YieldVault-RWA/devops-maintainers

# Testing Infrastructure
/tests/ @YieldVault-RWA/backend-maintainers @YieldVault-RWA/frontend-maintainers

# Packages
/packages/ @YieldVault-RWA/backend-maintainers
19 changes: 17 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,23 @@ Describe what should have happened.
Describe what happened instead, including any errors, logs, or stack traces.

## 📍 Impact
- Affected area: `scope: frontend` / `scope: backend` / `scope: contracts` / `scope: infra`
- Severity / priority: `priority: p0-critical` / `priority: p1-high` / `priority: p2-medium` / `priority: p3-low`

### Affected Package
Select the package(s) affected by this bug:
- [ ] `contracts` - Smart contracts & blockchain
- [ ] `backend` - Backend services & API
- [ ] `frontend` - UI & React components
- [ ] `docs` - Documentation
- [ ] `infra` - Infrastructure, CI/CD, deployment

### Severity
Select the severity level based on impact:
- [ ] `critical` - Production outage, data loss, security breach
- [ ] `high` - Feature broken, significant performance degradation
- [ ] `medium` - Feature partially broken, user workflow impacted
- [ ] `low` - Minor bug, cosmetic issue, documentation

### Environment
- Environment: Local / Testnet / Mainnet
- Browser / OS / Runtime: e.g. Chrome v120 / Windows / Node v20

Expand Down
33 changes: 33 additions & 0 deletions .github/workflows/dependency-security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,36 @@ jobs:
uses: actions/dependency-review-action@v4
with:
fail-on-severity: high

npm-license-check:
name: NPM License Check
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'

- name: Enable Corepack & Setup pnpm
run: |
corepack enable
corepack prepare pnpm@9.12.0 --activate

- name: Install Dependencies
run: pnpm install --frozen-lockfile

- name: Install license-checker
run: npm install -g license-checker-rseidelsohn

- name: Check Frontend Licenses
working-directory: ./frontend
run: |
license-checker --onlyAllow "MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;0BSD;CC0-1.0;Unlicense;Python-2.0;CC-BY-3.0;CC-BY-4.0" --summary

- name: Check Backend Licenses
working-directory: ./backend
run: |
license-checker --onlyAllow "MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;0BSD;CC0-1.0;Unlicense;Python-2.0;CC-BY-3.0;CC-BY-4.0" --summary
30 changes: 30 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,33 @@ jobs:
run: |
cargo doc -p share-price-math --no-deps
cargo doc -p mock-strategy --no-deps
continue-on-error: false

spell-check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install cspell
run: npm install -g cspell

- name: Run spell check
run: cspell "**/*.md" --config cspell.json

link-check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Check links
uses: lycheeverse/lychee-action@v1
with:
args: --verbose --no-progress --accept 200,403,429 --timeout 30 --max-retries 3 '**/*.md'
fail: true
45 changes: 44 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,47 @@ jobs:
branch: "chore/changelog-${{ github.ref_name }}"
base: "main"

# Create the GitHub Release with the generated notes
# Build Rust workspace
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable

- name: Build Rust workspace
run: cargo build --release --workspace

# Build frontend
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'

- name: Enable Corepack
run: |
corepack enable
corepack prepare pnpm@9.12.0 --activate

- name: Install frontend dependencies
working-directory: ./frontend
run: pnpm install --frozen-lockfile

- name: Build frontend
working-directory: ./frontend
run: pnpm build

# Generate SBOM for Rust workspace
- name: Install cargo-sbom
run: cargo install cargo-sbom

- name: Generate Rust SBOM
run: cargo sbom --output-format spdx_json_2_3 > rust-sbom.spdx.json

# Generate SBOM for frontend
- name: Generate Frontend SBOM
working-directory: ./frontend
run: |
npm install -g @cyclonedx/cyclonedx-npm
cyclonedx-npm --output-file ../frontend-sbom.json

# Create the GitHub Release with the generated notes and SBOMs
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
Expand All @@ -63,3 +103,6 @@ jobs:
body_path: /tmp/release-notes.md
draft: false
prerelease: ${{ contains(github.ref_name, '-') }}
files: |
rust-sbom.spdx.json
frontend-sbom.json
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ This project is structured as a monorepo containing both the Stellar Soroban sma
- `/contracts/vault/`: Contains the Rust Soroban smart contract for handling the vault logic, fractional share minting (`yvUSDC`), scaling withdrawals, and simulated yield accrual.
- `/contracts/mock-strategy/`: Contains test mock contracts for the Korean sovereign debt strategy and price oracle.
- `/frontend/`: Contains the React + Vite frontend application, integrating `@stellar/freighter-api` for seamless user wallet connections and a premium UI to interact with the protocol.
- `/docs/`: Contains the Product Requirements Document (PRD), Architecture Document, [Domain Glossary](./docs/GLOSSARY.md), [Vault Invariants](./docs/VAULT_INVARIANTS.md), [Protocol Risk Limits](./docs/PROTOCOL_RISK_LIMITS.md), [Oracle Failure Handling](./docs/ORACLE_FAILURE_HANDLING.md), [Performance Regression Thresholds](./docs/PERFORMANCE_REGRESSION.md), and tracked GitHub issues. See also the [Deposit & Withdrawal Lifecycle](./docs/DEPOSIT_WITHDRAWAL_LIFECYCLE.md) for sequence diagrams, the [Deposit & Withdrawal Troubleshooting Guide](./docs/DEPOSIT_WITHDRAWAL_TROUBLESHOOTING.md) for diagnosing failed operations, and the [Dependency Update Policy](./docs/DEPENDENCY_UPDATE_POLICY.md) for upgrade cadence, testing gates, CVE SLAs, and high-risk library requirements.
- `/docs/`: Contains the Product Requirements Document (PRD), Architecture Document, [Domain Glossary](./docs/GLOSSARY.md), [Vault Invariants](./docs/VAULT_INVARIANTS.md), [Protocol Risk Limits](./docs/PROTOCOL_RISK_LIMITS.md), [Oracle Failure Handling](./docs/ORACLE_FAILURE_HANDLING.md), [Performance Regression Thresholds](./docs/PERFORMANCE_REGRESSION.md), [Root Scripts Reference](./docs/ROOT_SCRIPTS_REFERENCE.md), and tracked GitHub issues. See also the [Deposit & Withdrawal Lifecycle](./docs/DEPOSIT_WITHDRAWAL_LIFECYCLE.md) for sequence diagrams, the [Deposit & Withdrawal Troubleshooting Guide](./docs/DEPOSIT_WITHDRAWAL_TROUBLESHOOTING.md) for diagnosing failed operations, and the [Dependency Update Policy](./docs/DEPENDENCY_UPDATE_POLICY.md) for upgrade cadence, testing gates, CVE SLAs, and high-risk library requirements.

## Architecture

Expand Down
56 changes: 56 additions & 0 deletions cspell.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"version": "0.2",
"language": "en-US",
"words": [
"Soroban",
"Freighter",
"yvUSDC",
"USDC",
"XLM",
"Stellar",
"blockchain",
"smartcontract",
"smartcontracts",
"testnet",
"mainnet",
"keypair",
"keypairs",
"Junirezz",
"YieldVault",
"RWA",
"Rustc",
"Wasm",
"WASM",
"rustup",
"pnpm",
"typecheck",
"SBOM",
"SPDX",
"CycloneDX",
"lockfile",
"codeowners",
"repo",
"Github",
"deps",
"codeql",
"slither",
"gitleaks",
"clippy",
"rustfmt"
],
"ignorePaths": [
"node_modules",
"target",
"dist",
"build",
"*.lock",
"*.log",
"coverage",
".git"
],
"ignoreRegExpList": [
"/0x[0-9a-fA-F]+/",
"/[A-Z0-9]{56}/",
"/G[A-Z0-9]{55}/"
]
}
Loading