-
Notifications
You must be signed in to change notification settings - Fork 4
Comparing changes
Open a pull request
base repository: fe-lang/bountiful
base: master
head repository: fe-lang/bountiful
compare: revamp
- 19 commits
- 123 files changed
- 2 contributors
Commits on Feb 27, 2026
-
Migrate Bountiful from Fe 0.20.0-alpha to Fe 26.0.0-alpha.8
Replace the old multi-file ingot structure (13 .fe files) with a single bountiful.fe using the new effects-based contract model. The 6 game variants and trait system are consolidated into one Game contract due to compiler limitations (StorageMap structs can't be passed as values, tuple ABI arity cap). Key changes: - Contracts use msg/recv blocks instead of pub fn with Context - Storage uses StorageMap effects instead of inline Map fields - Cross-contract calls use Call effect instead of stub contracts - Board stored in StorageMap<u256,u256> instead of Array<u256,16> - Reverts replaced with error code returns - 8 Fe-native tests (fe test) replace the old Hardhat test suite Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 7e990f2 - Browse repository at this point
Copy the full SHA 7e990f2View commit details -
Restructure bountiful.fe into multi-file ingot and document Fe compil…
…er limitations Split the single bountiful.fe into a proper Fe ingot structure: - src/lib.fe: shared error codes, constants, helpers, cross-contract msg interfaces - src/game.fe: Game contract (15-puzzle challenge) - src/registry.fe: BountyRegistry contract (bounty platform) The standalone bountiful.fe is kept for running tests (fe test only discovers #[test] in the root module, and cross-module contract refs cause an ICE). Add LIMITATIONS.md documenting 6 Fe compiler limitations for GitHub issues. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 6357b8b - Browse repository at this point
Copy the full SHA 6357b8bView commit details -
Add 3 new game variants to increase Fe compiler attack surface
GameBitboard (bitwise u256 board), Game2D (nested 2D arrays), and GameEnum (enum/match/struct impl) — exercises distinct Fe language features. All 14 tests pass. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for b1ef3b4 - Browse repository at this point
Copy the full SHA b1ef3b4View commit details -
Split bountiful.fe monolith into ingot modules
Delete the 1093-line monolith and activate the child module files in src/. Tests now live in lib.fe and import contracts from child modules via `use ingot::*`. All 14 tests pass. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 2a6c5b1 - Browse repository at this point
Copy the full SHA 2a6c5b1View commit details -
Configuration menu - View commit details
-
Copy full SHA for ba61752 - Browse repository at this point
Copy the full SHA ba61752View commit details -
Add comprehensive registry tests and fix admin address bug
Port 7 new tests from the old JS test suite: non-admin register, admin register+check, remove unlocked, remove while locked, claim without lock, claim unregistered, claim unsolved. Fix critical bug: all tests used args: (0,) as admin_inner, but ctx.caller() in Fe test EVM is the test contract's address (not Address::ZERO). Use evm.address().inner to correctly set admin. This also fixes test_full_bounty_flow which was silently a no-op. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for d90016a - Browse repository at this point
Copy the full SHA d90016aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0ab37c3 - Browse repository at this point
Copy the full SHA 0ab37c3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 27e7035 - Browse repository at this point
Copy the full SHA 27e7035View commit details -
Configuration menu - View commit details
-
Copy full SHA for b83ba45 - Browse repository at this point
Copy the full SHA b83ba45View commit details -
Remove test_winning_value workaround from lib.fe
The workaround test was needed because the Fe test runner only checked lib.fe for #[test] functions. This has been fixed upstream, so the workaround can be removed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 2663fc7 - Browse repository at this point
Copy the full SHA 2663fc7View commit details -
Configuration menu - View commit details
-
Copy full SHA for c88d825 - Browse repository at this point
Copy the full SHA c88d825View commit details
Commits on Feb 28, 2026
-
Split bountiful into a workspace with 3 ingots
Restructure the flat single-ingot project into a workspace with dedicated ingots for better separation of concerns: shared — error codes, constants, cross-contract msg interfaces, game_util helpers, DummyLockValidator test utility registry — BountyRegistry contract, DummyGame test utility games — Game, Game2D, GameBitboard, GameEnum contracts Dependency graph (no cycles): shared ← registry shared ← games DummyLockValidator lives in shared (not games) so both registry and games tests can deploy it without creating a circular dependency. DummyGame in registry replaces the real Game contract in registry tests, eliminating the games→registry→games cycle. All 26 tests pass (shared: 1, registry: 14, games: 11). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>Configuration menu - View commit details
-
Copy full SHA for 5100ea6 - Browse repository at this point
Copy the full SHA 5100ea6View commit details -
Add Foundry e2e tests for BountyRegistry and Game contracts
Migrate e2e testing from Hardhat to Foundry to cover scenarios Fe's test runner cannot: block advancement (vm.roll), ETH value transfers, and multi-account authorization (vm.prank). 21 tests across two suites. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 6631f5d - Browse repository at this point
Copy the full SHA 6631f5dView commit details -
Add Foundry deployment script for Sepolia
Deploys BountyRegistry + Game, registers the game as a challenge, and initializes a solvable 15-puzzle board. Configurable lock deposit via LOCK_DEPOSIT env var (default 0.01 ETH). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 9a21a0e - Browse repository at this point
Copy the full SHA 9a21a0eView commit details -
Replace ERR_* constants with Error enum and sequential codes
Introduce a shared Error enum with to_int() for type-safe, sequential error codes (1-8) instead of scattered constants with gaps. Update all contracts and Foundry test constants. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 72b971b - Browse repository at this point
Copy the full SHA 72b971bView commit details -
Remove old Hardhat setup and JS tests
Drop hardhat.config.js, package.json, old JS test files, and Hardhat deployment scripts. Update .gitignore for Foundry build artifacts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for d4eb1bd - Browse repository at this point
Copy the full SHA d4eb1bdView commit details -
Replace IGame with ISolvable as the only shared interface
IGame pretended to be universal but didn't match all game variants (game_2d has a different getBoard signature). The registry only needs isSolved(), so that's the shared interface now. Tests and deploy script define their own local IGame for variant-specific methods. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 4398e39 - Browse repository at this point
Copy the full SHA 4398e39View commit details -
Use bool return types for IsSolved, IsLocked, and IsOpenChallenge
These APIs answer yes/no questions and should return bool instead of u256. Also changes open_challenges map to StorageMap<Address, bool>. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 057106a - Browse repository at this point
Copy the full SHA 057106aView commit details
Commits on Mar 1, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 3fc668b - Browse repository at this point
Copy the full SHA 3fc668bView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff master...revamp