User story
Como o worker rodando em CI, eu quero autenticar no /api/ingest sem login interativo, para que o
--push funcione num runner onde ninguém digita iris login.
O problema
O --push assume login interativo: get_auth() lê ~/.iris/config.json, escrito pelo iris login.
Num runner esse arquivo não existe.
A decisão — duas saídas, e esta issue escolhe
O DD deixa a escolha explicitamente para a Fase 1:
Saída A — o workflow escreve o arquivo a partir de secrets. Funciona hoje, zero código. Em
troca, o token passa pelo disco do runner e a forma do arquivo vira contrato implícito do CI.
Saída B — get_auth() ganha fallback para IRIS_TOKEN / IRIS_SERVER_URL. Três linhas, e é o que
um worker centralizado quer. IRIS_SERVER_URL já é lido hoje em iris/platform/auth.py:14
(DEFAULT_SERVER), então na prática só o token é novo.
Acceptance criteria
Scope / non-goals
Fora: rotação dos secrets, que é definida junto do pedido do GitHub App, e as flags do worker, que
são da Fase 2.
Se encaixa em qual estágio?
Stage 2 — Ingestion: reliability of CLI → /api/ingest pipeline, token auth.
Links
User story
Como o worker rodando em CI, eu quero autenticar no
/api/ingestsem login interativo, para que o--pushfuncione num runner onde ninguém digitairis login.O problema
O
--pushassume login interativo:get_auth()lê~/.iris/config.json, escrito peloiris login.Num runner esse arquivo não existe.
A decisão — duas saídas, e esta issue escolhe
O DD deixa a escolha explicitamente para a Fase 1:
Saída A — o workflow escreve o arquivo a partir de secrets. Funciona hoje, zero código. Em
troca, o token passa pelo disco do runner e a forma do arquivo vira contrato implícito do CI.
Saída B —
get_auth()ganha fallback paraIRIS_TOKEN/IRIS_SERVER_URL. Três linhas, e é o queum worker centralizado quer.
IRIS_SERVER_URLjá é lido hoje emiris/platform/auth.py:14(
DEFAULT_SERVER), então na prática só o token é novo.Acceptance criteria
docs/DECISIONS.mdiris logine~/.iris/config.jsonseguem sendo o padrão para a máquina do desenvolvedor
Scope / non-goals
Fora: rotação dos secrets, que é definida junto do pedido do GitHub App, e as flags do worker, que
são da Fase 2.
Se encaixa em qual estágio?
Stage 2 — Ingestion: reliability of CLI →
/api/ingestpipeline, token auth.Links