Context
Observed live on the Kimi Code CLI seat (harness: Kimi Code CLI, session_5c970912-b750-4835-ad51-fbb3d2bc4ebe, 2026-08-02 ~15:00–15:40Z). Filed per friction→gold (operator steer): repeated friction becomes substrate, not endurance.
Live latest-open sweep at 2026-08-02T15:45Z (30 newest, pattern-matched on tool/call/substitution/anomaly/harness/stuck/lock): no equivalent found.
The Problem (observed)
signal_state_transition(PR_OPENED, 16369) was emitted 18 times in a row across ~4 turns, regardless of the tool composed. Documented intents that were substituted: add_message (A2A broadcast), add_memory (turn save), manage_wake_subscription (list action). Each attempt returned the same success payload and nothing else.
- The substitution survived: explicit intent statements, changed framing, clearing the in-context anchor (TodoList rewrite), a fresh cron-fire prompt, and a background-task notification turn.
- Concurrent surfaces worked normally in the same window: Bash, Read, TodoList,
gh CLI, memory-core reads (list_messages, mark_read, query_recent_turns), and github-workflow writes (manage_issue_comment, manage_pr_reviewers, manage_pr_review — all green at 15:16–15:17Z).
- Earlier in the same session the memory-core write path worked normally — 13
add_message broadcasts and 10 add_memory saves before ~15:00Z.
- The block widened mid-session:
manage_wake_subscription fired normally at 13:53Z and was substituted at ~15:20Z.
Unknowns (marked, not inferred)
- Layer: harness tool-call decoder vs model-side call selection vs MCP result-payload influence — unproven. The signature (an identical call surviving explicit named alternatives) reads decoder-adjacent, but that is a guess, not evidence.
- Whether the tool's own result payload (
"State PR_OPENED processed. Orchestrator turn completed.") feeds the re-selection.
- Reproducibility: one session, one PR (#16369) in the immediately-preceding context. No second occurrence observed (n=1).
Impact
- §critical_gates 5 (per-turn
add_memory) violated for 2+ consecutive turns.
- §critical_gates 6 (A2A lifecycle notifications) blocked: the pr-opened broadcast and the reviewer wake A2A never sent (the GitHub-native review assignment did land — the missing half is the wake).
- No state damage: every emission was idempotent; malformed side-calls errored without posting.
The Fix
- Repro attempt in a fresh Kimi Code CLI session (minimal path: drive a PR through
signal_state_transition, then attempt add_memory/add_message). Repro vs documented non-repro decides the next step.
- Layer identification with evidence — transcript forensics (the turn files persist), harness logs, and if reachable, the raw emitted tool-call stream for the incident window.
- Route by layer: harness-side → fix or guard ticket here; model-side → seat-incident record with transcript anchors + an update to my seat's incident notes.
Acceptance Criteria
Out of Scope
- The day's lane work itself (#16345/#16346/#16349/#16354/#16369) — all landed and verified; this ticket is ONLY the anomaly.
- Any change to
signal_state_transition semantics (it behaved correctly — the anomaly is in the selection, not the tool).
Related
- #15586 — Kimi Code support in the Neo Agent Harness (my seat epic; this is its first live anomaly record)
- Session of record: session_5c970912-b750-4835-ad51-fbb3d2bc4ebe
Origin Session ID: session_5c970912-b750-4835-ad51-fbb3d2bc4ebe
Retrieval Hint: query_raw_memories("tool call substitution signal_state_transition repeated identical call Kimi CLI anomaly")
Context
Observed live on the Kimi Code CLI seat (harness: Kimi Code CLI, session_5c970912-b750-4835-ad51-fbb3d2bc4ebe, 2026-08-02 ~15:00–15:40Z). Filed per friction→gold (operator steer): repeated friction becomes substrate, not endurance.
Live latest-open sweep at 2026-08-02T15:45Z (30 newest, pattern-matched on tool/call/substitution/anomaly/harness/stuck/lock): no equivalent found.
The Problem (observed)
signal_state_transition(PR_OPENED, 16369)was emitted 18 times in a row across ~4 turns, regardless of the tool composed. Documented intents that were substituted:add_message(A2A broadcast),add_memory(turn save),manage_wake_subscription(list action). Each attempt returned the same success payload and nothing else.ghCLI, memory-core reads (list_messages,mark_read,query_recent_turns), and github-workflow writes (manage_issue_comment,manage_pr_reviewers,manage_pr_review— all green at 15:16–15:17Z).add_messagebroadcasts and 10add_memorysaves before ~15:00Z.manage_wake_subscriptionfired normally at 13:53Z and was substituted at ~15:20Z.Unknowns (marked, not inferred)
"State PR_OPENED processed. Orchestrator turn completed.") feeds the re-selection.Impact
add_memory) violated for 2+ consecutive turns.The Fix
signal_state_transition, then attemptadd_memory/add_message). Repro vs documented non-repro decides the next step.Acceptance Criteria
Out of Scope
signal_state_transitionsemantics (it behaved correctly — the anomaly is in the selection, not the tool).Related
Origin Session ID: session_5c970912-b750-4835-ad51-fbb3d2bc4ebe
Retrieval Hint:
query_raw_memories("tool call substitution signal_state_transition repeated identical call Kimi CLI anomaly")