| type | Feature |
|---|---|
| title | Add a read view returning the current count of active unique investors |
| labels | type:feature, area:funding, stack:rust, stack:soroban, MAYBE REWARDED, GRANTFOX OSS, OFFICIAL CAMPAIGN, Official Campaign | FWC26 |
| assignees |
Callers must currently page the whole investor set to learn how many unique investors an escrow has. This issue adds an O(1) get_investor_count read view backed by the existing unique-investor counter.
- Repository scope: Liquifact/Liquifact-contracts only.
- Add
get_investor_count() -> u32returning the stored unique-investor count without iterating. - Read-only; must not panic before any funding (return 0).
- Reuse the counter already maintained during fund; do not recompute.
- Fork the repo and create a branch
git checkout -b feature/funding-02-investor-count- Implement changes
- Write code in:
escrow/src/lib.rs. - Write comprehensive tests in:
escrow/src/test/— zero before funding, increments once per unique investor, stable across repeat deposits.
- Write code in:
- Test and commit
- Run
cargo fmt,cargo clippy --all-targets -- -D warnings, andcargo test. - Cover edge cases: no investors, repeat deposit by same investor, at the unique cap.
- Include the full test output in the PR description.
feat(funding): add get_investor_count view
- Minimum 95 percent test coverage for impacted modules.
- Clear, reviewer-focused documentation.
- Timeframe: 96 hours.
- 💬 Join the Liquifact community on Discord: https://discord.gg/JrGPH4V3
- ⭐ This is a GrantFox OSS / Official Campaign task and may be rewarded. When your PR is merged you'll be prompted to rate the project — a 5-star rating is much appreciated. ++++++
type: Feature title: "Add boundary tests for the lower-only protocol-fee setter" labels: type:test, area:fees, stack:rust, stack:soroban, MAYBE REWARDED, GRANTFOX OSS, OFFICIAL CAMPAIGN, Official Campaign | FWC26 assignees: ''
The lower-only fee setter must accept a decrease and reject any increase, but the boundary is thinly tested. This issue adds focused tests.
- Repository scope: Liquifact/Liquifact-contracts only.
- Add tests asserting: setting a strictly lower bps succeeds; equal bps and any higher bps are rejected with the typed error; non-admin is rejected.
- Assert exact typed
EscrowErrorcodes. - Do not change contract logic unless a defect is found (note it).
- Fork the repo and create a branch
git checkout -b test/fees-01-lower-only- Implement changes
- Write comprehensive tests in:
escrow/src/test/.
- Write comprehensive tests in:
- Test and commit
- Run
cargo fmt,cargo clippy --all-targets -- -D warnings, andcargo test. - Cover edge cases: equal bps rejected, one-below accepted, non-admin rejected.
- Include the full test output in the PR description.
test(fees): cover lower-only fee setter boundary
- Minimum 95 percent test coverage for impacted modules.
- Clear, reviewer-focused documentation.
- Timeframe: 96 hours.
- 💬 Join the Liquifact community on Discord: https://discord.gg/JrGPH4V3
- ⭐ This is a GrantFox OSS / Official Campaign task and may be rewarded. When your PR is merged you'll be prompted to rate the project — a 5-star rating is much appreciated. ++++++
type: Feature title: "Extract the maturity-reached check into a shared helper" labels: type:refactor, area:settlement, stack:rust, stack:soroban, MAYBE REWARDED, GRANTFOX OSS, OFFICIAL CAMPAIGN, Official Campaign | FWC26 assignees: ''
Several entrypoints repeat the same 'has maturity been reached' ledger-time comparison inline. This issue extracts a maturity_reached helper reused by all of them.
- Repository scope: Liquifact/Liquifact-contracts only.
- Add a private helper computing maturity-reached from ledger time and route every gate through it.
- Behaviour unchanged; same inclusive/exclusive boundary as today.
- No ABI change.
- Fork the repo and create a branch
git checkout -b refactor/settlement-01-maturity-helper- Implement changes
- Write code in:
escrow/src/lib.rs. - Write comprehensive tests in:
escrow/src/test/— just-before, exactly-at, just-after maturity.
- Write code in:
- Test and commit
- Run
cargo fmt,cargo clippy --all-targets -- -D warnings, andcargo test. - Cover edge cases: exact maturity ledger, off-by-one boundary.
- Include the full test output in the PR description.
refactor(settlement): extract maturity_reached helper
- Minimum 95 percent test coverage for impacted modules.
- Clear, reviewer-focused documentation.
- Timeframe: 96 hours.
- 💬 Join the Liquifact community on Discord: https://discord.gg/JrGPH4V3
- ⭐ This is a GrantFox OSS / Official Campaign task and may be rewarded. When your PR is merged you'll be prompted to rate the project — a 5-star rating is much appreciated. ++++++
type: Feature title: "Document the legal-hold clear-delay bound and its rationale" labels: type:docs, area:compliance, stack:rust, stack:soroban, MAYBE REWARDED, GRANTFOX OSS, OFFICIAL CAMPAIGN, Official Campaign | FWC26 assignees: ''
The legal-hold clear delay is bounded at init to prevent an unclearable hold, but the bound and its reasoning are undocumented. This issue documents them.
- Repository scope: Liquifact/Liquifact-contracts only.
- Add
docs/legal-hold.mddescribing the clear-delay parameter, its accepted range, the failure it prevents, and how the hold interacts with settlement. - Cross-reference the relevant entrypoints with a worked example.
- Keep it accurate — read the init validation first.
- Fork the repo and create a branch
git checkout -b docs/compliance-01-legal-hold- Implement changes
- Add documentation: create
docs/legal-hold.md.
- Add documentation: create
- Test and commit
- Run
cargo fmtandcargo test. - Cover edge cases: n/a — verify the bound against the init code.
- Include the full test output in the PR description.
docs(compliance): document legal-hold clear-delay bound
- Minimum 95 percent test coverage for impacted modules.
- Clear, reviewer-focused documentation.
- Timeframe: 96 hours.
- 💬 Join the Liquifact community on Discord: https://discord.gg/JrGPH4V3
- ⭐ This is a GrantFox OSS / Official Campaign task and may be rewarded. When your PR is merged you'll be prompted to rate the project — a 5-star rating is much appreciated.