Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[BUG] Make resource, device, and route resolution deterministic and safety-aware

Aperta
#326 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python
Ambito
backend

Direzione di ricerca

Start by reading the resolver and fallback paths in unilabos/compile/evacuateandrefill_protocol.py, stir_protocol.py, dissolve_protocol.py, separate_protocol.py, and unilabos/devices/workstation/workflow_executors.py. Then inspect the existing authority and reservation work before defining the resolution record and fail-closed diagnostics. Done means ambiguous, stale, disconnected, or unsafe routes block compilation, while tests cover multiple candidates, disconnected paths, stale reservations, and an allowed alternate route.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Problem

Resource and route resolution uses naming heuristics and first-match fallbacks, which can produce an executable action sequence for the wrong device or route.

Concrete code evidence

  • unilabos/compile/evacuateandrefill_protocol.py:40-123 searches gas sources by names and falls back to the first default gas source.
  • unilabos/compile/evacuateandrefill_protocol.py:179-238 searches valves by connectivity/name and can continue without an exact valve binding.
  • unilabos/compile/stir_protocol.py:15-44 returns the first stirrer or stirrer_1 if no exact connection is found.
  • unilabos/compile/dissolve_protocol.py:333-382 returns the first heater/stirrer candidate.
  • unilabos/compile/separate_protocol.py:604-689 falls back to the first separator/stirrer.
  • unilabos/devices/workstation/workflow_executors.py:559-568 returns the first available tip rack when the requested set is unavailable.

Design gap

A graph path is treated as sufficient evidence of a safe executable route. It does not encode valve state, isolation, pressure, reservation, interlocks, or ambiguity.

Expected behavior

Resource and route resolution must return an explicit resolution record or a fail-closed diagnostic. First-match selection must not be used for outcome-relevant resources.

Acceptance criteria

  • Missing, ambiguous, stale, or disconnected bindings block compilation.
  • Resolved routes include nodes, handles, state transitions, and required interlocks.
  • Unsafe valve/pump ordering is rejected before execution.
  • Tests cover multiple candidates, disconnected paths, stale reservations, and an allowed alternate route.
  • Resource ownership remains aligned with the existing authority/reservation work rather than adding a parallel authority.
Lingua principale
Python
Stelle
180
Fork
76
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di deepmodeling/Uni-Lab-OS

Tutte le issue di deepmodeling/Uni-Lab-OS

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.