Skip to content

feat(evals): add Strength Acknowledgment onto the ela-writing taxonomy - #185

Merged
adnanrhussain merged 5 commits into
mainfrom
feedback-strength-acknowledgement
Aug 28, 2026
Merged

feat(evals): add Strength Acknowledgment onto the ela-writing taxonomy#185
adnanrhussain merged 5 commits into
mainfrom
feedback-strength-acknowledgement

Conversation

@adnanrhussain

@adnanrhussain adnanrhussain commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Migrates Acknowledges Strength onto the evals/feedback/ela-writing/ taxonomy as Strength Acknowledgement, at evals/feedback/ela-writing/strength-acknowledgement/. Same pattern as the student-facing-text family (#159, #161, #163, #173#177). The evaluator already had a complete contract; this moves it, renames it, and closes the gaps that family standardised on.

Evaluator

  • evaluator.id: feedback.ela_writing.strength_acknowledgement
  • stable_id: 99370b62-6791-4535-a77e-dda6806c635c, id_history: ["feedback.productive_coaching_writing_feedback.is_acknowledges_strength"]
  • evaluator.name: Strength Acknowledgement Evaluator — drops the Feedback-Quality suffix so it matches the <X> Evaluator form used across student-facing-text
  • Step id evaluate_is_acknowledges_strengthevaluate_strength_acknowledgement
  • Single LLM step on gpt-5.4-2026-03-05, temperature 1, unchanged

quality_score

The output score field was named after the evaluator (acknowledges_strength_score). Every evaluator in this family had a differently-named field for the same binary judgement, so a consumer had to know which evaluator ran before it could read the result.

Student-facing-text names this after the measured dimensioncomplexity_score, identical across all 8 of its evaluators. This adopts the same convention: quality_score, shared across all 7 feedback evaluators. Values are unchanged (integer, 0/1).

Renamed in output_schema.json (property, required[], description), fixtures.json (expected), and the notebook. Nothing consumes these configs — no TypeScript or Python SDK reads them — so there is no downstream breakage.

Also fixed

The notebook carried two copy-paste references to evals/prompts/purpose, a leftover from the Purpose evaluator it was templated from. Both now point at this directory.

Not applicable

The grade_level string standardisation doesn't apply — this evaluator takes student_text and feedback_text, no grade input. supported_grades: ["8", "9"] is metadata only.

Verification

scripts/check.py all pass.

Spelling: "acknowledgement"

The public name uses acknowledgement; the repo used acknowledgment in 14 places. Both are valid — the former is the British variant, the latter standard US — so this is a variant choice, not a typo fix. Standardised on acknowledgement throughout, including system.txt.

Editing prompt text is deliberately out of scope for a rename elsewhere in this migration series, so calling it out: it was authorised here specifically, because leaving the prompt on the other spelling would make the evaluator internally inconsistent with its own name and folder. The pinned sha256 for system.txt is recomputed to match (d66c26d4…3a96d931…), and scripts/check.py verifies it.

Copilot AI lite review requested due to automatic review settings August 21, 2026 06:04

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates the “Acknowledges Strength” feedback-quality evaluator into the evals/feedback/ela-writing/strength-acknowledgement/ taxonomy as Strength Acknowledgement, aligning it with the standardized, config-driven evaluator contract (schemas, fixtures, notebook) used across the evaluator set.

Changes:

  • Adds the evaluator contract artifacts at the new taxonomy path (config.json, input_schema.json, output_schema.json, fixtures.json, prompts, and notebook).
  • Renames the evaluator identity and step id, and standardizes the binary output field name to quality_score.
  • Updates prompt content spelling to “acknowledgement” and refreshes the pinned prompt hash in config.json.

Reviewed changes

Copilot reviewed 5 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
evals/feedback/ela-writing/strength-acknowledgement/config.json New evaluator identity (id/stable_id/id_history/name) and step id; pins prompt hashes.
evals/feedback/ela-writing/strength-acknowledgement/input_schema.json Defines structured inputs (student_text, feedback_text) for the evaluator contract.
evals/feedback/ela-writing/strength-acknowledgement/output_schema.json Renames the binary output field to quality_score and updates schema metadata.
evals/feedback/ela-writing/strength-acknowledgement/fixtures.json Updates expected outputs to use quality_score.
evals/feedback/ela-writing/strength-acknowledgement/system.txt Updates prompt wording/spelling; retains evaluation rubric and examples.
evals/feedback/ela-writing/strength-acknowledgement/user.txt Adds the user prompt template using {student_text} and {feedback_text} placeholders.
evals/feedback/ela-writing/strength-acknowledgement/example_notebook.ipynb Updates notebook naming, paths, function name, and expected field reads to quality_score.
Suppressed comments (2)

evals/feedback/ela-writing/strength-acknowledgement/example_notebook.ipynb:118

  • Typo in the notebook docstring: “wheter” should be “whether”. Note this same typo also appears in other evaluator notebooks, so fixing only here would leave inconsistent docs.
    evals/feedback/ela-writing/strength-acknowledgement/system.txt:78
  • The prompt text still instructs the model to output an overall answer (and the calibration examples label the correct judgment as answer = ...), but this evaluator’s structured output schema uses quality_score. With parser.kind = structured_output, this terminology mismatch can confuse the model and/or reduce adherence to the schema. Update the prompt language to consistently refer to quality_score (and update the example judgments accordingly).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

adnanrhussain added a commit that referenced this pull request Aug 21, 2026
Adds the 7 evaluators migrated to evals/feedback/ela-writing/ (PRs
#179-#185). The destination root was hardcoded to the
student-facing-text path, so it's now per-family via a FAMILIES map,
with each evaluator naming its family. --list groups by family and
--all takes --family to scope to one.

Running it over the new family confirms the migration: 6 of 7 are
IDENTICAL, and the only CHANGED one is strength-acknowledgement, whose
sole diff is the deliberate acknowledgment -> acknowledgement spelling.
@adnanrhussain adnanrhussain changed the title feat(evals): add Strength Acknowledgement onto the ela-writing taxonomy feat(evals): add Strength Acknowledgment onto the ela-writing taxonomy Aug 22, 2026
@aychi1
aychi1 self-requested a review August 26, 2026 18:47

@aychi1 aychi1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, conditional on P0 max length.

@adnanrhussain
adnanrhussain force-pushed the feedback-strength-acknowledgement branch from a03e2a5 to 1d3c066 Compare August 27, 2026 07:04
Migrates the acknowledges-strength feedback evaluator to
evals/feedback/ela-writing/strength-acknowledgement/, renamed to
Strength Acknowledgement. Adds stable_id/id_history, and renames the
output score field to quality_score so the whole feedback family shares
one name for the measured dimension.

Also standardises the spelling to "acknowledgement" throughout,
including system.txt. Editing prompt text is normally out of scope for
a rename, but the public name uses this spelling and leaving the prompt
on the other variant would make the evaluator internally inconsistent.
The pinned sha256 is recomputed accordingly.
scripts/checks/eval_config.py hashes raw bytes deliberately -- text-mode
reads translate newlines, so a CRLF prompt file (or a non-UTF-8 default
locale) would make the notebook's computed hash disagree with the
sha256 the config pins, failing the drift assertion on a file CI
considers fine. The notebook now matches.
@adnanrhussain
adnanrhussain force-pushed the feedback-strength-acknowledgement branch from 1d3c066 to 0f3e2de Compare August 28, 2026 01:07
@adnanrhussain
adnanrhussain merged commit df4f90e into main Aug 28, 2026
7 checks passed
@adnanrhussain
adnanrhussain deleted the feedback-strength-acknowledgement branch August 28, 2026 01:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants