luigidemasi opened a new issue, #87:
URL: https://github.com/apache/camel-kit/issues/87

   > Imported from 
[luigidemasi/camel-kit#208](https://github.com/luigidemasi/camel-kit/issues/208),
 opened by [luigidemasi](https://github.com/luigidemasi) on 2026-09-04.
   > Closed by 
[luigidemasi/camel-kit#212](https://github.com/luigidemasi/camel-kit/pull/212), 
merged on 2026-09-07.
   
   ---
   
   ## Description
   
   Narrow replacement for luigidemasi/camel-kit#75, which proposed a shared 
`confusion-management.md` guide with `CONFUSION:` and `ASSUMPTIONS I'M MAKING:` 
templates referenced by all Tier 1 skills.
   
   Re-checked against `main` (`499588f4`) on 2026-09-04, most of that is 
already shipped or is ruled out by shipped rules:
   
   - The structured question format exists. 
`skills/camel-brainstorm/guides/migration-discovery.md` Step 5a defines 
`[Concern N of M]` (what was found, why it matters, multiple-choice options, 
"Which approach do you prefer?") and Step 5b defines `[Clarification N of M]` 
for ambiguous patterns and workarounds found in the source. 
`templates/bob/gates/camel-migrate.md` uses the same one-line form. Both 
predate luigidemasi/camel-kit#75.
   - A batched "here are my assumptions, correct me or I'll proceed" prompt is 
a listed VIOLATION in `migration-discovery.md` ("Red Flags"), is forbidden by 
`templates/bob/rules-camel-brainstorm/interview-gates.md`, and contradicts 
`skills/shared/discovery-completeness.md` rules 3, 4 and 7. The compatible form 
is the one `camel-migrate` already uses: a `✓ Confirmed / ~ Inferred / ? 
Unknown` summary that requires explicit confirmation, with unconfirmed rows 
carried into `migration-analysis.md`.
   - A guide referenced by every Tier 1 skill cannot include `camel-execute`, 
whose HARD-RULE forbids asking the user between tasks; uncertainty there flows 
through the typed status table (`DONE`, `DONE_WITH_CONCERNS`, `NEEDS_CONTEXT`, 
`NEEDS_USER_CONFIRMATION`, `BLOCKED`).
   
   Two gaps remain, and neither is a missing template.
   
   **Gap 1: camel-migrate sub-agents cannot reach the user.** 
`skills/camel-migrate/SKILL.md` dispatches every Guide Manifest step (B0/A0/C0 
graph analysis, A1/B1/C1 Phase 1, R1, Phase 2, runbook) to a sub-agent. The 
dispatched guides instruct the agent to ask the user: 
`guides/mulesoft-phase1.md` and `guides/biztalk-phase1.md` Steps 1.2 and 1.3, 
`guides/camel-version-phase1.md` Step 1.4, `guides/camel-version-phase2.md` 
(component not found), `guides/mulesoft-phase2.md` and 
`guides/biztalk-phase2.md` Step 2.2, plus the ASK USER rows in 
`guides/biztalk-component-mapping.md`, `guides/mule-component-mapping.md`, 
`guides/camel2-component-mapping.md`, `guides/biztalk-pipeline-mapping.md` and 
`guides/datamapper-migrate.md`. The three graph-analysis guides end with 
"Return to `migration-discovery.md` Step 5 ... Step 5a ... Step 5b", which a 
sub-agent cannot run. The dispatch prompt defines only 
`NEEDS_USER_CONFIRMATION`, reserved for content-derived actions, and 
`camel-migrate` has no hand
 ler for any sub-agent status. On targets that dispatch bounded steps (Claude 
Code, Codex, OpenCode) an ambiguous source pattern is resolved silently by the 
sub-agent or dropped. Bob 2 and Qwen keep the interview in the parent session, 
Copilot and Gemini run the whole skill inside their migrator agent, Bob 1 and 
Pi run the phases inline; those paths are not affected.
   
   **Gap 2: `camel-kit ship --ask never` loses the worker's questions.** The 
controller tells the Pi worker to "group concrete questions at the end of 
report and set `materialAmbiguity` to true" and pauses on that flag under 
`always` and `smart` only. Under `never` the run continues, the flag is not 
stored in the run record, and the questions survive only inside the free-text 
stage report. The worker is never told which oversight policy is active, so it 
cannot record the default it chose. `docs/commands.md` says `never` "may record 
reasonable defaults", which nothing implements.
   
   ## Proposal
   
   **Part 1 — `skills/camel-migrate/SKILL.md` only; reuse existing vocabulary 
and the existing format by reference.**
   
   1. Dispatch prompt, after "do not perform it.": "If a guide step says to ask 
the user, or returns you to `migration-discovery.md` Step 5a/5b, and you cannot 
ask, return `NEEDS_CONTEXT` listing every open decision as a `[Concern N of M]` 
block (`camel-brainstorm/guides/migration-discovery.md`, How to Ask Each 
Concern): what you found, why it matters, multiple-choice options. Do not 
choose for the user and do not write output that depends on the answer. 
`NEEDS_USER_CONFIRMATION` stays reserved for content-derived actions."
   2. Context Passing, after the `NEEDS_USER_CONFIRMATION` sentence: "On 
`NEEDS_CONTEXT`, present each returned `[Concern N of M]` block to the user one 
at a time, record every answer as `✓ Confirmed` in the Step 4 summary, then 
re-dispatch the same step with the answers in the envelope. Never answer on the 
sub-agent's behalf."
   3. Step 5: "Every question this skill or its guides put to the user, inline 
or relayed, uses the `[Concern N of M]` / `[Clarification N of M]` block from 
`camel-brainstorm/guides/migration-discovery.md`, one per message."
   4. Pin the new sentences in `MigrationOperationsContractTest`.
   
   The per-target dispatch block appended at install time already says "a child 
that cannot ask the user returns `NEEDS_USER_CONFIRMATION`"; sentence 1 scopes 
the two tokens so the installed skill does not carry two rules for one trigger.
   
   **Part 2 — Ship controller, Java only.**
   
   5. The worker prompt states the active oversight policy. Under `never` it 
asks the worker to keep the grouped questions and, for each, the default it 
applied.
   6. The run record keeps `materialAmbiguity` and the grouped questions per 
stage; `camel-kit ship status` and the final report list every question that 
was not answered by a human and the default taken, so the run can be audited 
after the fact.
   7. `docs/commands.md` oversight text describes the recorded behaviour 
instead of promising it.
   
   Not in scope: a new file under `skills/shared/`; `CONFUSION:` / `ASSUMPTIONS 
I'M MAKING:` labels; a batched assumptions prompt; a new status token; changes 
to Bob gates, Bob 2 rules, dispatch templates or personas; changes to 
`camel-execute`.
   
   ## Acceptance criteria
   
   - [ ] The `camel-migrate` dispatch prompt tells a sub-agent that hits an 
ask-the-user step or a Step 5a/5b handoff to return `NEEDS_CONTEXT` with every 
open decision as a `[Concern N of M]` block and to write nothing that depends 
on the answer; `NEEDS_USER_CONFIRMATION` semantics are unchanged and the two 
tokens are distinguished in the same paragraph.
   - [ ] `camel-migrate` has an orchestrator rule for `NEEDS_CONTEXT`: present 
each block one at a time, record answers as `✓ Confirmed`, re-dispatch the same 
step.
   - [ ] Step 5 names the `[Concern N of M]` / `[Clarification N of M]` format 
by reference; `migration-discovery.md` is unchanged.
   - [ ] Manual check on Claude Code: a MuleSoft source with an ASK USER 
connector (`guides/mule-component-mapping.md`, Proprietary Connectors table) 
produces a `[Concern N of M]` prompt in the parent conversation instead of a 
silently chosen replacement in `business-requirements.md`.
   - [ ] After a `camel-kit ship --ask never` run whose worker reported 
material ambiguity, the run record, `ship status` and the final report list 
each unanswered question with the default applied; under `always` and `smart` 
the pause behaviour is unchanged; `docs/commands.md` matches.
   - [ ] No new file under `skills/shared/`; `templates/bob/**`, 
`templates/bob2/**`, `templates/dispatch/*.md` and `agents/*.md` have no diff.
   - [ ] `MigrationOperationsContractTest` pins the new sentences; Ship 
controller tests cover the recorded questions; `ShippedAssetStructureTest`, 
`ResourceConsistencyTest` and `BobGeneratorTest` pass unchanged; full reactor 
`./mvnw -B clean install` passes.
   
   ## Website impact — Needs review
   
   `content/getting-started/migration/_index.md` promises the connector 
interview and documents only `NEEDS_USER_CONFIRMATION` for migrate roles; 
`content/pipeline/ship.md` describes the three oversight levels. Whether the 
relay format and the recorded `never` defaults are worth documenting is decided 
when this is implemented.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to