Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

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

Aberta
#228 4 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

@sharmis-tp já está trabalhando nisso.

Desde 10/10/2026.

  • #241 de @Santiagocetran — aberto

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
52/100
Tipo de issue
Funcionalidade
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
docker, github-actions, python, solidity
Domínio
ai, ci-cd, devops, testing

Direção de pesquisa

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.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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.
Linguagem predominante
Python
Estrelas
4
Forks
7
Merge médio
3d 5h
PRs com merge (30d)
34

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de InfiniteZeroFoundation/DevNet

Todas as issues de InfiniteZeroFoundation/DevNet

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.