Repository navigation
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
CI never runs the tests/dincli/ full-GI integration suite. The Python job runs pytest -m "not integration" -q (.github/workflows/ci.yml:136-137), and tests/test_integration_marker.py checks that exactly that directory is excluded. As a result the suite has drifted from the foundry contracts without anyone noticing. On develop @ 740a613 it can't pass:
- Phase 1: it asserts a
proxyAdminkey, but both deploy scripts now write per-contractproxyAdmin*keys (tests/dincli/test_01_platform.py:135-137,164). - Task contracts: they are deployed from hardhat artifacts (
tests/dincli/constants.py:50). Those are the pre-foundry contracts, with no commit-reveal, rewards, seed lock or encrypted test data. - The GI phase: it never funds the reward pool, registers auditor keys, or runs the three reveal phases. It also asserts
GIendedas "23" (it's 25).
task-plan-051026-2 (PR #229, pending review) fixes the suite so it runs a complete GI on the foundry contracts. This issue tracks the follow-up: once the suite passes, run it in CI so it can't drift again.
Proposal
A separate integration job in ci.yml, kept apart from the fast Python job:
- Triggers: PRs and pushes to
developthat touchfoundry/src/**,foundry/script/**,dincli/**ortests/dincli/**. - Setup:
- Foundry, with
forge buildplusnpm ciinfoundry/. - Anvil via
foundry/anvil.sh. Its--block-time 2is what the seed-lock polling relies on. - An IPFS (kubo) daemon.
- Docker, for the sandboxed
din-workercontainers thattrain-lms,evaluateandaggregate-*spawn. - Python 3.12 with
pip install -e ..
- Foundry, with
- Run:
pytest tests/dincli/ -v -x -m integration --tb=short. Upload the dincli logs and the anvil output as artifacts when it fails. - Rollout: non-blocking (
continue-on-error) at first. Make it a required check once it has been stable for a couple of weeks. - Cost: a full GI trains 9 clients and runs auditor and aggregator jobs in containers. Measure the runtime once. If it's too slow per PR, run it on
pushtodevelopand nightly instead, and run it on PRs only when a label is set.
Acceptance
- The
integrationjob runs the full-GI suite on anvil against the foundry contracts, throughGIended. - Failures upload logs.
Developer/CONTRIBUTING.mdandDocumentation/technical/testing/dincli-testing-guide.mddescribe the job and how to reproduce it locally.
Depends on
- task-plan-051026-2 (PR #229) TP-4: the suite has to pass a complete GI first.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Activity
umeradl commentedon Oct 8, 2026
Groundwork landed: PR No. 213 (
7eb558dondevelop, merged 2026-10-08)This doesn't close this issue:
ci.ymlis unchanged and there is still nointegrationjob. But the harness this job will run on is now in place:DIN_TEST_ISOLATED=1): explicit scratch and results directories (DIN_TEST_TMPDIR,DIN_TEST_RESULTS_DIR), local-only endpoints, and a filtered subprocess environment. No developer.envis read.configure-demoandconnect-demo-wallet. The checked-inaccounts.jsonis validated and left untouched.not integrationjob.Documentation/technical/testing/dincli-testing-guide.mdnow has a "CI smoke groundwork" section.Follow-ups from the PR No. 213 review that fall under this issue (checked on
develop@7eb558d):test_02_task_contracts.py(3),test_03_registration.py(5) andtest_04_gi.py(8) still callsystem connect-wallet, 16 call sites in total.connect-walletrejects the demo wallets that bootstrap now creates, so the suite fails pasttest_01until these move toconnect-demo-wallet. This probably fits with the TP-4 suite rework from task-plan-051026-2.tests/dincli/conftest.pyinlines the same flags asfoundry/anvil.sh(--block-time 2,--code-size-limit 4294967295, …). The proposal above starts Anvil viaanvil.sh, so pick one source of truth before the job lands.HOME/XDG_CACHE_HOME, so the Hardhat and svm compiler caches start empty every run. The job will need network access, and will be slower, unless the runner pre-seeds or caches them.sharmis-tp commentedon Oct 10, 2026
I'd like to take this, building on the isolated harness that landed in PR #213. My plan is a separate non-blocking
integrationjob in ci.yml with the proposed path filters that installs Foundry, Kubo, Docker and Python 3.12, runs the suite with DIN_TEST_ISOLATED=1, uploads the dincli and anvil logs on failure, plus the doc updates in Developer/CONTRIBUTING.md and the dincli testing guide. Could you confirm nobody on the team has started it and assign it to me? The PR would target develop.umeradl commentedon Oct 11, 2026
Thanks @sharmis-tp. Nobody has started the CI job, so it's yours. I'm assigning you now.
One thing about the order of work: the suite itself doesn't pass yet. Getting it to run a complete GI on the foundry contracts is task_061026_21 (TP-4 of task-plan-051026-2). That's in progress and should land around Oct 17. Until then,
tests/dincli/still deploys the task contracts from hardhat artifacts and still callssystem connect-walletin 16 places, so it fails aftertest_01.So:
DIN_TEST_ISOLATED=1, log upload and the doc updates. Keep itcontinue-on-error: true, and expect it to fail pasttest_01until task_061026_21 merges. Please leavetests/dincli/test_0*.pyalone in your PR, because that rework is part of task_061026_21 and the two would conflict.foundry/anvil.shor the isolated branch intests/dincli/conftest.py. For the compiler cache, cache the svm/Hardhat compiler caches on the runner, or show they aren't needed once the suite stops using hardhat artifacts.developplus nightly.ci: run the tests/dincli integration suite in a non-blocking job
Merge pull request #242 from sharmis-tp/ci/integration-job
umeradl commentedon Oct 29, 2026
Rollout decision (2026-10-29): the full-GI job will not become a required check. A full GI trains 9 clients and runs auditor and aggregator containers, which is too heavy to run on every commit or push. PR No. 301 moves it out of
ci.ymlinto a manual-only workflow,.github/workflows/full-gi.yml(workflow_dispatch), which maintainers run on demand, for example before merging a change to the GI flow. The Acceptance item about required-check rollout is replaced by this.Where the suite stands (found while looking at PR No. 297, handed to task_061026_21 Part D in #300 (comment)):
proxyAdmin*assertions (abd5985);connect-demo-wallet(b929a1e);din_info.jsonlocaldefault CIDs seeded; after that comes BL-27.What's left here once PR No. 301 merges: a first green manual run after Part D, with its measured runtime.
umeradl commentedon Nov 2, 2026
@robertocarlous, could you run the closing check on this issue (
din-close-issue 228)? I can't do it:din_peer_check.pyrefuses me because I wrote PRs No. 219, 229, 232 and 301, which implement it (MAINTAINING No. 5.2). Santiago wrote PR No. 296, so you're the eligible peer.Pointers for the check:
.github/workflows/full-gi.yml). PR No. 301 moved it out ofci.yml, and PR No. 296 (merged today) added the outcome summary.develop(the fix is task_061026_21 Part D). Please check that against the issue's wording before deciding whether this closes.