Skip to content

feat(F192): evidence-source prerequisite gate for eval scheduler #1353

Description

@mindfn

Problem

When OTel is disabled on a runtime (e.g. TELEMETRY_HMAC_SALT absent or OTEL_SDK_DISABLED=true), eval domains backed by f167-runtime-eval cannot produce fresh evidence. Without a prerequisite gate, the daily eval scheduler invokes the eval cat anyway, consuming a full LLM session to evaluate a gap that was already known at boot time.

Design questions (from maintainer review of #1352)

1. Is "telemetry unavailable" a first-class eval result, or should repeated identical gaps be skipped?

The F192 spec treats telemetry unavailability as a legitimate eval finding. The question is whether the repeated daily re-discovery of the same boot-time condition adds value, or whether a single skip notice (with the gap remaining visible in the domain thread) is sufficient until the condition changes.

Proposed: A boot-time check that posts a stable SKIPPED notice is sufficient. The gap remains visible in the eval domain's system thread. The eval cat is only invoked when evidence production is possible.

2. How should availability be checked against the actual adapter target?

PR #1352's probe checks the scheduler process's telemetryHandle.getMetricsText. In a split-runtime deployment where the scheduler and the evidence source are different processes (e.g. scheduler on one host, EVAL_BASE_URL pointing to another), this probe checks the wrong runtime.

Options:

  • A) Probe the adapter target endpoint — correct in split-runtime, but adds network I/O to the cron hot path
  • B) Probe the local scheduler's telemetry state — correct when scheduler == evidence source (single-process deployment), simpler
  • C) Configurable: local probe with an optional remote override — covers both deployment shapes

Current deployment uses single-process (scheduler is the evidence source), making option B correct today.

3. Scope of ownerCatId correction

ownerCatId: opus-47 in eval-a2a.yaml references a catId no longer in the active roster. This should be split into a separate commit or its own PR.

4. Provenance corrections for upstream context

The original PR referenced fork-internal artifacts that don't resolve in this upstream repo.

Observable evidence in this repo:

Proposed scope

  1. Add evidencePrereqProbe to EvalDomainScheduleOpts — runs upstream of existing publishPrereqProbe
  2. Probe factory: createTelemetryEvidencePrereqProbe — checks whether the evidence source can produce data
  3. Fail-closed: probe throws -> treated as evidence-unavailable -> SKIPPED notice at zero LLM cost
  4. Non-telemetry-backed adapters pass through
  5. Skip notice text should match the detected failure mode (Codex P2 from feat(F192): evidence-source prerequisite gate for eval scheduler #1352)

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    acceptedMaintainer accepted: ready for implementation/mergeenhancementNew feature or requesttriagedMaintainer reviewed, replied, and made an initial triage decision

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions