Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
fd8911e
fix(server): drop nonexistent solana-go local replace in go.mod
LingSiewWin May 10, 2026
f23dd92
fix(sdk): bounds check in x402 pickPreferred
LingSiewWin May 10, 2026
67f8346
fix(sdk): adapt openMppSession to @solana/mpp 0.5.x API
LingSiewWin May 10, 2026
4c2da82
test(sdk): valid Solana key fixtures for session governance tests
LingSiewWin May 10, 2026
149c077
fix(anchor): user-scoped PDAs + fleet daily cap enforcement
LingSiewWin May 10, 2026
253aa74
test(anchor): e2e initialize_fleet_vault smoke test on devnet
LingSiewWin May 10, 2026
5a35361
test(anchor): e2e proof user-scoped seeds defeat fleet_id squat attack
LingSiewWin May 10, 2026
010897c
test(anchor): e2e proof daily_cap is enforced in approve_signing
LingSiewWin May 10, 2026
77b9de2
feat(web): re-enable onboarding, dashboard, and login routes
LingSiewWin May 10, 2026
d603210
fix(ika-sidecar): pin SDK to 0.3.1 + adapt to its API surface
LingSiewWin May 10, 2026
7da8393
fix(convex): tighten 16 enum fields from v.string() to v.union(literals)
LingSiewWin May 10, 2026
4c91d16
fix(sdk): typed ProtocolNotImplementedError for L402/AP2/ACP gap
LingSiewWin May 10, 2026
d507d8c
fix(sdk): disable CCTP path resolver until executor lands (audit #10)
LingSiewWin May 10, 2026
fff8d3f
chore(sdk): replace dead-code `false && ...` short-circuits with expl…
LingSiewWin May 10, 2026
f0cc42b
chore: update root bun.lock for ika-sidecar SDK pin
LingSiewWin May 10, 2026
37aac3b
test(convex): live proof Phase I enum validators reject invalid values
LingSiewWin May 10, 2026
5728556
feat(tui): OpenTUI terminal dashboard streaming local Convex data
LingSiewWin May 10, 2026
4121efa
feat(cli): rhemify traces list — chunk 1 of decision-replay CLI
LingSiewWin May 11, 2026
6f36d8f
feat(cli): rhemify traces show — chunk 2 of decision-replay CLI
LingSiewWin May 11, 2026
f61b5bc
feat(cli): rhemify traces replay — THE killer demo (chunk 3)
LingSiewWin May 11, 2026
bcf5edd
feat(cli): rhemify traces verify — cryptographic anchor proof (chunk …
LingSiewWin May 11, 2026
e066564
fix(pipeline): real x402-Solana payment lands trace in Convex (phase …
LingSiewWin May 11, 2026
cf8b5a4
feat(x402): real on-chain payment tx + verifiable signature in trace …
LingSiewWin May 11, 2026
e7b51a3
feat(mpp): real on-chain MPP charge with verifiable signature (phase …
LingSiewWin May 11, 2026
67daf02
fix(replay): populate real policy_state in trace snapshot (phase O.4)
LingSiewWin May 11, 2026
32ad906
docs(readme): rewrite for honest positioning post-O.4 (phase O.5)
LingSiewWin May 11, 2026
0d8cd2c
ci: add GitHub Actions workflow for TS + Go + Anchor (phase O.6)
LingSiewWin May 11, 2026
30b50e3
ci: make check-types depend on upstream build (fix MCP TS2307 on CI)
LingSiewWin May 11, 2026
cd38d9b
test(anchor): PDA seed derivation tests for both programs (phase O.7)
LingSiewWin May 11, 2026
df0d29e
fix(replay): unify SDK rule names with Go canonical + read both trace…
LingSiewWin May 11, 2026
804c9e5
fix(replay): approval_threshold == 0 means disabled, not "$0 threshol…
LingSiewWin May 11, 2026
a8b2697
fix(marketing): align web copy with Solana scope post-O.5 README (pha…
LingSiewWin May 11, 2026
4862a00
fix(ika): /sign returns 501 with explicit v1 scope-out (phase O.11)
LingSiewWin May 11, 2026
c61d14e
fix(marketing): Lifecycle + Pricing + StatsSection honest copy, READM…
LingSiewWin May 11, 2026
4d7bf8d
fix(cli): clear pre-existing TS errors blocking strict typecheck (pha…
LingSiewWin May 11, 2026
3254a3f
fix(ui): residual ExecutionContext + L402/AP2 chips removed (phase O.14)
LingSiewWin May 11, 2026
e5aa12e
docs(openapi): align IngestRequest schema with SDK wire shape + note …
LingSiewWin May 11, 2026
f06fac1
chore(seed): drop unused schema validator imports (phase O.16)
LingSiewWin May 11, 2026
66bda2f
chore(web): remove orphan logo SVGs after O.10 TrustStrip trim (phase…
LingSiewWin May 11, 2026
a53def1
chore(web): remove dead MockFleetService + query-keys.ts legacy data …
LingSiewWin May 11, 2026
eefb67e
test(sdk): canExecute coverage for x402SolanaExecutor + mppChargeExec…
LingSiewWin May 11, 2026
73f72e6
feat(cli): rhemify status checks dependency reachability (phase O.20)
LingSiewWin May 11, 2026
3251c5f
feat(tools): demo-run.sh chains the full end-to-end flow (phase O.22)
LingSiewWin May 11, 2026
cd40ae2
docs(readme): Quickstart points at tools/demo-run.sh (phase O.23)
LingSiewWin May 11, 2026
1a91c7e
fix(cli): replay diff columns align — count visible chars, not ANSI c…
LingSiewWin May 11, 2026
cd37def
fix(cli): traces show POLICY columns align (phase O.25)
LingSiewWin May 11, 2026
e279d3d
fix(cli): handle null diff from Go server (phase O.26)
LingSiewWin May 11, 2026
56b0946
fix(cli): traces verify reports MISMATCH honestly (phase O.27)
LingSiewWin May 11, 2026
3e3aad9
docs(readme): roadmap notes O.6 CI shipped + per-trace Merkle batchin…
LingSiewWin May 11, 2026
c413274
docs(readme): Quickstart seeds the demo fleet inline (phase O.29)
LingSiewWin May 11, 2026
34e9855
docs(readme): 'what works' table covers demo-run.sh / status / CI (ph…
LingSiewWin May 11, 2026
cb988a6
feat(merkle): per-trace Merkle batching, multiple traces VERIFY again…
LingSiewWin May 11, 2026
1707996
docs(readme): 'what works' table covers Merkle verify (post-M.5 follo…
LingSiewWin May 11, 2026
7d75b0d
docs(readme): Quickstart lists traces verify (post-M followup)
LingSiewWin May 11, 2026
e467b5b
feat(sdk): x402SolanaTransferExecutor — real USDC SPL settlement with…
LingSiewWin May 11, 2026
493d748
feat(sdk): mppChargeTransferExecutor mirrors x402 transfer for MPP st…
LingSiewWin May 11, 2026
38a76cd
updated readme.md
LingSiewWin May 11, 2026
8fc8838
feat(sdk): x402EvmTransferExecutor — real ERC-20 USDC on EVM via viem…
LingSiewWin May 11, 2026
587e09b
feat(cli): EVM wallet loading + status surface + signing-model honest…
LingSiewWin May 11, 2026
b43e956
feat(test-402): EVM_NETWORK + EVM_RECIPIENT env vars for /weather
LingSiewWin May 11, 2026
5cd08bf
feat(x402): facilitator-mode partial-sign path — spec-compliant clien…
LingSiewWin May 12, 2026
7da14c4
fix(sdk): x402 v2 facilitator-broadcast — spec-compliant payload + PA…
LingSiewWin May 12, 2026
9b04d89
fix(sdk): Layer-1 Memo anchor lands for short-lived processes (close(…
LingSiewWin May 12, 2026
79a75b5
fix(sdk,test-402): close() drains ingest before anchor; e2e harness u…
LingSiewWin May 12, 2026
2f4eea8
chore(sdk,test-402): type memo.ts pipe chain, regression-test drain r…
LingSiewWin May 12, 2026
c8d2651
chore: untrack compiled artifacts, rename duplicated mp4
LingSiewWin May 12, 2026
a814d11
feat(web): integrate decision traces into the dashboard, remove stand…
LingSiewWin May 12, 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
120 changes: 120 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: CI

on:
push:
branches:
- main
- 'feature/**'
pull_request:
branches:
- main

# Cancel in-progress runs on the same branch when a new push lands.
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
typescript:
name: TypeScript (typecheck + SDK build)
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.11

- name: Cache bun install
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock', 'bun.lockb') }}
restore-keys: |
${{ runner.os }}-bun-

- name: Install dependencies
run: bun install --frozen-lockfile

# SDK build first so workspaces consuming @rhemify-monorepo/sdk via the
# built dist/ (the package.json main field) don't typecheck against
# stale artifacts. Same reason we rebuild locally between phases.
- name: Build @rhemify-monorepo/sdk
run: bun --cwd packages/sdk run build

# Turborepo fan-out runs tsc across every workspace.
- name: Type-check workspaces
run: bun run check-types

go-server:
name: Go intelligence server (vet + build + test)
runs-on: ubuntu-latest
timeout-minutes: 10
defaults:
run:
working-directory: apps/server
steps:
- uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
cache: true
cache-dependency-path: apps/server/go.sum

- name: go mod download
run: go mod download

- name: go vet
run: go vet ./...

- name: go build
run: go build ./...

- name: go test
run: go test ./...

anchor-programs:
name: Anchor programs (cargo check)
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4

- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable

# Cache cargo registry + git + each program's target dir. Two crates,
# both depend on anchor-lang 1.0 which has substantial transitive deps —
# cold builds are ~5 min, cached compile is ~30s.
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
programs/rhemify-anchor/target
programs/rhemify-dwallet/target
key: ${{ runner.os }}-cargo-anchor-${{ hashFiles('programs/**/Cargo.lock', 'programs/**/Cargo.toml') }}
restore-keys: |
${{ runner.os }}-cargo-anchor-

# cargo test runs check + builds tests + executes them on the host
# target. SBF compile (cargo-build-sbf) is still a developer-machine
# step before devnet deploy; that path stays out of CI to keep job
# runtime under a minute on cache hit.
#
# Test surface today: PDA seed derivation invariants, squat defense
# for the user-scoped seeds, program-ID pinning. See
# programs/*/tests/pda_seeds.rs for what's covered. Full integration
# tests against an SVM (Mollusk / litesvm) are a future chunk.
- name: cargo test — rhemify-anchor
working-directory: programs/rhemify-anchor
run: cargo test --all-targets

- name: cargo test — rhemify-dwallet
working-directory: programs/rhemify-dwallet
run: cargo test --all-targets
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,9 @@ skills/
.test-wallet.json
.env.test
local.db
apps/web/local.db

# Compiled Go binaries (apps/server) — these belong in CI artifacts, never in tree
apps/server/bin/
apps/server/seed
.vercel
8 changes: 4 additions & 4 deletions Anchor.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ resolution = true
skip-lint = false

[programs.devnet]
rhemify_anchor = "RhemTrceAnch1111111111111111111111111111111"
rhemify_dwallet = "GcGz6uD7FxF6rSjCAU1xBV4ZW1E9EFDa4JA5yPKv1cdL"
rhemify_anchor = "HYWjBbLMEz98KnppVkUnHmkUZ4pyQ8abaDRTtUedUkxV"
rhemify_dwallet = "GPgdzfwQ4qG1QcqePY3uR6Uo8SvCwqxRYg7oDsXd5opc"

[programs.localnet]
rhemify_anchor = "AnNz2XESvXbyt2uNnFaZD3Wr6qZpmHC4iuHzmcxMoPRg"
rhemify_dwallet = "GcGz6uD7FxF6rSjCAU1xBV4ZW1E9EFDa4JA5yPKv1cdL"
rhemify_anchor = "HYWjBbLMEz98KnppVkUnHmkUZ4pyQ8abaDRTtUedUkxV"
rhemify_dwallet = "GPgdzfwQ4qG1QcqePY3uR6Uo8SvCwqxRYg7oDsXd5opc"

[provider]
cluster = "localnet"
Expand Down
Loading
Loading