ROS callback groups can appear in a robot lesson beside an executor with several threads. A learner may read that combination as proof that the lesson performs several activities at once. The documentation supports a more precise explanation: group rules constrain which callbacks may overlap, while a particular run needs its own observations. Separating those ideas produces a stronger learning note than writing parallel next to an executor name. This article reads the official Jazzy documentation without running a program or changing any robot configuration.
Identify the functions whose scheduling the lesson is trying to explain. A subscription callback, a timer callback and a service callback can have different roles in the example. The important reading task is to connect each relevant callback to the group assignment described by the source. Do not infer that assignment solely from a diagram showing several boxes or from the number of nodes mentioned in a lesson.
The official Jazzy guide on Using Callback Groups explains that some callbacks are not obvious from the user-facing API. It gives the example of a future's completion callback associated with a synchronous service call. A reading note should therefore state whether it inventories only the visible functions or also the additional callbacks explained by the guide.
This is a method for understanding the documented example, not an instruction to modify a connected application. If the lesson leaves a callback's group unclear, identify the missing assignment as a question for the author. Filling the gap with an assumed default can make a learning diagram look complete while hiding the very behavior the learner is meant to investigate.
The guide describes mutually exclusive groups as preventing their callbacks from executing in parallel. Reentrant groups allow the executor to schedule their callbacks without that restriction, including possible overlap between different instances of the same callback. It also explains that callbacks in different groups may execute in parallel. These descriptions concern permission and restriction; they are not observations of a particular lesson run.
The guide states that an entity created without an explicit group uses the node's default callback group, which is mutually exclusive. A lesson that names a multithreaded executor but omits group discussion can consequently leave an important part of its explanation unstated. The learner should locate the assignment or the applicable default, rather than equating several available threads with demonstrated overlap.

The official Jazzy Executors concept document describes executors invoking callbacks through one or more operating-system threads. Its detailed discussion focuses on the C++ client library, rclcpp. That stated focus matters when a learner uses the page alongside an example written for another client library. Preserve the implementation context rather than presenting every detail as universal.
The same document explicitly connects actual parallelism in a multithreaded executor to callback groups. A useful study diagram therefore has two annotations: the executor arrangement described by the lesson and the group relationships among the relevant callbacks. Neither annotation is a substitute for an execution record. Together they describe the conditions whose behavior a later authorized software exercise could investigate.
Also retain the documentation distribution. The linked material belongs to the official repository's Jazzy branch, which supplies an identified context but can still receive edits. A lesson notebook should record the reference used when comparing exact claims. Combining an example from another distribution with this explanation requires an explicit comparison, rather than a quiet assumption that every release is identical.

The callback-group guide includes demonstration code and example output to explain an interaction involving a timer and a service client. Those outputs are part of the published guide. A learner may discuss what the guide uses them to illustrate, but should not copy them into a notebook as evidence of a local run. The source of an execution trace is part of its meaning.
If the learning goal later includes collecting a trace, define what observation would distinguish permission to overlap from overlap actually recorded. Preserve the program revision, environment and observation method. This article does not choose a tracing tool, supply a command sequence or report elapsed times. It also does not infer that a stalled unknown program has the same cause as the guide's example.
A completed reading exercise can demonstrate that the learner identified callbacks, explained their group rules and located the executor context. That is a substantive result even before runtime work begins. A different outcome would demonstrate observed overlap or explain an actual execution issue. Keeping those outcomes separate helps a tutor assess understanding without rewarding an unsupported claim of successful concurrency.
The original illustrations summarize document relationships without depicting a real execution trace. More material is available in the robot learning pathways collection and the article directory. Permission to overlap, the arrangement that can exercise that permission and the evidence of an actual run remain three related parts of the lesson, each requiring its own clear explanation.