Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

ci: run the tests/dincli full-GI integration suite in a separate CI job

Ouverte
#228 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@sharmis-tp y travaille déjà.

Depuis le 10/10/2026.

  • #241 par @Santiagocetran — ouverte

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
52/100
Type d'issue
Fonctionnalité
Clarté
Clairement spécifiée
Activité
Active
Stack technique
docker, github-actions, python, solidity
Domaine
ai, ci-cd, devops, testing

Piste de recherche

Read .github/workflows/ci.yml and tests/dincli/test_integration_marker.py, then review the prerequisite changes in PR #229 and the setup used by tests/dincli/. Add a separate CI job that runs the full suite against the foundry contracts and uploads logs on failure. Done means the job reaches GIended and both named testing guides explain the job and local reproduction.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

enhancement

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 proxyAdmin key, but both deploy scripts now write per-contract proxyAdmin* 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 GIended as "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 develop that touch foundry/src/**, foundry/script/**, dincli/** or tests/dincli/**.
  • Setup:
    • Foundry, with forge build plus npm ci in foundry/.
    • Anvil via foundry/anvil.sh. Its --block-time 2 is what the seed-lock polling relies on.
    • An IPFS (kubo) daemon.
    • Docker, for the sandboxed din-worker containers that train-lms, evaluate and aggregate-* spawn.
    • Python 3.12 with pip install -e ..
  • 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 push to develop and nightly instead, and run it on PRs only when a label is set.

Acceptance

  • The integration job runs the full-GI suite on anvil against the foundry contracts, through GIended.
  • Failures upload logs.
  • Developer/CONTRIBUTING.md and Documentation/technical/testing/dincli-testing-guide.md describe 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.
Langage dominant
Python
Étoiles
4
Forks
7
Merge moyen
3 j 4 h
PR mergées (30 j)
34

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de InfiniteZeroFoundation/DevNet

Toutes les issues de InfiniteZeroFoundation/DevNet

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.