Skip to content

ci: wire BuildPointers into build.sh/prelude and pin git-clean SHA - #171

Open
thedavidmeister wants to merge 4 commits into
mainfrom
2026-06-17-issue-7-9-wire-build-pointers
Open

ci: wire BuildPointers into build.sh/prelude and pin git-clean SHA#171
thedavidmeister wants to merge 4 commits into
mainfrom
2026-06-17-issue-7-9-wire-build-pointers

Conversation

@thedavidmeister

@thedavidmeister thedavidmeister commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Closes #7, #9

What

Issue #7 (build automation gap): script/build.sh and the erc4626-words-prelude nix task only ran BuildAuthoringMeta.sol + rain meta build, leaving BuildPointers.sol as a separate human-memory step. This makes it possible for ERC4626Words.pointers.sol (function-pointer tables, PARSE_META, DESCRIBED_BY_META_HASH) to silently drift after any opcode or word change — ./script/build.sh finishes clean and CI's git diff --exit-code never sees the stale pointers.

Fix: add forge script --silent ./script/BuildPointers.sol + forge fmt src/generated to the end of both script/build.sh (inside the nix develop block) and the erc4626-words-prelude task body in flake.nix. The two code paths are now exactly equivalent, and one canonical command regenerates every committed artifact.

Issue #9 (unpinned @main reference): git-clean.yaml calls the reusable workflow via @main, so any breaking change in rainix's rainix-copy-artifacts.yaml silently takes effect. Pinned to the current rainix main SHA (f6bca081). Future intentional bumps require an explicit PR.

Test plan

  • ./script/build.sh with a dev that previously had to run forge script BuildPointers.sol separately — one command regenerates both meta and pointers, git diff --exit-code is clean
  • Mutation: edit a word in ERC4626Extern.sol without running the script → git diff --exit-code fails (pointers drift)

Co-Authored-By: Claude noreply@anthropic.com

Summary by CodeRabbit

  • Chores

    • Updated the build pipeline to use a fixed workflow version for more consistent CI runs.
    • Added an extra generation/formatting step during the build process to keep generated code up to date and consistently formatted.
  • Documentation

    • Clarified build script comments to better describe regenerated artifacts and required prerequisites.

@thedavidmeister thedavidmeister self-assigned this Jun 17, 2026
@coderabbitai

coderabbitai Bot commented Jun 17, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 17a6ab55-7366-4334-9af7-54f82ade867c

📥 Commits

Reviewing files that changed from the base of the PR and between 7f41f91 and 34b81f7.

📒 Files selected for processing (3)
  • .github/workflows/git-clean.yaml
  • flake.nix
  • script/build.sh

Walkthrough

This PR updates the erc4626-words-prelude flake task to invoke BuildPointers.sol and forge fmt after meta generation, clarifies build.sh header comments about regeneration scope, and pins the git-clean workflow's reusable workflow reference to a specific commit SHA.

Changes

Build automation and pointers regeneration

Layer / File(s) Summary
Pointers regeneration wired into prelude task
flake.nix, script/build.sh
The prelude derivation now runs forge script ./script/BuildPointers.sol and forge fmt src/generated after meta generation; build.sh header comments are updated to describe the expanded regeneration scope.
Pinned CI workflow reference
.github/workflows/git-clean.yaml
The copy-artifacts job's reusable workflow reference is pinned to a specific commit SHA instead of tracking main.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The diff appears to update flake.nix, but script/build.sh is comment-only, so the required canonical build path is not fully wired. Add the BuildPointers and forge fmt steps to script/build.sh inside the nix develop block so both build paths regenerate pointers.
Out of Scope Changes check ⚠️ Warning The git-clean reusable-workflow SHA pin is a separate maintenance change not requested by #7, so the PR includes unrelated scope. Split the workflow pin into a separate PR or link the issue that requests it, and keep this PR focused on pointer regeneration.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the CI/build automation change and the git-clean workflow pinning.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 2026-06-17-issue-7-9-wire-build-pointers

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@thedavidmeister

Copy link
Copy Markdown
Contributor Author

Producer note: PR close-candidate — queued for human close review. Both linked issues (#7, #9) are already CLOSED, and the remaining live scope (wiring BuildPointers into build.sh) is superseded by #220, which was just reworked onto current main per its rework note (single-file build.sh change, Closes #13). Resolving this branch's conflicts would duplicate #220's change; recommending close instead. Not closing myself — human decision.

@thedavidmeister

Copy link
Copy Markdown
Contributor Author

Producer note (assistant, 2026-07-05): CONFLICTING (stale vs the #227-era build.sh) and pre-dates QA-GUIDE.md (no §8 evidence block) — not presentable. This PR overlaps #220's rework territory: BOTH wire BuildPointers into build.sh (this one also pins the git-clean SHA — its unique remainder; #220's rework note at #220 (comment) carries the current-main recipe). CONSOLIDATE: one PR implements the build unification against current main (keep the prelude line, add the pointers+fmt step via the repo flake, honest linkage to the OPEN issues only — index here shows just #7 despite the 'Closes #7, #9' prose), the other closes as superseded. QA evidence block mandatory.

build.sh conflicted: this branch inlined the build steps (adding
BuildPointers + forge fmt), main delegated build.sh to the
erc4626-words-prelude nix task. Resolved to main's delegating body —
this branch's flake.nix hunk (merged cleanly) wires BuildPointers and
forge fmt into that same prelude task, so the #7 automation intent is
preserved through the task.

Co-Authored-By: Claude <noreply@anthropic.com>
@thedavidmeister thedavidmeister added the human:needs-work Human reviewer: needs rework label Jul 6, 2026
@thedavidmeister thedavidmeister added ai:needs-work Needs rework — the producer's inbox (vetter verdict or human ruling) and removed human:needs-work Human reviewer: needs rework labels Jul 30, 2026
@thedavidmeister

Copy link
Copy Markdown
Contributor Author

🤖 ai:vetter
vet-protocol 4
lens source@34b81f74aca89e7020e9c6f771b653e3a61ce44d + audit skill invoked at pr:171
Reviewed 34b81f7: needs-work — Closes #7 (already closed) incompletely: the issue's ask to delete the separate 'Regenerate pointers' recipe is undone (.claude/CLAUDE.md:27 and README.md:84-98 still teach the manual step build.sh now covers); git-clean.yaml:5 SHA-pins the rainix reusable against the org @main convention (sibling rainix-sol.yaml:5 uses @main) — pin ask (#9) should be settled as @main; QA evidence block missing.
cost 168 — build wiring and workflow pin config

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai:needs-work Needs rework — the producer's inbox (vetter verdict or human ruling)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pointers regeneration is a manual out-of-band step the CI artifact hook never runs

1 participant