Skip to content

feat: reserve telemetry webhook and job-summary fields - #233

Merged
joshua-temple merged 1 commit into
mainfrom
feat/reserve-telemetry-metrics
Jun 21, 2026
Merged

joshua-temple merged 1 commit into
mainfrom
feat/reserve-telemetry-metrics

Conversation

@joshua-temple

Copy link
Copy Markdown
Collaborator

Problem

The v1 manifest schema is about to freeze. The reserved vendor-neutral telemetry
seam (config.telemetry / TelemetryConfig) currently reserves only enabled
and adapter. Issue #3 asks for a richer metrics surface (a sink endpoint and a
run-summary toggle). Adding a separate metrics: block would duplicate that seam
and create two parallel observability surfaces, so the enrichment converges onto
the existing telemetry block instead.

Fix

Shape-only reservation, additive and omitempty, no generation/emit behavior and
no schema_version bump:

  • TelemetryConfig gains webhook *TelemetryWebhook (a generic vendor-neutral
    JSON-POST sink) and job_summary *bool (a *bool so unset stays distinct from
    an explicit false, mirroring the fail_fast precedent).
  • New TelemetryWebhook type with url and secret_name. secret_name is the
    name of a GitHub Actions secret holding the auth token, a reference and never an
    inline credential.
  • Adapter value constants (none, datadog) for documentation and future use.
    The vendor stays a value behind the adapter seam; no vendor client is wired into
    core.
  • Lenient validation only on the newly reserved fields (webhook url must be
    http(s) when set; secret_name must be a safe GHA secret name). adapter is
    left unchecked so an arbitrary value that parses today keeps parsing.
  • JSON Schema (all three synced copies), versioning docs, and an e2e scenario.

No metrics: key is added; the reservation lives entirely on telemetry.

Verification

  • go build ./cmd/... ./internal/..., go test ./... (1501 passed),
    golangci-lint run ./... (clean).
  • e2e module go build ./..., go vet ./..., golangci-lint run ./... (clean).
  • Generator byte-identity test proves a populated telemetry block produces a
    byte-identical plan set to one that omits it (hardened against a vacuous pass).
  • Parse/round-trip and schema-version tests assert the new fields validate at the
    current schema_version without a bump.
  • All three schema copies (internal/schema, schema/, docs/public) regenerated
    via cascade schema and confirmed byte-identical.

Closes #3

Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
@joshua-temple
joshua-temple enabled auto-merge (squash) June 21, 2026 04:29
@joshua-temple
joshua-temple merged commit 8d50998 into main Jun 21, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: vendor-neutral metrics emission for orchestrate and promote runs

1 participant