Document ExecutionContext locking strategy and thread-safety guarantees
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 68/100
- Tipo di issue
- Documentazione
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- documentation
Direzione di ricerca
Leggi docs/HANDLER_AUTHORING.md e packages/darnit/src/darnit/core/models.py::ExecutionContext; l’issue consente anche di creare docs/execution-context.md. Documenta il comportamento relativo a locking e concorrenza, la semantica degli errori, quando usare o evitare la cache e i pattern di test con un contesto nuovo. Il lavoro è completato quando la guida tratta tutti e cinque i punti ed è coerente con l’implementazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Context
#189 added ExecutionContext with a thoughtful double-checked locking design, but the strategy isn't documented beyond code comments. Handler authors using get_or_run_tool() need to understand:
- What guarantees does the context provide? (same key → same result within an audit run)
- What happens under concurrent access? (different keys parallel, same key serialized)
- What can go wrong? (e.g., if
run_funcraises, is the lock released properly?) - When should handlers NOT use this? (e.g., tool output is non-deterministic or time-sensitive)
What to document
Extend docs/HANDLER_AUTHORING.md (or create a dedicated docs/execution-context.md) with:
- Locking strategy explanation — the double-checked locking pattern and why it's used (main lock fast-path + per-tool locks)
- Concurrency guarantees — what's serialized (same
tool_key), what's parallel (different keys) - Failure semantics — if
run_funcraises, is the lock released? (Yes, viawith— but worth calling out.) Does the exception propagate? (Yes.) Is the key cached on failure? (No — only successful results are cached.) - When to use vs not — cache expensive tool outputs (Scorecard, API queries); DON'T cache time-sensitive state (current time, fresh random numbers, etc.)
- Testing patterns — how to test handlers that use ExecutionContext (fixture that provides a fresh context per test)
References
- Infrastructure:
packages/darnit/src/darnit/core/models.py::ExecutionContext - Existing usage guide:
docs/HANDLER_AUTHORING.md(brief "Shared Execution Context" section added in #189) - Related: #193 (audit cache documentation — similar pattern)
- Lingua principale
- Python
- Stelle
- 22
- Fork
- 27
- Merge medio
- 4g 20h
- PR unite (30g)
- 75
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di darnitdevorg/darnit
-
ci needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
darnitdevorg/darnit#607 ·
I maintainer di solito rispondono entro 3 giorni
-
good first issue maintenance
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
darnitdevorg/darnit#587 · 2 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
Container image has no zizmor, so OSPS-AC-04.02 always reports missing_toolForse già presa @mlieberman85 l’ha presa 20 giorni fa. Apertainfrastructure module-baseline
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
darnitdevorg/darnit#585 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
module-baseline
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
darnitdevorg/darnit#344 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
module-core
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
darnitdevorg/darnit#195 ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di darnitdevorg/darnit
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
strawberry-graphql/strawberry#4794 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
dataforgoodfr/cetolog#21 ·
-
security_citations_test fails against ecc 2026.11.6: SECURITY.md quotes ecc v2026.11.2's linesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
btclib-org/btclib#2932 ·
I maintainer di solito rispondono entro 1 giorno
-
metrics priority: medium
Difficoltà 1/5 1-3 ore Idoneità per principianti 86/100
LearningCircuit/local-deep-research#8336 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100