Skip to content

feat: add Organization evaluator (early access) #138

Open
slee430 wants to merge 6 commits into
mainfrom
add-organization-evaluator
Open

feat: add Organization evaluator (early access) #138
slee430 wants to merge 6 commits into
mainfrom
add-organization-evaluator

Conversation

@slee430

@slee430 slee430 commented Jul 22, 2026

Copy link
Copy Markdown

Summary

Adds the external-facing package for the Organization dimension text-complexity evaluator, mirroring the existing intertextuality package structure.

What's included

  • config.json — evaluator spec (id literacy.gla.organization), preprocessing (FK score), single LLM step, prompt sha256 pins, and fixtures tolerance
  • system.txt / user.txt — evaluation prompts
  • input_schema.json / output_schema.json — I/O contracts
  • fixtures.json — sniff-test cases drawn from unanimously human-agreed items in the annotated sniff test
  • example_notebook.ipynb — runnable demo + drift check + sniff test

Verification

  • Prompt sha256 hashes verified against config.json
  • example_notebook.ipynb runs end to end
  • Sniff test: 7/7 pass (5 exact, 2 adjacent within tolerance)

Notes

  • Output schema follows the public package shape (complexity_score + reasoning + details).
  • Fixtures are currently weighted toward slightly_complex; more very/exceedingly examples can be added later as expert-labeled data becomes available.

@slee430 slee430 self-assigned this Jul 22, 2026
@slee430 slee430 changed the title Add organization evaluator (external): config, prompts, schemas, fixt… feat: add Organization evaluator (early access) Jul 22, 2026
@adnanrhussain
adnanrhussain force-pushed the add-organization-evaluator branch from 73fa14f to 62b8c85 Compare July 22, 2026 16:50
@slee430 slee430 removed their assignment Jul 22, 2026
@aychi1
aychi1 requested a review from Copilot July 22, 2026 19:20

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

Adds a new external-facing evaluator package for the Organization dimension under evals/literacy/qualitative-text-complexity/organization, intended to mirror the existing qualitative text complexity evaluator package structure.

Changes:

  • Added Organization evaluator prompt assets (system.txt, user.txt) and JSON I/O schemas.
  • Added evaluator configuration (config.json) and sniff-test fixtures (fixtures.json).
  • Added a runnable example notebook (example_notebook.ipynb) demonstrating evaluation + drift checking + fixture sniff testing.

Reviewed changes

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

Show a summary per file
File Description
evals/literacy/qualitative-text-complexity/organization/config.json Defines evaluator metadata, preprocessing, LLM step, schema refs, and fixture settings (currently diverges from repo config schema).
evals/literacy/qualitative-text-complexity/organization/system.txt System prompt defining the Organization rubric and evaluation guardrails.
evals/literacy/qualitative-text-complexity/organization/user.txt User prompt template with {text}, {grade_level}, {fk_score} placeholders.
evals/literacy/qualitative-text-complexity/organization/input_schema.json Input contract for text + grade_level.
evals/literacy/qualitative-text-complexity/organization/output_schema.json Output contract for complexity_score, reasoning, and details.
evals/literacy/qualitative-text-complexity/organization/fixtures.json Sniff-test fixture inputs + expected labels (currently uses the wrong expected key name).
evals/literacy/qualitative-text-complexity/organization/example_notebook.ipynb Example workflow: load config/prompts, compute FK score, run structured output, and execute fixtures sniff test.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread evals/literacy/qualitative-text-complexity/organization/config.json
Comment thread evals/literacy/qualitative-text-complexity/organization/config.json
Comment thread evals/literacy/qualitative-text-complexity/organization/config.json
Comment thread evals/literacy/qualitative-text-complexity/organization/config.json
Comment thread evals/literacy/qualitative-text-complexity/organization/config.json Outdated
Comment thread evals/literacy/qualitative-text-complexity/organization/fixtures.json Outdated
Comment thread evals/literacy/qualitative-text-complexity/organization/fixtures.json Outdated
Comment thread evals/literacy/qualitative-text-complexity/organization/fixtures.json Outdated
Comment thread evals/literacy/qualitative-text-complexity/organization/fixtures.json Outdated
Comment thread evals/literacy/qualitative-text-complexity/organization/fixtures.json Outdated

@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.

Overall LGTM, there are just a few minor changes needed.

Comment thread evals/literacy/qualitative-text-complexity/organization/config.json
Comment thread evals/literacy/qualitative-text-complexity/organization/config.json
Comment thread evals/literacy/qualitative-text-complexity/organization/config.json
Comment thread evals/literacy/qualitative-text-complexity/organization/config.json
Comment thread evals/literacy/qualitative-text-complexity/organization/config.json Outdated
Comment thread evals/literacy/qualitative-text-complexity/organization/config.json Outdated
Comment on lines +95 to +112
"fixtures": {
"sniff_test_path": "fixtures.json",
"tolerance": {
"allow_adjacent_levels": true,
"notes": "If allow_adjacent_levels is true, predictions within one rubric step of the expected label count as a pass."
}
},
"tracing": {
"expose": [
"rendered_prompt",
"raw_output",
"raw_text",
"formatted_output",
"usage"
],
"notes": "Runtime engines MUST expose these five trace fields per evaluation."
}
} No newline at end of file

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.

Hi Seung Yeon, for this, you can cross-compare with lines 75-90 of the Intertextuality config: https://github.com/learning-commons-org/evaluators/blob/main/evals/literacy/qualitative-text-complexity/intertextuality/config.json

Comment thread evals/literacy/qualitative-text-complexity/organization/fixtures.json Outdated
Seung Yeon Lee added 4 commits July 22, 2026 14:01
…ing-commons-org/evaluators into add-organization-evaluator

# Conflicts:
#	evals/literacy/qualitative-text-complexity/organization/config.json
#	evals/literacy/qualitative-text-complexity/organization/example_notebook.ipynb
#	evals/literacy/qualitative-text-complexity/organization/fixtures.json
@slee430

slee430 commented Jul 22, 2026

Copy link
Copy Markdown
Author

@aychi1 Thanks for the thorough review! I've addressed all the comments:

  • Set temperature to 1
  • Renamed the fixtures label key from complexity_level to complexity_score to match output_schema.json, and updated the notebook's sniff-test reader accordingly
  • Brought config.json into full conformance with config.schema.json: switched spec_version to $schema, added supported_grades, added type to the preprocessing and step entries, renamed fixtures.sniff_test_path to fixtures.path, and removed fields the schema doesn't allow (output_binding, the extra parser fields, the unused format_instructions placeholder, and the tracing block)
  • Stripped the notebook's execution artifacts so the strip-notebooks check passes

Re-ran the example notebook end to end — sniff test is now 7/7 exact. All 5 local checks pass.

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