Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
523fc21
Add-Storage-Key-Collision-Analysis
bakarezainab Feb 22, 2026
341b505
Merge branch 'main' into Add-Storage-Key-Collision-Analysis
bakarezainab Feb 22, 2026
5135a92
chore(issue-30): add branding assets and CLI logo
ogazboiz Feb 22, 2026
a5a3fbf
Merge branch 'main' into Add-Storage-Key-Collision-Analysis
bakarezainab Feb 23, 2026
f71ffa7
Merge pull request #84 from ogazboiz/chore/issue-30-branding
Gbangbolaoluwagbemiga Feb 23, 2026
8fffe44
Merge pull request #82 from bakarezainab/Add-Storage-Key-Collision-An…
Gbangbolaoluwagbemiga Feb 23, 2026
e106133
docs: add initial Architecture Decision Records (ADRs)
Uchechukwu-Ekezie Feb 23, 2026
7fcb931
feat: Add integration tests for token contract
ritik4ever Feb 23, 2026
b691459
Merge branch 'main' into feat/token-integration-tests-32
ritik4ever Feb 23, 2026
007d873
feat: implement sanctifier init command
meshackyaro Feb 23, 2026
1868071
fix: ignore read-only functions in auth gap detection
Feb 23, 2026
3349abd
chore: enhance CLI branding with version info and tagline
Feb 23, 2026
6c5e784
feat: add event topic consistency check
Feb 23, 2026
9d098a6
Merge pull request #89 from xqcxx/chore/add-logo-branding
Gbangbolaoluwagbemiga Feb 23, 2026
de0f7ec
Merge pull request #90 from xqcxx/feat/event-topic-consistency
Gbangbolaoluwagbemiga Feb 23, 2026
67e07ed
Merge pull request #87 from meshackyaro/sanctifier-init-command
Gbangbolaoluwagbemiga Feb 23, 2026
deba9eb
Merge pull request #85 from OpenSourceCOntr/docs/sanctifier-adrs-44
Gbangbolaoluwagbemiga Feb 24, 2026
ba1394e
chore: Update dependencies to Soroban SDK v20
Wilfred007 Feb 25, 2026
408164d
Merge branch 'main' into Feat-Update-dependencies-to-Soroban-SDK-v20
Wilfred007 Feb 25, 2026
9f645b4
fixed issues
Wilfred007 Feb 25, 2026
4689be2
Merge pull request #92 from Wilfred007/Feat-Update-dependencies-to-So…
Gbangbolaoluwagbemiga Feb 25, 2026
606f925
Merge branch 'main' into feat/token-integration-tests-32
ritik4ever Feb 25, 2026
9a8150d
chore: Update dependencies to latest stable versions
xqcxx Feb 25, 2026
b44dc4b
test: Add unit tests for resource exhaustion estimator
xqcxx Feb 25, 2026
8a1b4bc
feat: Detect unhandled Result types in contract public functions
xqcxx Feb 25, 2026
6be1e0e
refactor: Modularize static analysis rule engine
xqcxx Feb 25, 2026
f1732d5
feat(cli): implement robust sanctifier init workflow
Bug-Hunter-X Feb 25, 2026
4fbfa64
feat: automate crates.io publication workflow
bakarezainab Feb 25, 2026
fbc78a8
Merge pull request #86 from ritik4ever/feat/token-integration-tests-32
Gbangbolaoluwagbemiga Feb 25, 2026
3d61289
feat: integrate Z3 SMT solver for invariant checking PoC
Feb 25, 2026
dcc1464
Add AMM pool with property-based testing for constant product formula
meshackyaro Feb 25, 2026
b8f099a
Fix CI: Add explicit toolchain input to rust-toolchain action
meshackyaro Feb 25, 2026
ecba42c
Fix code formatting with cargo fmt
meshackyaro Feb 25, 2026
96db015
Fix clippy warnings: use div_ceil and saturating_add
meshackyaro Feb 25, 2026
0cc65e8
Fix all clippy warnings across workspace
meshackyaro Feb 25, 2026
20e43b5
Fix formatting: remove extra blank line in lib.rs
meshackyaro Feb 25, 2026
248d276
CI: Exclude broken contracts from clippy and test runs
meshackyaro Feb 25, 2026
b4a2085
test fix
bakarezainab Feb 25, 2026
f0d44b6
feat: Add configuration file support (.sanctify.toml) and custom rule…
Feb 25, 2026
93ff600
chore(ci): add Rust matrix builder for last 3 stable versions
ritik4ever Feb 25, 2026
583053a
CI: Exclude broken contracts from e2e-coverage workflow
meshackyaro Feb 25, 2026
e552806
Merge branch 'main' into Publish-sanctifier-cli-to-crates.io-workflow
bakarezainab Feb 25, 2026
c36bd1e
chore(ci): scope rust and coverage checks to core tooling packages
ritik4ever Feb 25, 2026
9cc7d2b
style(core): fix rustfmt whitespace in analyzer tests
ritik4ever Feb 25, 2026
908bd96
fix(ci): resolve clippy failures in rust workflow and core tooling
ritik4ever Feb 25, 2026
f15b197
fix: resolve formatting and missing imports
bakarezainab Feb 25, 2026
a877e1e
Merge pull request #142 from meshackyaro/property-based-testing-for-a…
Gbangbolaoluwagbemiga Feb 25, 2026
d5ae490
Merge pull request #134 from xqcxx/chore/update-rust-analyzer-deps
Gbangbolaoluwagbemiga Feb 25, 2026
61bfc84
Merge branch 'main' into chore/rust-ci-matrix-older-versions-125
ritik4ever Feb 25, 2026
87450e3
Merge branch 'main' into feat/config-file-support-95
Rampop01 Feb 25, 2026
1aac090
Merge branch 'main' into Publish-sanctifier-cli-to-crates.io-workflow
bakarezainab Feb 25, 2026
d1b4c25
Merge pull request #145 from Rampop01/feat/config-file-support-95
Gbangbolaoluwagbemiga Feb 25, 2026
44ead99
Merge pull request #141 from AbuJulaybeeb/feat/111-smt-solver-integra…
Gbangbolaoluwagbemiga Feb 25, 2026
152fd0c
Merge branch 'main' into feat/detect-unhandled-result
Gbangbolaoluwagbemiga Feb 25, 2026
dc9ecbb
Merge pull request #137 from xqcxx/feat/detect-unhandled-result
Gbangbolaoluwagbemiga Feb 25, 2026
f699a43
Merge pull request #135 from xqcxx/test/resource-exhaustion-estimator
Gbangbolaoluwagbemiga Feb 25, 2026
9e02432
Merge branch 'main' into refactor/modularize-rule-engine
Gbangbolaoluwagbemiga Feb 25, 2026
c945574
Merge pull request #139 from bakarezainab/Publish-sanctifier-cli-to-c…
Gbangbolaoluwagbemiga Feb 25, 2026
519730e
Merge pull request #138 from xqcxx/refactor/modularize-rule-engine
Gbangbolaoluwagbemiga Feb 25, 2026
591393d
Add SECURITY.md disclosure policy
gboigwe Feb 25, 2026
c44643e
Add Dockerfile for CLI container
gboigwe Feb 25, 2026
1ed188d
Add .dockerignore for build
gboigwe Feb 25, 2026
f3c6664
Enhance JSON output for CI/CD
gboigwe Feb 25, 2026
c7a5c27
Add SanctityScore gauge component
gboigwe Feb 25, 2026
d8f6806
Enhance PDF export with summary
gboigwe Feb 25, 2026
cab5b61
Add call graph types
gboigwe Feb 25, 2026
be3b1b2
Add call graph data extraction
gboigwe Feb 25, 2026
0fc3aca
Add CallGraph visualization component
gboigwe Feb 25, 2026
6ea2af2
Integrate new components in dashboard
gboigwe Feb 25, 2026
b0f3536
Merge pull request #146 from gboigwe/feat/implement-issues-99-114-117…
Gbangbolaoluwagbemiga Feb 25, 2026
d4b39b0
feat: add Storybook main configuration for Next.js
clintjeff2 Feb 26, 2026
576dd27
feat: add Storybook preview config with Tailwind globals
clintjeff2 Feb 26, 2026
fd4cac7
build: add Storybook scripts and devDependencies
clintjeff2 Feb 26, 2026
76bc5f4
docs: add CallGraph component stories
clintjeff2 Feb 26, 2026
7387be1
docs: add CodeSnippet component stories
clintjeff2 Feb 26, 2026
ed42ba5
docs: add FindingsList component stories
clintjeff2 Feb 26, 2026
48f4df2
docs: add SanctityScore component stories
clintjeff2 Feb 26, 2026
78bec92
docs: add SeverityFilter component stories
clintjeff2 Feb 26, 2026
b16d75b
docs: add SummaryChart component stories
clintjeff2 Feb 26, 2026
8d0f01e
docs: add ThemeToggle component stories
clintjeff2 Feb 26, 2026
0679ada
docs: add PR description for issue #122
clintjeff2 Feb 26, 2026
b1d40bb
chore: minor changes to completely ensure storybook runs successfully
clintjeff2 Feb 26, 2026
a184635
gitignore
clintjeff2 Feb 26, 2026
5fe5a2b
feat: Implement AST parser for Soroban
KingFRANKHOOD Feb 26, 2026
1e432d2
Build Kani proof harness for token initialization
bakarezainab Feb 26, 2026
81c2da9
fix: regenerate Cargo.lock and declare MSRV 1.78 to fix lock file v4 …
bakarezainab Feb 26, 2026
1c697f7
fix: make all Kani harnesses pass under kani-verifier 0.67
bakarezainab Feb 26, 2026
dd86a02
feat(cli): add sanctifier update command
bamiebot-maker Feb 26, 2026
dffebad
Merge pull request #140 from Adacancode/feat/103-sanctifier-init
Gbangbolaoluwagbemiga Feb 26, 2026
a13faaa
test: add criterion benchmarks for AST static analysis engine
bbkenny Feb 26, 2026
8daf4e8
Merge pull request #143 from ritik4ever/chore/rust-ci-matrix-older-ve…
Gbangbolaoluwagbemiga Feb 26, 2026
c690d19
Merge pull request #147 from clintjeff2/ui-docs-storybook
Gbangbolaoluwagbemiga Feb 26, 2026
09c1364
Merge pull request #148 from KingFRANKHOOD/feat/soroban-storage-ast-p…
Gbangbolaoluwagbemiga Feb 26, 2026
966b929
Merge pull request #169 from bakarezainab/Build-Kani-proof-harness-fo…
Gbangbolaoluwagbemiga Feb 26, 2026
6f0dccc
Merge upstream main into feat/issue-167-sanctifier-update and resolve…
bamiebot-maker Feb 26, 2026
384aa7e
Merge pull request #172 from bamiebot-maker/feat/issue-167-sanctifier…
Gbangbolaoluwagbemiga Feb 26, 2026
b9f2afa
Merge branch 'main' into feature/test-benchmark-static-analysis
Gbangbolaoluwagbemiga Feb 26, 2026
9e11a57
Merge pull request #173 from bbkenny/feature/test-benchmark-static-an…
Gbangbolaoluwagbemiga Feb 26, 2026
69da5b6
feat: add static analysis check for deprecated Soroban host functions…
thebabalola Mar 7, 2026
d7d3683
feat: implement exclude configuration option in .sanctify.toml (#48)
thebabalola Mar 7, 2026
3255a7b
feat: implement AST caching mechanism in CLI (#53)
thebabalola Mar 7, 2026
5c029e9
chore: merge feature/deprecated-host-fns into feature/ast-caching
thebabalola Mar 7, 2026
21b0e0b
chore: merge feature/config-exclude into feature/ast-caching
thebabalola Mar 7, 2026
fc714a2
chore: resolve remaining conflicts in vulnerable-contract Cargo.toml
thebabalola Mar 7, 2026
72478dc
chore: resolve all merge conflicts across the workspace
thebabalola Mar 7, 2026
cb144cd
chore: remove lingering conflict markers in lib.rs
thebabalola Mar 7, 2026
deccb07
chore: restore missing imports in lib.rs
thebabalola Mar 7, 2026
55dd753
fix: syntax error in analyze.rs
thebabalola Mar 7, 2026
1331ccb
fix: Kani integration ownership in main.rs
thebabalola Mar 7, 2026
7d1230a
fix: unify Severity enum and add exclude field to init
thebabalola Mar 7, 2026
223d0f1
fix: resolve CustomRule duplication and finalize configuration structure
thebabalola Mar 7, 2026
a914127
fix: pin derive_arbitrary to 1.3.2 to resolve stellar-xdr build error
thebabalola Mar 7, 2026
e4646ac
fix: resolve duplicate test and unused args warning
thebabalola Mar 7, 2026
66d94ed
test: update expected rules in init test
thebabalola Mar 7, 2026
1dc230a
chore: ignore .sanctifier_cache
thebabalola Mar 7, 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
12 changes: 12 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
target/
node_modules/
frontend/.next/
.git/
*.log
branding/
docs/
README.md
SECURITY.md
build_errors*.log
build_all_errors.log
final_message.md
13 changes: 6 additions & 7 deletions .github/workflows/e2e-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: E2E Tests & Coverage

on:
push:
branches: [ "main" ]
branches: ["main"]
pull_request:
branches: [ "main" ]
branches: ["main"]

env:
CARGO_TERM_COLOR: always
Expand All @@ -17,7 +17,9 @@ jobs:
- uses: actions/checkout@v3

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable

- name: Cache dependencies
uses: actions/cache@v3
Expand All @@ -32,16 +34,13 @@ jobs:
restore-keys: ${{ runner.os }}-cargo-

- name: Run Build
run: cargo build --all

- name: Run Unit & E2E Tests
run: cargo test --all

- name: Install tarpaulin
run: cargo install cargo-tarpaulin || true

- name: Generate Coverage Report
run: cargo tarpaulin --out Xml


- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Publish to Crates.io

on:
push:
tags:
- 'v*'


jobs:
publish:
name: Publish to Crates.io
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install stable Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: rustfmt, clippy

- name: Publish sanctifier-core
run: cargo publish -p sanctifier-core --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
continue-on-error: true

- name: Publish sanctifier-cli
run: cargo publish -p sanctifier-cli --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
72 changes: 67 additions & 5 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,70 @@ env:
CARGO_TERM_COLOR: always

jobs:
build-core-tooling-matrix:
name: Build Rust version matrix
runs-on: ubuntu-latest
outputs:
versions: ${{ steps.versions.outputs.versions }}

steps:
- name: Install stable Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Compute last 3 stable Rust versions
id: versions
shell: bash
run: |
stable="$(rustc --version --verbose | sed -n 's/^release: //p')"
major="${stable%%.*}"
remainder="${stable#${major}.}"
minor="${remainder%%.*}"

previous_one=$((minor - 1))
previous_two=$((minor - 2))

if (( previous_two < 0 )); then
echo "Unable to compute previous versions from stable release '${stable}'" >&2
exit 1
fi

versions="$(printf '["%s.%s","%s.%s","%s.%s"]' "$major" "$minor" "$major" "$previous_one" "$major" "$previous_two")"
echo "versions=${versions}" >> "$GITHUB_OUTPUT"
echo "Using Rust versions: ${versions}"

build-core-tooling-compat:
name: Build core tooling (Rust ${{ matrix.rust }})
needs: build-core-tooling-matrix
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
rust: ${{ fromJson(needs.build-core-tooling-matrix.outputs.versions) }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}

- name: Cache cargo registry & build artifacts
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ matrix.rust }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-${{ matrix.rust }}-
${{ runner.os }}-cargo-

- name: Build sanctifier-core and sanctifier-cli
run: cargo check -p sanctifier-core -p sanctifier-cli

build-and-test:
name: Build & Test sanctifier-cli
runs-on: ubuntu-latest
Expand All @@ -19,8 +83,9 @@ jobs:
uses: actions/checkout@v4

- name: Install stable Rust toolchain
uses: dtolnay/rust-toolchain@stable
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt, clippy

- name: Cache cargo registry & build artifacts
Expand All @@ -38,10 +103,7 @@ jobs:
run: cargo fmt --check

- name: Run Clippy
run: cargo clippy --workspace --all-targets --all-features -- -D warnings

- name: Run tests
run: cargo test --workspace --all-features

- name: Build release binary
run: cargo build --release -p sanctifier-cli
run: cargo build --release --locked -p sanctifier-cli
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@


.env.local
.env
.env
node_modules
.sanctifier_cache
7 changes: 2 additions & 5 deletions .sanctify.toml
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
ignore_paths = ["target", ".git"]
enabled_rules = ["auth_gaps", "panics", "arithmetic", "ledger_size"]
ledger_limit = 64000
strict_mode = false

# Regex-based custom rules (optional)
[[custom_rules]]
name = "no_unsafe_block"
pattern = "unsafe\\s*\\{"
severity = "error"

[[custom_rules]]
name = "no_mem_forget"
pattern = "std::mem::forget"
severity = "warning"
Loading