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]
