Skip to content

docs(m181): the daemon exports traces, metrics and logs over OTLP - #183

Merged
indykish merged 3 commits into
mainfrom
chore/m181-004-otlp-export-changelog
Sep 3, 2026
Merged

docs(m181): the daemon exports traces, metrics and logs over OTLP#183
indykish merged 3 commits into
mainfrom
chore/m181-004-otlp-export-changelog

Conversation

@indykish

@indykish indykish commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

The changelog entry for M181_004: the Rust daemon's OTLP export.

Pairs with agentsfleet#649. One <Update> covering the four standard knobs
with their defaults and refusals, the vendor aliases that survive the cutover,
the 5 s collection interval, and the counted-never-retried loss.

Session notes 1

Two commits. 65fd59c drafted the entry; 05b7e5f corrected it after the log
signal gained a drop counter later in the same milestone — the loss bullet had
named only spans and metric cycles, because that was true when it was written.

A second bullet records the one asymmetry: the log exporter counts but does not
warn, because a warning about a failed log export becomes a log record handed
back to the exporter that just failed it.

Not in this entry: dropping the SDK's internal-logs feature changes what
an operator sees at debug level — the endpoint URL and collector response body
are no longer echoed. It is user-visible and deliberately left out pending
Indy's call, rather than added unasked.

Review

P2  changelog.mdx:23  loss bullet named two of three signals; written
                      before the log counter existed.              FIXED

Make

pre-commit documentation check   exit 0   Ran 22 tests, OK
                                          Documentation check passed

Voice checked against docs/CHANGELOG_VOICE.md: **Bold lead-noun** — consequence-first clause, one fact per bullet, code names in backticks, no
load-bearing facts dropped.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HCTMYYb9kuy7uQopcysyZJ

Greptile Summary

The PR documents the daemon’s OTLP export behavior and updates API-reference navigation to match the current OpenAPI operation names.

  • Adds the September 2 observability changelog entry with OTLP configuration, compatibility aliases, collection timing, and failure behavior.
  • Updates API navigation groups, path parameters, and runner-plane operations in docs.json.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
changelog.mdx Adds the M181 daemon OTLP-export changelog entry.
docs.json Aligns API-reference navigation with the current operation paths and groups.

Reviews (2): Last reviewed commit: "docs(api-reference): the navigation matc..." | Re-trigger Greptile

indykish and others added 2 commits September 2, 2026 09:08
One changelog entry for the Rust daemon's OTLP export: the four standard
knobs with their defaults and refusals, the vendor aliases that survive the
cutover, the 5 s collection interval, and the counted, never retried, loss.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FunBrR9BdRLDeRrmpeEbGC
The loss bullet was written when only spans and metric cycles were
counted. The log exporter now counts refused records onto the same
family, so the bullet names all three signals.

A second bullet for the one thing that is not symmetric: the log
exporter raises no warning, because a warning about a failed log export
becomes a log record handed back to the exporter that just failed it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HCTMYYb9kuy7uQopcysyZJ
… serves

The API reference lists every operation by method and path, and the drift check
compares that list against the generated document on main IN BOTH DIRECTIONS. It
fires on a documented path nobody serves and on a served operation nobody
documented. M181_003 caused both kinds, so every open docs PR failed a check that
had nothing to do with its own change.

Nine paths moved. The approval decision left the gate id's segment, because the
router refuses a literal after a parameter inside one segment, and its two verbs
collapse into one templated entry. The schedule sync took the same treatment.
Runner paths name `{runner_id}` where they said `{id}`, secrets name `{name}`
where they said `{secret_name}`, and the Slack events route generalised to
`{provider}`.

Eleven operations were served and undocumented. The ten `/v1/runners/me/*`
routes are the runner plane — what a runner calls about ITSELF, which is a
different reader from the operator-facing group that reads runners by id, so
they get their own group rather than swelling that one. The fleet-messages read
joins the write already beside it.

Two entries go rather than move, and neither is a rename. `GET /metrics` is
served by neither daemon. `POST /v1/webhooks/{fleet_id}/grant-approval` is a real
Zig route never ported to Rust, so it left the generated document without anyone
deciding to drop the endpoint; that gap is filed as an issue rather than left
implied by a documentation entry nobody can call.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QmpDqyQoc7YUWDs7oTNgE
@indykish
indykish merged commit 9d67545 into main Sep 3, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant