davsclaus opened a new pull request, #29554:
URL: https://github.com/apache/camel/pull/29554

   This is a design for 
[CAMEL-26716](https://issues.apache.org/jira/browse/CAMEL-26716): the Good to 
know hints of the About screen, `camel get about`, the project overview and the 
MCP tools. The hints are metadata, not Java code. Only the design doc is added 
here, plus its line in AGENTS.md; no code changes.
   
   **Two layers:**
   1. **Facts per component**, declared by the component next to its options 
and written by the plugin into the component JSON (`consumerFacts`, 
`producerFacts`). That JSON is in the catalog for the tools, and in the 
component JAR for camel-chaos at runtime. Examples:
      - what the consumer does with a failed message, and the options that 
change it (`breakOnFirstError=true`, `moveFailed`, `transacted=true`);
      - whether the system delivers a message again;
      - whether a failed call reaches the error handler 
(`throwExceptionOnFailure`);
      - whether sending again is safe (`httpMethod`);
      - whether a send is confirmed, has a timeout, or overwrites.
   2. **The hint rules: one curated file in camel-catalog** 
(`hints/good-to-know.json`). Each rule is a condition over the route model and 
the facts, in a small closed vocabulary (`input`, `errorHandler`, `sends`, 
`has`/`hasNot`, `option`), plus a text with placeholders. A rule can also name 
the chaos recipe that tries it (`tryChaos`). One generic engine in 
camel-jbang-core evaluates the rules, and every tool reads them.
   
   The rules live in the catalog so the About screen works without camel-chaos. 
camel-chaos reads the same facts from the component JSON and drops its Java 
tables (`ChaosConsumers`, and the sets in `ChaosAdvisor`).
   
   **Gathering the facts:** 215 of the 416 non-deprecated components have a 
consumer and 377 have a producer. The survey goes family by family (messaging, 
files, HTTP, scheduling and polling), and each fact is verified with 
camel-chaos against test-infra or with a DST world. A component without a fact 
gives no hint.
   
   The first rules come from the comments on CAMEL-26716, which use what the 
chaos explorations of CAMEL-26760 found:
   - the dead letter channel that can fail;
   - a Kafka input that skips a failed message;
   - a poison file;
   - a slow service that slows a timer input;
   - duplicates without an idempotent consumer;
   - an error status that is a normal reply.
   
   **Open questions for the talk:**
   - how a component declares its facts (a new annotation, attributes of 
`@UriEndpoint`, or a JSON fragment);
   - whether hints may also use what a running integration reports;
   - how many hints the About screen shows.
   
   _Claude Code on behalf of Claus Ibsen_
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   
   https://claude.ai/code/session_012nJsFsjqqFiwroeHRWaKbS
   


-- 
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