Repository navigation
Proposal: CI/CD Phase 1 — automated checks on every PR to develop #74
Replies: 2 comments
|
Started on this — first PR is up as a draft: #103 It's the groundwork only, no workflow yet. Four PRs planned:
Draft rather than ready because there's no CI to run against it yet — that arrives in PR 2 — so everything in it is verified locally and nothing more. Felt worth being upfront about. Two things worth surfacing from getting PR 1 working, both of which say something about why this is worth doing:
Questions, mainly for @umermjd11
And the ruff question from the original post still stands — narrow rule set, cleanup PR before it goes blocking. Roughly 85% auto-fixable. No rush on any of this; #103 is a draft and I'm not blocked. |
Status update (Nov 8)Phase 1 is done. Every check this proposal asked for runs on
The four-PR plan:
Your questions from Aug 26. Nobody replied in the thread, sorry about that.
@Santiagocetran, do you still plan to do PRs 3 and 4? If so, I'll open one issue covering them plus Q3 and Q4 so they're tracked, and then close this Discussion as resolved for Phase 1. If not, the issue can stay unassigned until someone picks it up. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Proposal: CI/CD Phase 1 — automated checks on every PR to
developRevised after actually running every proposed check against
develop. Findings and adjustments are in "What we learned by testing it" below.Why this matters
DevNet is open source and takes contributions continuously. Right now every check is manual and documented only in prose (
CLAUDE.md), which means:The good news: the checks already exist and they are fast. Measured on
developtoday — 162 Solidity tests in ~7s, 32 Hardhat tests in ~3s, 259 Python tests in ~30s. The whole gate is roughly a minute of compute per PR. We are not proposing new infrastructure; we are proposing to stop running the existing tests by hand.This proposal covers Phase 1 only: one workflow that runs when a PR is opened or updated against
develop. Heavier work is deliberately deferred (see Out of scope).Phase 1 checks
Every check below is something a contributor is already expected to run locally.
dinclibehaves, using the fast suite only (the live-chain integration suite is excluded — see Out of scope)Documentation/don't rot as the doc tree gets reorganizedCONTRIBUTING.mdalready claims; not blocking yet, see belowWhat we learned by testing it
We ran all of these against
developbefore proposing them. Three things worth reporting:1. Three setup steps are non-obvious, and skipping any one makes CI fail for reasons unrelated to the contributor's code. The Solidity dependencies are git submodules; one test suite needs a Node package installed first (without it, it fails intermittently); and the Python tests need PyTorch, which isn't declared as a dependency anywhere. They're now explicit prerequisites rather than surprises — and that last one is telling: our Python tests pass locally today only because PyTorch happens to be installed globally on one contributor's machine. Exactly the class of problem CI exists to expose.
2. Two of the checks aren't ready to block merges yet, so they go in as advisory.
Both are valuable. Both should land as informational now and be promoted to blocking once the cleanup lands. It also found a genuine latent bug (stray invalid characters in
dincli/cli/system.py) — evidence the linter earns its keep.3. One check was dropped as redundant. A separate upgrade-validation job is unnecessary — the main Solidity test run already covers it.
The doc-link check, for reference, finds exactly 1 broken link out of 155 today (
Documentation/README.md→technical/ARCHITECTURE.md), which we'd fix in the same PR.Recommendation on the trial-period question
Rather than running everything informationally for a while, split by readiness:
The principle either way: a gate is only worth having if passing it means something.
Three details worth agreeing on now
.gitignoredoesn't cover the artifacts CI will generate, andCLAUDE.mdhas drifted from the real Python version requirement.Out of scope (future discussion)
tests/dincli/end-to-end suite — real value, but needs Docker, IPFS, and a running chain. Belongs on a nightly schedule, not a PR gate.develop→mainpromotion or deployment automation. The project is devnet-only; Phase 1 protectsdevelopand nothing else.Open question
Any objection to adding a narrow
ruffconfig? To be clear about scope: narrow means an explicit small rule set, not the linter's defaults, plus a cleanup PR landing before the check goes blocking. Roughly 85% of the current findings are auto-fixable.cc @umermjd11 @robertocarlous @abrahamnash
All reactions