Description
Collector names contain dots (aigateway.logs, aigateway.coverage, email.routing). koanf uses . as its key delimiter, so CF2OTEL_COLLECTORS__AIGATEWAY.COVERAGE__ENABLED=true fails with ‘collectors[aigateway]’ has invalid keys: coverage. The same happens for every dotted collector on v0.6.0, so a per-collector switch can only be set in YAML. Found by the CFO-0038 lane in loop 8.
Acceptance Criteria
- #1 A CF2OTEL_ environment variable can set enabled, interval, initial_lookback and max_window for a dotted collector name, with a test
- #2 docs describe the environment form for per-collector settings
Definition of Done
- #1 just check (fmt-check, lint, vet, test, tidy-check, build, vuln)
- #2 just ci before a change that touches the Dockerfile, goreleaser or the image (adds snapshot + image)
- #3 Every new signal or attribute name declared in internal/semconv and listed in docs/signals.md
Implementation Plan
Loop 9 frozen packet L39: prove the dotted-name env form, preserve default enablement and YAML precedence, update generated documentation, then gate, review, land and release.
Implementation Notes
Loop 9: implementation L39-a1 (1/4); review-repair rr1 (1/3); infrastructure retries 0. Candidate 5d6517d, landing f59ebbf, v0.8.1 release at 9a330c4. Exact landing SHA passed just check and just ci; CI 36269719502 and ci-success succeeded; CodeRabbit complete with 0 findings and 0 unreviewed files. Independent review found missing underscore-name duration assertions; rr1 fixed them, and root verified the sole correction. Grant: frozen dotted collector env mapping and generated docs. Reason Done: AC1-2 verified; no new signal or attribute was declared.
Final Summary
Dotted collector settings now accept the documented CF2OTEL_COLLECTORS__