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]
