Skip to content

education:explain / skill-quality: evals.json warm-context cases untestable under the fresh-session recipe (PR #739 follow-up) #1036

Description

@kyle-sexton

This was generated by AI during triage (#657 sweep housekeeping, T8h batch conversion).

Folded from a #657 line (checked off there, this issue is the target).

Problem

Evals #1/#4/#6 in plugins/education/skills/explain/evals/evals.json depend on warm conversational context (a prior assistant message, or an in-context referent), but the manual eval recipe pastes each prompt into a fresh session (docs/MIGRATION-PLAYBOOK.md:351) and the evals schema (plugins/skill-quality/reference/evals.schema.json) has no conversation-history fixture field.

Sharpest case: eval #1 (empty-argument-anaphora-default) and eval #7 (cold-start-empty-argument-asks-what) carry byte-identical prompts ("I don't get it.") with contradictory expected outputs. Under the fresh-session recipe, #1 collapses into #7's cold-start condition and cannot pass as written. #4 ("this proof" with empty files) and #6 ("wait, what does this actually do?") likewise have no referent to resolve, so the skill's own cold-start rule fires instead of the warm-context behavior each case means to exercise. validate-evals is structure-only, so it stays green over this — the gap is invisible to automated checks.

Decision needed

  1. Add a conversation-history fixture mechanism to the evals schema upstream in skill-quality (plugins/skill-quality/reference/evals.schema.json + whatever runner/recipe reads it) — covers every skill's warm-context cases, not just education:explain's. Larger, cross-plugin change.
  2. Restructure the three cases to be self-contained — embedding prior context into the prompt itself changes what eval chore: initialize marketplace scaffold #1 asserts (it stops testing anaphora-with-warm-context and starts testing something else), or merging/removing a case drops real warm-path coverage entirely.

This is genuinely open design space (not a single maintainer-vetoable default): option 1 is the more correct fix but is a skill-quality-owned schema change with blast radius beyond this one plugin; option 2 is scoped to education:explain but knowingly degrades what the evals actually cover. A maintainer should pick the scope before either is implemented.

Origin: PR #739 review threads (evals.json lines 7, 43, 67).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.wayfind: designWayfind decision item: design-space or domain-model decision; human in the loop.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions