Repository navigation
feat(operations): forward human_input_responses to investigate - #443
Conversation
The DevLoop's human-input continuation (mctlhq/mctl-agents#473) sends the accepted answers as human_input_responses. It was deliberately left undeclared until the CWFT declared it, so StripUndeclared dropped it and the continuation re-asked the question. mctlhq/mctl-gitops#1581 declared it, so mctl-api now forwards it. The value stays opaque here (the investigator validates every entry); only the array shape is pinned, and an empty value is omitted so a run without answers keeps the template's exact argv. Claude-Session: https://claude.ai/code/session_012kWiYf1BX6wcXB2kc8x15U
|
Claude finished @mashkovd's task in 2m 36s —— View job Reviewing PR #443
Verdict: APPROVE (0 P1, 0 P2, 1 P3) Reviewed
P3 (non-blocking): Note: I was unable to run |
Antigravity (agy) review — informationalModel: gemini-3.8-flash-medium · commit No significant issues found. |
There was a problem hiding this comment.
No P1/P2 findings (1 P3). Good to merge.
P3 (nit, not blocking): internal/operations/registry_cwft_params_test.go's cwftDeclaredParams["mctl-agents-investigate"] — explicitly documented as a transcription of the live CWFT's spec.arguments.parameters — wasn't updated to list human_input_responses, even though the PR description says cwft-mctl-agents-investigate now declares it (mctl-gitops#1581). TestCWFTParamsAreDeclaredOrExplicitlyInternal only checks the direction "every name in the list is declared or exempted," not the converse, so this doesn't fail CI, but it leaves that inventory quietly out of date. Not inline-commentable since the file isn't part of this diff.
Verified: Pattern (?s)^\[.*\]$ is RE2-safe (no backtracking/ReDoS risk), anchored on the full value; OmitWhenEmpty + StripUndeclared/ApplyDefaults interplay is correct, matching the existing agentPinParams/devLoopCorrelationParams pattern; new test row in devLoopSubmissions round-trips through TestExecuteOperation_DevLoopParamsAreNeverDropped; new TestExecuteOperation_HumanInputResponsesShape correctly asserts a non-array value is rejected pre-executor and an empty value is omitted. No security/concurrency/error-handling issues — the value stays opaque to mctl-api and is forwarded as a structured Argo parameter, not shell-interpolated.
cwftDeclaredParams transcribes cwft-mctl-agents-investigate, which declares human_input_responses since mctlhq/mctl-gitops#1581. Claude-Session: https://claude.ai/code/session_012kWiYf1BX6wcXB2kc8x15U
|
Claude finished @mashkovd's task in 2m 23s —— View job Reviewing PR #443 (commit
|
Antigravity (agy) review — informationalModel: gemini-3.8-flash-medium · commit No significant issues found. |
Why
This is item 3 of #372. After a human answers a sealed question, the DevLoop continuation sends the accepted answers to
mctl-agents-investigateashuman_input_responses(mctl-agents#473,dev_loop.py). The parameter was deliberately left undeclared until the CWFT declared it, andTestExecuteOperation_PendingDevLoopParamsAreStillStrippedpinned that. As a resultStripUndeclareddropped the answers, and the continuation asked the same question again.mctl-gitops#1581 (merged as
f388365) now declares the parameter incwft-mctl-agents-investigateand forwards it as--human-input-responses. The investigator has consumed it since mctl-agents#558, released as 1.66.0 and promoted to production.What
registry.godeclareshuman_input_responsesonmctl-agents-investigate: optional, withOmitWhenEmptyand the pattern(?s)^\[.*\]$.devLoopParamsPendingDeclarationtodevLoopSubmissionsas "investigate, human-input continuation".TestExecuteOperation_HumanInputResponsesShape: a non-array value gets a 400 and never reaches the executor, and an empty value is omitted.OmitWhenEmptyfails the shape test.go test ./...passes locally.Refs #372, mctlhq/mctl-agents#473
🤖 Generated with Claude Code
https://claude.ai/code/session_012kWiYf1BX6wcXB2kc8x15U