Skip to content

EBP-3108: Add Python output evals and API-aware graders - #15

Merged
aelsammak merged 3 commits into
devfrom
EBP-3108
Oct 21, 2026
Merged

aelsammak merged 3 commits into
devfrom
EBP-3108

Conversation

@aelsammak

@aelsammak aelsammak commented Oct 19, 2026 •

Copy link
Copy Markdown

What is the purpose of this change?

Add output eval coverage for the Solace Python API. The JCSMP-only graders (compile, maven_release_match, java_disclaimer, live_verify) could not check a Python project, so the graders now take an api field, and new Python cases exercise the skill content from EBP-3105, EBP-3106, and EBP-3107.

How is this accomplished?

  1. compile, release_match, disclaimer, and live_verify take api: jcsmp|python (default jcsmp). release_match replaces maven_release_match, and disclaimer replaces java_disclaimer. The ticket named separate py_compile and pypi_release_match graders; one field on each grader keeps the set consistent.
  2. Python compile: for each requirements.txt, a fresh venv outside the project, pip install -r, py_compile of every script, and an import smoke of every module. Python release_match: a solace-pubsubplus==<PyPI info.version> line.
  3. Python live_verify writes config.json into the generated project after the subject model finishes, then runs ./verify.sh roundtrip. A tcps:// host also needs the new OUTPUT_EVAL_BROKER_TRUST_STORE variable, because the Python API has no default trust store. The runner exits before any case when it is missing.
  4. file_exists gets count, and file globs skip .venv/ and __pycache__/.
  5. Six Python cases: Quickstart implement (must_pass, compile, release match, live verify), design first on a bare build prompt (must_pass), debug redirect (must_pass), Solace Suggested over tcps:// with two projects, design summary with a docs WebFetch, and persisted request routed to Guaranteed Pub/Sub.
  6. Both Suggested cases (Python, and the existing JCSMP case) exclude heredoc text from the verify.sh run check. Sonnet wrote the checklist with a heredoc that quotes the handed-back command.
  7. evals/README.md documents the Python graders and the trust store variable.

Eval results (local, live verify ran against a Solace Cloud tcps:// broker)

  • Opus (--model opus): 17/17. Live verify passed for the JCSMP and Python compile cases.
  • Sonnet (claude-sonnet-5-5): 16/17 on the full leg, with live verify passed for both compile cases.
  • Trigger evals not run: no skill content changed.

Anything reviewers should focus on/be aware of?
N/A

- Give compile, release_match, disclaimer, and live_verify one api field
  (jcsmp default, python); release_match replaces maven_release_match and
  disclaimer replaces java_disclaimer
- Python compile installs each requirements.txt into a fresh venv, then runs
  py_compile and an import smoke; Python release_match checks the PyPI pin
- Python live_verify writes config.json after the subject model finishes;
  add OUTPUT_EVAL_BROKER_TRUST_STORE for tcps:// hosts (no default trust store)
- Add file_exists count, and skip .venv and __pycache__ in file globs
- Add six Python cases mirroring the JCSMP set, plus persisted-request routing
- Exclude heredoc checklist text from the verify.sh run check in both
  Suggested cases (false positive on Sonnet)
- Document the Python graders and the trust store variable in evals/README.md
- Limit the verify.sh heredoc exclusion to text inside a heredoc body
- Delete config.json after the Python live round trip and fail as INFRA when the write fails
- Correct README claims about compile cases, the import smoke, and timeout scope
@aelsammak
aelsammak requested a review from mtite-sol October 20, 2026 16:23
@aelsammak
aelsammak marked this pull request as ready for review October 20, 2026 16:23
@mtite-sol

Copy link
Copy Markdown

Which test failed on sonnet? Does it fail all the time or just flaky?

@aelsammak

aelsammak commented Oct 20, 2026 •

Copy link
Copy Markdown
Author

Which test failed on sonnet? Does it fail all the time or just flaky?

@mtite-sol
The test that failed is feedback-email-before-confirm-negative which is related to the solace-messaging-feedback skill. However, that one seems to be model variance. I ran this test solo 3 times and didnt run into any failure. Gotta love AI 😄

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

Requesting changes for the heredoc exclude_pattern on the verify.sh graders; details inline.

Comment thread plugins/solace-messaging-skills/evals/output-evals.json Outdated

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

Just one change requested but otherwise LGTM!

- Replace the four heredoc exclude_pattern regexes with an opt-in ignore_heredoc_bodies flag on the tool_use grader, so each grader keeps one copy of the verify.sh verb list
- Add a strip_heredoc_bodies jq function that drops heredoc bodies from Bash commands before tojson, closing the hole where a lowercase or digit delimiter (EOF2, Eof) hid a real verify.sh run
- Escape the quote class as \\x27 so the jq string literal compiles; a compile error would silently empty every tool_use grader
- Add ignore_heredoc_bodies to the tool_use schema and the runner grader notes
@aelsammak
aelsammak merged commit 9c19e86 into dev Oct 21, 2026
5 checks passed
@aelsammak
aelsammak deleted the EBP-3108 branch October 21, 2026 22: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.

2 participants