myxce/.kiro/specs/xce-test-cli-ux
Rongsong Shen a2686516f7
feat(xce-test-cli-ux): build destructive-command confirmation gate
confirm_destructive() prompts on stderr and blocking-reads a y/n answer
via a single, non-looping fgets() call (not libedit) -- the mechanism
that makes a real Ctrl-C during the prompt return EINTR and be treated
as a decline (Requirement 9.9), same as an explicit "n" or EOF.
confirm_set_skip()/confirm_is_skip_set() add a session-scoped toggle
mirroring cmd_set's existing -e/+e style. Auto-skips when input is not
interactive, via a new xcetest_is_interactive() accessor over the
existing g_interactive global. Destructive-command enumeration and
per-command wiring (Requirement 9.5) is task 3.3, not this task.
Proven with a real fork+SIGINT test. 1297/1297 controller suite
passing (+7).

Task 2.1 of .kiro/specs/xce-test-cli-ux/tasks.md.
Requirements: 9.1, 9.2, 9.3, 9.4, 9.6, 9.7, 9.8, 9.9

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019jaMf9QEwpugH2W9KAuc7f
2026-09-09 11:41:05 +00:00
..
design.md feat(xce-test-cli-ux): add per-connection lock to interruptible-call adapter 2026-09-09 09:36:27 +00:00
requirements.md docs(xce-test-cli-ux): commit requirements/design/tasks spec-phase artifacts 2026-09-09 11:40:26 +00:00
research.md docs(xce-test-cli-ux): commit requirements/design/tasks spec-phase artifacts 2026-09-09 11:40:26 +00:00
spec.json docs(xce-test-cli-ux): commit requirements/design/tasks spec-phase artifacts 2026-09-09 11:40:26 +00:00
tasks.md feat(xce-test-cli-ux): build destructive-command confirmation gate 2026-09-09 11:41:05 +00:00