ward exec forgejo-admin-token fails TTY check under the make/uv wrapper #579
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/devrel
role/eval
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/sysadmin
role/tpm
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#579
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ward exec forgejo-admin-tokenrefuses with "attended operator shell required" even in an attended interactive shell, because the make -> uv run subprocess chain does not preserve a TTY on stdin/stderr.Symptom
Running
ward exec forgejo-admin-token(orbasha script that calls it) in an interactive Warp session:Root cause
scripts/forgejo-admin-token.pygates onsys.stdin.isatty() and sys.stderr.isatty()to keep headless callers (timers, bulk sync) from pulling the site-admin PAT. But the invocation path isward exec->make forgejo-admin-token->uv run python scripts/forgejo-admin-token.py, and that wrapper chain does not hand the child a TTY on stdin/stderr, so the attended check fails for a genuinely attended operator too.Impact
Any operator flow that needs the admin/owner token has no working ward path. Concretely, the Forgejo/GitHub reconcile retire step (deleting repos, which the coilyco-ops read token cannot do - 403 "user should be the owner") cannot run through ward. The 22 retires in the first reconcile pass had to be done out of band (web UI) instead of through the tooling.
Possible fixes (not prescribing one)
sys.stdin.isatty()only. stdout is already a pipe by design (consumed via $(...)), and stderr is the one the wrapper reassigns, so stdin is the honest attended signal.Context
Surfaced by the Forgejo/GitHub reconcile report work (#578).
Closed in the 2026-08-26 backlog burn-down (coilyco-bridge/agentic-os-kai#901).
Verified as already landed: Closing: the TTY gate is gone. Commit
4cdbb21removed scripts/forgejo-admin-token.py and theward exec forgejo-admin-tokenverb entirely, moving the twelve call sites to read the SSM SecureString directly, so there is no attended-shell check left to fail under the make/uv wrapper.This issue was open only because nothing closed it when the work shipped. If the verification is wrong, reopen it. The whole set is recoverable with
state:closed label:burndown-2026-08.