Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
4b64399
standards: add reusable Dusk contract primitives
HDauven Apr 25, 2026
ff55add
standards: cover primitives with native tests
HDauven Apr 25, 2026
3f467e5
standards: add authorization counter Forge reference
HDauven Apr 25, 2026
82a6e39
standards: add DRC20 roles pausable Forge reference
HDauven Apr 25, 2026
4c3f1ed
standards: add DRC721 collection Forge reference
HDauven Apr 25, 2026
b5b1e1a
standards: add proxy counter Forge reference
HDauven Apr 25, 2026
1918096
standards: add client signing and VM validation
HDauven Apr 25, 2026
5603b96
scripts: add standards local smoke validation
HDauven Apr 25, 2026
e5026d5
docs: document Dusk contract standards
HDauven Apr 25, 2026
9a546d6
workspace: wire standards to local Aegis crates
HDauven Apr 25, 2026
11a670e
standards: annotate Forge reference events
HDauven Apr 25, 2026
c6a7e20
standards: emit policy mutation events
HDauven Apr 25, 2026
2ad527c
standards: add DRC721 signed approvals
HDauven Apr 25, 2026
0678c7b
standards: harden signed invariant coverage
HDauven Apr 25, 2026
277f150
standards: harden authorization and token invariants
HDauven Apr 26, 2026
4f8bb67
standards: add property invariant tests
HDauven Apr 26, 2026
a53bc79
docs: add standards hardening track
HDauven Apr 26, 2026
5d1859f
standards: harden owner-set signed authorization
HDauven Apr 26, 2026
c0a3dd0
standards: expand property fuzz coverage
HDauven Apr 26, 2026
9c7327e
standards: harden atomic state transitions
HDauven Apr 26, 2026
8a3f237
standards: expand invariant hardening coverage
HDauven Apr 26, 2026
3d13bcf
standards: add data-driver hardening fuzz
HDauven Apr 26, 2026
fa68716
standards: restore wallet in local smoke
HDauven Apr 26, 2026
1e96827
standards: add audit readiness packet
HDauven Apr 26, 2026
49cb3cd
standards: add threshold multisig authorization
HDauven Apr 26, 2026
6872dde
standards: add standalone multisig controller
HDauven Apr 26, 2026
d395a24
standards: harden multisig controller coverage
HDauven Apr 26, 2026
9cd78de
standards: exercise multisig in local smoke
HDauven Apr 26, 2026
2184b27
standards: update Forge and Rusk dependencies
HDauven May 27, 2026
1a03501
standards: allow DRC721 operators to burn
HDauven May 27, 2026
6bbe53e
standards: fix observed Moonlight caller context
HDauven May 27, 2026
2c98bbe
standards: bind signed authorizations to chain id
HDauven May 27, 2026
01a4cb5
standards: add license headers
HDauven May 27, 2026
2a1c9df
standards: isolate standards workspace from legacy contracts
HDauven May 27, 2026
ba37da0
standards: harden signed auth integration paths
HDauven May 27, 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
60 changes: 60 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,50 @@ on:
- main

jobs:
changes:
name: Detect changed contract areas
runs-on: core
outputs:
legacy: ${{ steps.filter.outputs.legacy }}
standards: ${{ steps.filter.outputs.standards }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- id: filter
shell: bash
run: |
set -euo pipefail

legacy=false
standards=false

if [[ "${{ github.event_name }}" == "push" ]]; then
legacy=true
standards=true
else
files="$(git diff --name-only \
"${{ github.event.pull_request.base.sha }}" \
"${{ github.event.pull_request.head.sha }}")"

while IFS= read -r file; do
[[ -z "$file" ]] && continue
case "$file" in
genesis/*|tests/*|bin/*|scripts/setup-compiler.sh|scripts/download-rusk.sh|scripts/build-test-contracts.sh)
legacy=true
;;
esac
case "$file" in
standards/*|docs/dusk-contract-standards*|scripts/dusk-contract-standards-*|Cargo.toml|Cargo.lock|Makefile|README.md|rust-toolchain.toml|.github/workflows/ci.yml|.github/workflows/standards-hardening.yml)
standards=true
;;
esac
done <<< "$files"
fi

echo "legacy=$legacy" >> "$GITHUB_OUTPUT"
echo "standards=$standards" >> "$GITHUB_OUTPUT"

dusk_analyzer:
name: Dusk Analyzer
runs-on: core
Expand All @@ -13,9 +57,12 @@ jobs:
- uses: dsherret/rust-toolchain-file@v1
- run: cargo install --git https://github.com/dusk-network/cargo-dusk-analyzer
- run: cargo dusk-analyzer
- run: cargo dusk-analyzer --manifest-path standards/Cargo.toml

clippy:
name: Clippy check
needs: changes
if: needs.changes.outputs.legacy == 'true'
runs-on: core
steps:
- uses: actions/checkout@v4
Expand All @@ -25,9 +72,22 @@ jobs:

test:
name: Run Tests
needs: changes
if: needs.changes.outputs.legacy == 'true'
runs-on: core
steps:
- uses: actions/checkout@v4
- uses: dsherret/rust-toolchain-file@v1
- run: make keys
- run: make test

standards:
name: Standards CI
needs: changes
if: needs.changes.outputs.standards == 'true'
runs-on: core
steps:
- uses: actions/checkout@v4
- uses: dsherret/rust-toolchain-file@v1
- run: rustup target add wasm32-unknown-unknown
- run: make standards-ci
31 changes: 31 additions & 0 deletions .github/workflows/standards-hardening.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Standards Hardening

on:
workflow_dispatch:
inputs:
property_cases:
description: Property-test cases per invariant
required: false
default: "8192"
data_driver_cases:
description: Forge data-driver fuzz cases
required: false
default: "2048"
schedule:
- cron: "17 2 * * *"

jobs:
hardening:
name: Standards property and ABI fuzzing
runs-on: core
timeout-minutes: 240
env:
STANDARDS_PROPTEST_CASES: ${{ github.event.inputs.property_cases || '8192' }}
STANDARDS_PROPTEST_MAX_SHRINK_ITERS: "16384"
STANDARDS_DATA_DRIVER_FUZZ_CASES: ${{ github.event.inputs.data_driver_cases || '2048' }}
STANDARDS_DATA_DRIVER_FUZZ_SHRINK_ITERS: "4096"
steps:
- uses: actions/checkout@v4
- uses: dsherret/rust-toolchain-file@v1
- run: rustup target add wasm32-unknown-unknown
- run: make standards-hardening
Loading
Loading