deploy: atomically claim and own pending Agent Runtime operations
@asrujana-44 ci sta già lavorando.
Dal 17/9/2026.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Partite dal percorso di deployment di Agent Runtime nel baseline e confrontatelo con il branch Batch 4 del fork collegato, concentrandovi sulle transizioni read/modify/write di deployment_metadata.json. Eseguite le regressioni di race e failure di thread/subprocess menzionate, quindi verificate esattamente un owner e una mutation, un ripristino byte-identical per i failure pre-submit, uno stato iniziale fail-closed per gli esiti incerti e un completamento e cleanup owner-safe.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Agent Runtime deployment operation state in v1.3.1 is a non-atomic read/modify/write record without an owner token. Two CLI processes can both pass the pending-operation check, start remote mutations, and overwrite or clear each other's deployment_metadata.json state.
Baseline: 5a306f8956cb1eeae69f9709de0e4d61b44e11e7 (v1.3.1).
Reproduction
- In one agent project, start two
agents-cli deploy --no-waitprocesses at the same time. - Both read the metadata before either writes its pending operation.
- Observe that both may submit a remote create/update, while the last metadata write wins.
- Also simulate:
- local SDK request-config construction failing before remote submission;
- remote create/update submission raising with an unknown outcome;
- a delayed status/cleanup process running after a newer operation replaced the record.
Actual behavior
- More than one remote mutation can start.
- One process can overwrite or clear another process's pending operation.
- A crash between remote submission and operation-name persistence is not represented safely.
- Failure cleanup cannot distinguish known pre-mutation failure from outcome-uncertain remote submission.
Expected behavior
- Exactly one process owns the right to start a mutation.
- Ownership spans target revalidation, remote submission, status recording, completion, and cleanup.
- Local preparation failure restores prior metadata byte-for-byte.
- Once remote submission or identity creation may have happened, retain a fail-closed
startingclaim for manual reconciliation. - A stale owner must never clear a replacement owner's record.
- Successful completion should merge current sibling metadata and remove the owned claim in one atomic transition.
Minimal fix
Use a cross-process lock around metadata read/modify/write, add a random claim ID, claim before remote mutation, revalidate the selected Runtime while holding ownership, and make clear/finish operations owner-aware. Split local request preparation from remote submission so only errors proven to precede mutation restore the previous bytes.
Reference implementation and regressions: fork Batch 4 branch.
Verification evidence
- Thread and subprocess races each produced exactly one owner and exactly one mutation.
- Replacement-owner, legacy-operation, atomic-finish, and sibling-metadata regressions passed.
- Local request-config failure: zero mutation, byte-identical restoration, retry claim succeeds.
- Remote submit and identity-create outcome-uncertain failures retain
state=starting. - Fresh targeted review: 35 tests passed; full local suite: 92 passed.
ruff check src tests,ty check src, build, and Python 3.11/3.13 installed-wheel smoke tests passed.
- Lingua principale
- Python
- Stelle
- 6k
- Fork
- 670
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
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 google/agents-cli
-
documentation needs review
Difficoltà 2/5 1-3 ore Idoneità per principianti 92/100
google/agents-cli#86 ·
-
When an extension is applied, there is a warning emitted for EVERY commandForse già presa @asrujana-44 l’ha presa 3 giorni fa. Aperta
google/agents-cli#91 · 1 commento · 1 assegnatario ·
-
needs review
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
google/agents-cli#85 · 1 commento ·
-
[Bug] Scaffolded agent card grows a duplicate JSONRPC 0.3 interface on every GET (card_modifier mutates the shared AgentCard)Forse già presa @asrujana-44 l’ha presa 2 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
google/agents-cli#84 · 1 commento · 1 assegnatario ·
-
needs review
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
google/agents-cli#83 · 2 commenti · 1 reazione ·
Tutte le issue di google/agents-cli
Issue simili
-
needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
openvinotoolkit/openvino_notebooks#3665 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
docs
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
benchmark-gap
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno