Artifact d1866dad3ed13031423bcc969a694f887e4494c29616295fc82df55ec7b86d89:
- File
docs/site/content/docs/reference/sdk/observer/otel/api.md
— part of check-in
[f30849a466]
at
2026-04-26 14:14:53
on branch trunk
— docs: usability improvements from DX audit (#9)
Implements all seven recommended changes from the docs audit:
1. SDK pages now show package names in nav. Add scripts/prepend-sdk-frontmatter.sh that prepends '--- title: <pkg> ---' to each gomarkdoc-generated api.md; wired into 'make docs-gen-sdk'. Sidebar previously showed five undifferentiated 'API' entries; now shows cli, db, dst, libfossil, observer/otel.
2. /examples/ populated with paragraphs + GitHub deep-links for embed-repo-api and wasm. No longer a placeholder pointing back at the repo.
3. Architecture page gets an inline SVG mirroring the landing-page diagram. Self-contained CSS (uses currentColor + ember accent) so it tracks Hextra's light/dark theme without depending on the landing's CSS scope.
4. Cross-links added: quickstart -> production + extension-points, migration -> architecture, architecture -> extension-points. Extension Points and Production patterns are now reachable via prose, not just the sidebar.
5. /docs/ landing expanded from 3 sentences to a 7-line subsection map calling out each page's purpose.
6. Version indicator in navbar (libfossil v0.4.2). Override layouts/_partials/navbar-title.html mimics Hextra's default and appends a small mono version tag from .Site.Params.version.
7. New /docs/production/ page covering error handling, context cancellation, telemetry wiring, repo-handle lifetime, and driver selection — the patterns the quickstart's log.Fatal shortcuts gloss over. (user: [email protected], size: 8585) [annotate] [blame] [check-ins using]
--- title: observer/otel --- <!-- Code generated by gomarkdoc. DO NOT EDIT --> # otel ```go import "github.com/danmestas/libfossil/observer/otel" ``` Package otel provides OpenTelemetry implementations of the libfossil SyncObserver and CheckoutObserver interfaces. Import this package only when you want OTel instrumentation — it pulls in the OTel SDK dependency. ## Index - [type CheckoutObserver](<#CheckoutObserver>) - [func NewCheckoutObserver\(\) \*CheckoutObserver](<#NewCheckoutObserver>) - [func \(o \*CheckoutObserver\) CommitCompleted\(info libfossil.CommitEnd\)](<#CheckoutObserver.CommitCompleted>) - [func \(o \*CheckoutObserver\) CommitStarted\(info libfossil.CommitStart\)](<#CheckoutObserver.CommitStarted>) - [func \(o \*CheckoutObserver\) Error\(err error\)](<#CheckoutObserver.Error>) - [func \(o \*CheckoutObserver\) ExtractCompleted\(info libfossil.ExtractEnd\)](<#CheckoutObserver.ExtractCompleted>) - [func \(o \*CheckoutObserver\) ExtractFileCompleted\(name string, change libfossil.UpdateChange\)](<#CheckoutObserver.ExtractFileCompleted>) - [func \(o \*CheckoutObserver\) ExtractStarted\(info libfossil.ExtractStart\)](<#CheckoutObserver.ExtractStarted>) - [func \(o \*CheckoutObserver\) ScanCompleted\(info libfossil.ScanEnd\)](<#CheckoutObserver.ScanCompleted>) - [func \(o \*CheckoutObserver\) ScanStarted\(dir string\)](<#CheckoutObserver.ScanStarted>) - [func \(o \*CheckoutObserver\) String\(\) string](<#CheckoutObserver.String>) - [type SyncObserver](<#SyncObserver>) - [func NewSyncObserver\(\) \*SyncObserver](<#NewSyncObserver>) - [func \(o \*SyncObserver\) Completed\(info libfossil.SessionEnd\)](<#SyncObserver.Completed>) - [func \(o \*SyncObserver\) Error\(err error\)](<#SyncObserver.Error>) - [func \(o \*SyncObserver\) HandleCompleted\(info libfossil.HandleEnd\)](<#SyncObserver.HandleCompleted>) - [func \(o \*SyncObserver\) HandleStarted\(info libfossil.HandleStart\)](<#SyncObserver.HandleStarted>) - [func \(o \*SyncObserver\) RoundCompleted\(round int, stats libfossil.RoundStats\)](<#SyncObserver.RoundCompleted>) - [func \(o \*SyncObserver\) RoundStarted\(round int\)](<#SyncObserver.RoundStarted>) - [func \(o \*SyncObserver\) Started\(info libfossil.SessionStart\)](<#SyncObserver.Started>) - [func \(o \*SyncObserver\) String\(\) string](<#SyncObserver.String>) - [func \(o \*SyncObserver\) TableSyncCompleted\(info libfossil.TableSyncEnd\)](<#SyncObserver.TableSyncCompleted>) - [func \(o \*SyncObserver\) TableSyncStarted\(info libfossil.TableSyncStart\)](<#SyncObserver.TableSyncStarted>) <a name="CheckoutObserver"></a> ## type [CheckoutObserver](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L208-L223>) CheckoutObserver implements libfossil.CheckoutObserver using OpenTelemetry spans and metrics. ```go type CheckoutObserver struct { // contains filtered or unexported fields } ``` <a name="NewCheckoutObserver"></a> ### func [NewCheckoutObserver](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L227>) ```go func NewCheckoutObserver() *CheckoutObserver ``` NewCheckoutObserver returns a CheckoutObserver that records spans and metrics using the OTel global tracer and meter providers. <a name="CheckoutObserver.CommitCompleted"></a> ### func \(\*CheckoutObserver\) [CommitCompleted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L328>) ```go func (o *CheckoutObserver) CommitCompleted(info libfossil.CommitEnd) ``` <a name="CheckoutObserver.CommitStarted"></a> ### func \(\*CheckoutObserver\) [CommitStarted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L314>) ```go func (o *CheckoutObserver) CommitStarted(info libfossil.CommitStart) ``` <a name="CheckoutObserver.Error"></a> ### func \(\*CheckoutObserver\) [Error](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L347>) ```go func (o *CheckoutObserver) Error(err error) ``` <a name="CheckoutObserver.ExtractCompleted"></a> ### func \(\*CheckoutObserver\) [ExtractCompleted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L277>) ```go func (o *CheckoutObserver) ExtractCompleted(info libfossil.ExtractEnd) ``` <a name="CheckoutObserver.ExtractFileCompleted"></a> ### func \(\*CheckoutObserver\) [ExtractFileCompleted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L264>) ```go func (o *CheckoutObserver) ExtractFileCompleted(name string, change libfossil.UpdateChange) ``` <a name="CheckoutObserver.ExtractStarted"></a> ### func \(\*CheckoutObserver\) [ExtractStarted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L250>) ```go func (o *CheckoutObserver) ExtractStarted(info libfossil.ExtractStart) ``` <a name="CheckoutObserver.ScanCompleted"></a> ### func \(\*CheckoutObserver\) [ScanCompleted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L301>) ```go func (o *CheckoutObserver) ScanCompleted(info libfossil.ScanEnd) ``` <a name="CheckoutObserver.ScanStarted"></a> ### func \(\*CheckoutObserver\) [ScanStarted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L291>) ```go func (o *CheckoutObserver) ScanStarted(dir string) ``` <a name="CheckoutObserver.String"></a> ### func \(\*CheckoutObserver\) [String](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L369>) ```go func (o *CheckoutObserver) String() string ``` <a name="SyncObserver"></a> ## type [SyncObserver](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L23-L39>) SyncObserver implements libfossil.SyncObserver using OpenTelemetry spans and metrics. ```go type SyncObserver struct { // contains filtered or unexported fields } ``` <a name="NewSyncObserver"></a> ### func [NewSyncObserver](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L43>) ```go func NewSyncObserver() *SyncObserver ``` NewSyncObserver returns a SyncObserver that records spans and metrics using the OTel global tracer and meter providers. <a name="SyncObserver.Completed"></a> ### func \(\*SyncObserver\) [Completed](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L126>) ```go func (o *SyncObserver) Completed(info libfossil.SessionEnd) ``` <a name="SyncObserver.Error"></a> ### func \(\*SyncObserver\) [Error](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L142>) ```go func (o *SyncObserver) Error(err error) ``` <a name="SyncObserver.HandleCompleted"></a> ### func \(\*SyncObserver\) [HandleCompleted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L166>) ```go func (o *SyncObserver) HandleCompleted(info libfossil.HandleEnd) ``` <a name="SyncObserver.HandleStarted"></a> ### func \(\*SyncObserver\) [HandleStarted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L155>) ```go func (o *SyncObserver) HandleStarted(info libfossil.HandleStart) ``` <a name="SyncObserver.RoundCompleted"></a> ### func \(\*SyncObserver\) [RoundCompleted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L100>) ```go func (o *SyncObserver) RoundCompleted(round int, stats libfossil.RoundStats) ``` <a name="SyncObserver.RoundStarted"></a> ### func \(\*SyncObserver\) [RoundStarted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L85>) ```go func (o *SyncObserver) RoundStarted(round int) ``` <a name="SyncObserver.Started"></a> ### func \(\*SyncObserver\) [Started](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L69>) ```go func (o *SyncObserver) Started(info libfossil.SessionStart) ``` <a name="SyncObserver.String"></a> ### func \(\*SyncObserver\) [String](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L368>) ```go func (o *SyncObserver) String() string ``` String returns a human\-readable description. <a name="SyncObserver.TableSyncCompleted"></a> ### func \(\*SyncObserver\) [TableSyncCompleted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L191>) ```go func (o *SyncObserver) TableSyncCompleted(info libfossil.TableSyncEnd) ``` <a name="SyncObserver.TableSyncStarted"></a> ### func \(\*SyncObserver\) [TableSyncStarted](<https://github.com/danmestas/libfossil/blob/main/observer/otel/otel.go#L180>) ```go func (o *SyncObserver) TableSyncStarted(info libfossil.TableSyncStart) ``` Generated by [gomarkdoc](<https://github.com/princjef/gomarkdoc>)