Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
541c3a8
Observe multi-value returns on the denotation stop state.
Th0rgal Sep 22, 2026
4f3935d
Import one Solidity function into a covered CompilationModel.
Th0rgal Sep 22, 2026
f58aff9
chore: auto-refresh derived artifacts
github-actions[bot] Sep 22, 2026
d489c37
Hash the slice importer from the Verity checkout in downstream packages.
Th0rgal Sep 22, 2026
c8764d6
Record slice-import mutation checks against the smoke project.
Th0rgal Sep 22, 2026
7d60b32
Harden deterministic Solidity slice imports for Midnight delivery
Th0rgal Sep 23, 2026
38dc5cc
Run Solidity slice mutation regressions in CI
Th0rgal Sep 23, 2026
90be3be
Merge main into Solidity slice delivery branch
Th0rgal Sep 24, 2026
c134c2e
Validate Solidity slices against Denote and compiled EVM execution
Th0rgal Sep 24, 2026
37eb5ef
Record metamorphic slice divergences as campaign evidence
Th0rgal Sep 24, 2026
d9c4779
Remove the proof-only Solidity Vault importer
Th0rgal Sep 24, 2026
43db662
Pin the imported smoke model with a golden Repr snapshot
Th0rgal Sep 24, 2026
394d8b4
Rename the slice importer to Solidity import with idiomatic syntax
Th0rgal Sep 24, 2026
e92b995
Build imported models as values instead of generated Lean source
Th0rgal Sep 24, 2026
5d81ed4
Hash Quote.lean and Profile.lean into the Solidity import digest
Th0rgal Sep 24, 2026
28bcb8f
Import several Solidity functions into one model
Th0rgal Sep 24, 2026
83a1a6d
Document the Solidity importer in one place
Th0rgal Sep 24, 2026
cc88290
Simplify the repository root and documentation
Th0rgal Sep 24, 2026
db1de8e
Report per-function import status without implying compiler proofs
Th0rgal Sep 24, 2026
e4a8695
Build the status driver before the Solidity import mutation suite
Th0rgal Sep 24, 2026
2ef9c50
Name imported locals after Solidity and add proof helpers
Th0rgal Sep 24, 2026
9b472a8
Generate typed accessors for imported functions and storage
Th0rgal Sep 25, 2026
78afbe7
Remove dead, broken and unused code
Th0rgal Sep 25, 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
Empty file removed .gitconfig
Empty file.
6 changes: 2 additions & 4 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
* @Th0rgal

# Axioms and trust assumptions — any change weakens guarantees
AXIOMS.md @Th0rgal
TRUST_ASSUMPTIONS.md @Th0rgal
docs/AXIOMS.md @Th0rgal
docs/TRUST_ASSUMPTIONS.md @Th0rgal

# Lean proof files — ensure no sorry regressions
Verity/Proofs/ @Th0rgal
Expand All @@ -20,10 +20,8 @@ Verity/Specs/ @Th0rgal
Verity/Core.lean @Th0rgal

# Compiler trusted code — bugs here break soundness
Compiler/Specs.lean @Th0rgal
Compiler/IR.lean @Th0rgal
Compiler/Codegen.lean @Th0rgal
Compiler/Interpreter.lean @Th0rgal

# CI pipeline — governs what gets checked
.github/workflows/ @Th0rgal
Expand Down
7 changes: 3 additions & 4 deletions .github/ocr/rules.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"rules": [
{
"path": "{AUDIT.md,TRUST_ASSUMPTIONS.md,AXIOMS.md}",
"path": "docs/{TRUST_ASSUMPTIONS.md,AXIOMS.md}",
"rule": "Treat trust-boundary documentation changes as high-risk. Check whether a code/proof change weakens, broadens, or silently depends on assumptions, axioms, admitted facts, trusted external semantics, compiler equivalence, or audit exclusions. Flag any mismatch between these docs and changed Lean/Solidity/Yul/Cairo code. Prefer concrete line-linked findings; do not comment on wording unless it changes the trust model.",
"merge_system_rule": true
},
Expand Down Expand Up @@ -50,9 +50,8 @@
"**/*.sol",
"**/*.yul",
"**/*.cairo",
"AUDIT.md",
"TRUST_ASSUMPTIONS.md",
"AXIOMS.md",
"docs/TRUST_ASSUMPTIONS.md",
"docs/AXIOMS.md",
"README.md",
"docs/**/*.md",
".github/**/*"
Expand Down
4 changes: 2 additions & 2 deletions .github/scripts/ocr-router.js
Original file line number Diff line number Diff line change
Expand Up @@ -1345,7 +1345,7 @@ function countCategories(included, supportedFiles) {
function categorize(filePath) {
const base = path.posix.basename(filePath);
if (filePath.endsWith('.lean')) return 'lean';
if (['AUDIT.md', 'TRUST_ASSUMPTIONS.md', 'AXIOMS.md'].includes(base)) return 'trust-doc';
if (['TRUST_ASSUMPTIONS.md', 'AXIOMS.md'].includes(base)) return 'trust-doc';
if (filePath.startsWith('.github/')) return 'workflow-script';
if (/\.(sol|yul|cairo)$/.test(filePath)) return 'contract';
if (filePath === 'README.md' || (filePath.startsWith('docs/') && filePath.endsWith('.md'))) return 'doc';
Expand All @@ -1358,7 +1358,7 @@ function isSupported(filePath) {
const base = path.posix.basename(filePath);
return filePath.endsWith('.lean') ||
/\.(sol|yul|cairo)$/.test(filePath) ||
['AUDIT.md', 'TRUST_ASSUMPTIONS.md', 'AXIOMS.md', 'README.md'].includes(base) ||
['TRUST_ASSUMPTIONS.md', 'AXIOMS.md', 'README.md'].includes(base) ||
(filePath.startsWith('docs/') && filePath.endsWith('.md')) ||
filePath.startsWith('.github/') ||
/\.(py|sh|bash|js|ts|json|ya?ml|toml)$/.test(filePath);
Expand Down
57 changes: 48 additions & 9 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@ on:
- 'lean-toolchain'
- 'foundry.toml'
- 'Makefile'
- 'AXIOMS.md'
- 'README.md'
- 'TRUST_ASSUMPTIONS.md'
pull_request:
types: [opened, synchronize, reopened, closed]
paths:
Expand All @@ -56,9 +54,7 @@ on:
- 'lean-toolchain'
- 'foundry.toml'
- 'Makefile'
- 'AXIOMS.md'
- 'README.md'
- 'TRUST_ASSUMPTIONS.md'
workflow_dispatch:
inputs:
clean_build:
Expand Down Expand Up @@ -231,6 +227,11 @@ jobs:
- 'packages/**'
- 'lakefile.lean'
- 'lake-manifest.json'
- 'scripts/solidity_differential/**'
- 'scripts/solidity_import_differential.py'
- 'scripts/check_solidity_differential.sh'
- 'scripts/solidity_import_mutations.py'
- 'scripts/setup_solc_import.py'
- 'lean-toolchain'
compiler:
- '.github/actions/**'
Expand All @@ -255,6 +256,11 @@ jobs:
- 'scripts/property_utils.py'
- 'lakefile.lean'
- 'lake-manifest.json'
- 'scripts/solidity_differential/**'
- 'scripts/solidity_import_differential.py'
- 'scripts/check_solidity_differential.sh'
- 'scripts/solidity_import_mutations.py'
- 'scripts/setup_solc_import.py'
- 'lean-toolchain'
- 'foundry.toml'
- name: Resolve effective change flags
Expand Down Expand Up @@ -391,11 +397,6 @@ jobs:
disable-lake-cache-restore: ${{ env.VERIFY_DISABLE_LAKE_CACHE_RESTORE }}
cache-primary-key: lake-${{ runner.os }}-${{ hashFiles('lean-toolchain') }}-${{ hashFiles('lakefile.lean') }}-${{ hashFiles('lake-manifest.json') }}-${{ github.run_id }}

- name: Setup pinned solc for Lean Solidity importer
uses: ./.github/actions/setup-solc
with:
destination: .lake/solidity-import/solc

- name: Rebuild cached local Lean modules
run: |
rm -rf .lake/build/lib/lean/Verity .lake/build/ir/Verity
Expand Down Expand Up @@ -424,6 +425,12 @@ jobs:
exit "${build_status}"
fi

- name: Check Solidity slice imports and mutation regressions
run: |
python3 scripts/setup_solc_import.py
lake build SolidityImportSmoke
python3 scripts/solidity_import_mutations.py

- name: Check storage layout audit artifacts (#1897)
run: make verify-storage-layout

Expand Down Expand Up @@ -1228,6 +1235,38 @@ jobs:
if: steps.local-restore-compiler-workspace.outcome != 'success'
run: tar -xf lean-workspace-compiler-build.tar

- name: Install Foundry for Solidity slice comparisons
uses: foundry-rs/foundry-toolchain@v1
with:
version: v1.5.0

- name: Compare Solidity, Denote and compiled models
timeout-minutes: 10
run: |
scripts/check_solidity_differential.sh --config Contracts/SolidityImportSmoke/differential.json --output .lake/import-differential/smoke --cases 128 --seed 2438
scripts/check_solidity_differential.sh --config Contracts/SolidityImportSmoke/differential-loss.json --output .lake/import-differential/loss --cases 64 --seed 2438
scripts/check_solidity_differential.sh --programs 5 --cases 16 --seed 2438 --output .lake/import-differential/programs

- name: Extended Solidity slice campaigns
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
timeout-minutes: 60
run: |
scripts/check_solidity_differential.sh --config Contracts/SolidityImportSmoke/differential.json --output .lake/import-differential/nightly-inputs --cases 2048 --seed "$GITHUB_RUN_NUMBER"
scripts/check_solidity_differential.sh --programs 20 --cases 64 --seed "$GITHUB_RUN_NUMBER" --output .lake/import-differential/nightly-programs
scripts/check_solidity_differential.sh --mutations --output .lake/import-differential/mutants

- name: Archive Solidity slice comparison evidence
if: always()
uses: actions/upload-artifact@v7
with:
name: solidity-import-differential
path: |
.lake/import-differential/**
!.lake/import-differential/**/.lake/build/**
!.lake/import-differential/**/.lake/packages/**
include-hidden-files: true
retention-days: 14

- name: Build compiler CLI regression executable
run: stdbuf -oL -eL lake build compiler-main-test

Expand Down
5 changes: 0 additions & 5 deletions .profile

This file was deleted.

Loading
Loading