0.6. Resources
In one glance
- You will: Know which source to trust when this course, an upstream project, and a blog post disagree.
- You need: Nothing installed.
- Time: no reading time — this is a lookup page. Skim it, then come back.
When two sources disagree, the repository wins
A tutorial written six months ago can describe a schema that no longer exists. Most of these projects are pre-1.0 and move faster than the articles about them, so “which source do I believe” is an engineering question rather than a matter of taste. For what does this course do, the answer is never prose — not even this prose. The version authority is one line:
awk '/google.golang.org\/adk\/v2 v/ {print $1, $2}' agents/go/go.modgoogle.golang.org/adk/v2 v2.2.0Four other direct dependencies carry a // compatibility hold: comment in the same file — the OpenAI client, two OpenTelemetry modules, and the Google GenAI SDK — each naming the ADK release that constrains it, so an upgrade cannot be argued for without saying which hold it breaks.
Four in-repo artifacts outrank everything else, in this order. The package-local tests under agents/go/ are the behavioral contract: to learn what an invariant guarantees, read the test that asserts it. agents/go/ is the implementation, and every critical excerpt in these pages is included from it through checked snippet regions, so a page cannot drift from the code without failing the build. agents/data/ is the immutable seed that makes exercises repeatable. infra/ is the deployment contract: gateway profiles, Kubernetes manifests, kagent resources, and the observability stack. Component READMEs and CHANGELOG.md come next, and still beat a screenshot.
When the question is about the tool, not the course
Reach upstream when you extend the reference past what these pages show — a tool option, a policy field, a custom-resource attribute nobody here needed:
| Primary source | Reach for it when you need |
|---|---|
| Google ADK documentation | The agent, tool, session, callback, and A2A-serving API |
| agentgateway documentation | Listener and policy configuration: routes, limits, guardrails, backends |
| kagent documentation | Fields for Agent, ModelConfig, and RemoteMCPServer |
evals/README.md | Evalsets, scorers, sanitized artifacts, and judge calibration |
| OpenTelemetry documentation | Collector receiver, processor, exporter, and connector configuration |
| Grafana Tempo documentation | The trace store and the query API Grafana reads |
| MCP specification | The wire format for discovering and invoking a tool |
| A2A specification | The wire format for the agent card and task exchange |
Blog posts and talks are good for orientation and design intent, and never the version authority. The same rule covers your coding assistant: review its patches and hold them to mise run check and mise run test as you would a colleague’s, and note that AGENTS.md hands every compatible tool the same rules you follow.
How to spot a stale example
Check the publication date, then compare the example against what this repository pins. Those are mise.toml for the toolchain, each module’s go.mod and go.sum for its dependency graph, and the Pinned contracts section of AGENTS.md for the cross-component authorities — agentgateway, the kagent charts and API version, the OTel Collector, evaluation artifacts, and the stable ports. If an example uses a field, flag, or endpoint none of those recognize, it is ahead of or behind this course rather than ground truth.
When you upgrade, follow the one-component-at-a-time procedure in 0.4. Ecosystem and re-run the three commands there.
Where a report goes, and how to reuse this
Route a report to where the fix has to land. A reproducible defect in this repository is a course issue; a defect in ADK, agentgateway, kagent, OpenTelemetry, MCP, or A2A belongs to that project’s tracker; and a vulnerability, leaked credential, or real injection bypass goes through the private process in SECURITY.md rather than a public issue.
The repository is dual licensed. Course prose under content/ is CC BY 4.0 — copy, adapt, and republish it, including in your own teaching, as long as you credit the author, keep a licence notice and link, and say what you changed. The software and automation are MIT. Cite the version you used through CITATION.cff, because the reference is a moving target; 8.1. License carries the exact attribution text. For gaps that turn out to be general MLOps engineering rather than agents, the MLOps Coding Course is the companion.
Where to learn the Go this course assumes
The landing page names basic Go as a prerequisite and then never says where to get it. That is a gap worth closing rather than a standard everyone already met. These five are the canonical sources, each paired with the page in this course where it pays off:
| Resource | What it teaches | Where it pays off |
|---|---|---|
| A Tour of Go | Syntax, types, methods, interfaces | 1.1. Go, reading the module |
| Effective Go | Idiom: what Go code is supposed to look like | 2.1. First Agent, reading composition |
| Go by Example | Short runnable recipes, one per construct | 2.5. Dev Loop, while iterating |
testing | Table-driven tests and subtests | 4.2. Testing, writing your own |
context | Cancellation, deadlines, and value propagation | 3.1. Tools, every tool signature |
You do not need all five before starting. The Tour is enough to read the agent; context is the one that repays a careful read the moment you write a tool of your own.
How to use this page later
- Come back when two sources disagree: the repository answers “what does this course do”, the upstream docs answer “how does this tool work”.
- Come back before trusting an old example, and check it against the pins.
- Come back when you have something to report, and pick the tracker the fix has to land in.
Continue to 0.7. Troubleshooting when you know which of those two authorities to open first.