Skip to content

[#1] Contract Repo Setup#9

Merged
realproject7 merged 3 commits into
mainfrom
task/1-contract-repo-setup
Mar 13, 2026
Merged

[#1] Contract Repo Setup#9
realproject7 merged 3 commits into
mainfrom
task/1-contract-repo-setup

Conversation

@realproject7

Copy link
Copy Markdown
Owner

Foundry project (Solc 0.8.28, Base RPCs). IMCV2_Bond + IERC20 interfaces. Placeholder StoryFactory. Fixes #1

Set up Foundry project targeting Solc 0.8.28 with Base/Base Sepolia
RPC endpoints. Add IMCV2_Bond interface (createToken, updateBondCreator,
mint, burn, getReserveForToken, claimRoyalties) matching the deployed
Mint Club V2 Bond at 0xc5a076...FAa27. Add minimal IERC20 interface.
Add placeholder StoryFactory with BOND and PLOT_TOKEN immutables.

Fixes #1

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

@project7-interns project7-interns left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: REQUEST CHANGES

Summary

The PR is close to the requested repo scaffold, but it is not merge-ready because the required GitHub Actions check is failing. The failure is a real formatting issue in IMCV2_Bond.sol, so the merge checklist item forge build succeeds is not enough on its own here.

Findings

  • [medium] CI is red because forge fmt --check fails on the multiline function signatures in src/interfaces/IMCV2_Bond.sol. Until this is reformatted to Foundry's expected style, the PR does not pass the repo's required checks.
    • File: src/interfaces/IMCV2_Bond.sol:40
    • Suggestion: run forge fmt (or manually match its output) so the interface passes the Foundry project workflow.

Decision

Request changes because the PR currently fails required CI, so it is not safe to approve yet even though the overall scaffold and interface coverage look directionally correct.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

@project7-interns project7-interns left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: APPROVE

Summary

The formatting issue is fixed and the required Foundry CI checks are now passing. The PR provides the requested repo scaffold, Base RPC configuration, external interfaces, and placeholder factory contract in a focused setup change.

Findings

  • None.

Decision

Approve because the prior CI blocker is resolved and the PR now satisfies the issue #1 merge criteria.

@project7-interns project7-interns left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

T2b Review: REQUEST CHANGES

Blocking: IMCV2_Bond interface does not match deployed contract

Verified against the deployed MCV2_Bond on Base (0xc5a076...FAa27). Multiple signature mismatches that would cause on-chain reverts:

a) createToken — Real contract uses struct params (TokenParams, BondParams), not flattened individual params. The PR also adds a non-existent creatorAddress param (real contract uses msg.sender), uses uint256 instead of uint128, and swaps royalty/reserveToken order.

b) mint — Missing returns (uint256) (reserve amount spent).

c) burn — Missing returns (uint256) (refund amount).

d) getReserveForToken — Missing second return value. Real: returns (uint256 reserveAmount, uint256 royalty).

e) claimRoyalties — Param should be address reserveToken, not address token. NatSpec is misleading.

f) updateBondCreator — Minor: param name newCreator should be creator to match deployed contract.

Blocking: CI failing

forge fmt --check fails. Run forge fmt and push.

Required actions

  1. Fix all IMCV2_Bond signatures to match the deployed contract (struct-based createToken is critical)
  2. Run forge fmt

Update interface to match actual Mint Club V2 Bond (Steemhunt):
- createToken uses (TokenParams, BondParams) struct params
- mint/burn return uint256
- getReserveForToken returns (reserveAmount, royalty)
- Add getRefundForTokens
- claimRoyalties takes reserveToken address (not token)
- Add TokenParams and BondParams struct definitions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

@project7-interns project7-interns left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: APPROVE

Summary

The follow-up fix resolves the remaining contract interface concern: IMCV2_Bond now matches the deployed Mint Club V2 Bond shape closely enough for the setup ticket, including struct-based createToken, corrected return values, and the additional quote helper. Foundry CI is green on the updated head commit.

Findings

  • None.

Decision

Approve because the prior interface/CI blockers are resolved and the PR now satisfies the contract repo setup merge criteria.

@project7-interns project7-interns left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

T2b Review: APPROVE

All previous blockers resolved:

  1. IMCV2_Bond interface — All signatures now match deployed contract exactly: struct-based createToken, mint/burn with return values, getReserveForToken dual return, claimRoyalties(reserveToken).
  2. CIforge build + forge fmt --check both passing.

Foundry scaffold is clean. IERC20 and placeholder StoryFactory compile correctly.

@realproject7 realproject7 merged commit dcc1a04 into main Mar 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[P2-1] Contract Repo Setup

2 participants