Skip to content

Multi-CURIE expected outputs, a run-level --env, and shared suites in the radiator - #62

Merged
maximusunc merged 3 commits into
mainfrom
claude/hopeful-darwin-3kmynk
Oct 29, 2026
Merged

maximusunc merged 3 commits into
mainfrom
claude/hopeful-darwin-3kmynk

Conversation

@maximusunc

Copy link
Copy Markdown
Collaborator

This switches the harness and the Information Radiator to translator-testing-model 0.6.0 (TranslatorSRI/TranslatorTestingModel#43). CI will fail at install until translator-testing-model==0.6.0 is on PyPI.

Match an expected output on any of its CURIEs

Test assets name their expected output with output_ids, a list.

  • Pass/fail: each CURIE is judged exactly as a single CURIE was before, then combined. TopAnswer and Acceptable pass if any CURIE passes; BadButForgivable and NeverShow fail if any CURIE fails.
  • Rank and score: reported from the best-ranked match. Before, a CURIE bound by several results reported the last one.
  • Split answers: each agent's result records found_curies, the CURIEs that came back, best first. More than one means Translator split the answer.
  • Normalization: every CURIE is normalized, and duplicates are counted once.
  • Radiator schema (radiator_schema version 2): AssetResult.output_curie becomes output_curies, and AgentResult gains found_curies. Version 1 records, such as saved runs, are still read. Migration 0007 converts existing rows.
  • Zebrunner: the OutputCurie label comma-separates several CURIEs.

--env: the run says which environment it tests

Suites are the same in every environment, and 0.6.0 drops test_env from test cases.

  • test-harness now requires --env {dev,ci,test,prod}. It drives the services queried, the node normalizer, the TRAPI version check, CI's cache bypass, and the environment Zebrunner and the radiator record.
  • test-harness-cycle and test-harness-sweep take --env and pass it to every run.
  • Helm: a cycle entry tests the environment it's named for (or its env), and every entry defaults to mvp_tests, pathfinder_tests and performance_tests. The sweep needs sweep.env.
  • run-step.sh keeps --env. Compose has a HARNESS_ENV setting.

The radiator: one history per shared suite

Runs recorded under the old per-environment copies are filed under the shared suite, keeping the old name in runs.source_suite:

Old names Shared suite
sprint_6_tests, dev_refactor_tests, test_integration, prod_integration mvp_tests
pathfinder_tests_TEST, pathfinder_tests_PROD pathfinder_tests

A history line is still suite, env, target and query type, so each environment's history, trends and diffs carry on from its own old copy. Migration 0008 renames the runs already stored, and ingest renames any that arrive later, such as a run saved before the switch. A run's page says what it was recorded as.

Testing

  • Harness: 199 passing, including new tests for each multi-CURIE rule and for --env. A 20,000-case comparison against the old analysis found no pass/fail difference for single-CURIE assets.
  • Radiator: 102 passing against Postgres, and alembic check is clean. Migrations 0007 and 0008 were tested up and down on sample rows.
  • Not run:
    • A live run against Translator: the sandbox I worked in blocks the SmartAPI registry.
    • A render of the Helm charts: CI's helm-lint job will do that.

Rollout

  1. Release translator-testing-model 0.6.0.
  2. Deploy the radiator; migrations 0007 and 0008 run on startup.
  3. In one gap between cycles, deploy this harness, with each cycle and sweep config passing its environment, and merge the NCATSTranslator/Tests migration.

Generated by Claude Code

Test assets now name their expected output with output_ids, a list
(translator-testing-model 0.6.0), so an answer Translator returns under
any of its identifiers counts, eg sirolimus as CHEBI:9168 or
PUBCHEM.COMPOUND:5284616 now that node normalization keeps them apart.

Each CURIE is judged as a single CURIE was before. TopAnswer and
Acceptable pass if any of them passes; BadButForgivable and NeverShow
fail if any of them fails. The rank and score reported are the
best-ranked match's (before, a CURIE bound by several results reported
the last one), and found_curies records which CURIEs came back, so an
answer split across several shows up on the dashboard.

Information Radiator: AssetResult.output_curie becomes the list
output_curies and AgentResult gains found_curies (schema version 2;
version 1 records, eg runs saved before this, are still read).
Migration 0007 converts existing rows. Zebrunner's OutputCurie label
comma-separates several CURIEs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d
Suites are the same in every environment, so test cases no longer say
which one they run in (translator-testing-model 0.6.0 drops test_env).
test-harness takes a required --env (dev, ci, test or prod), and
everything that read test.test_env uses it: the services queried, the
node normalizer, the TRAPI version check, CI's cache bypass, and the
environment Zebrunner and the Information Radiator record for the run.

test-harness-cycle and test-harness-sweep take --env too and pass it to
every run. The Helm chart's cycles test the environment their entry is
named for (or its env), all with the same suites (mvp_tests,
pathfinder_tests, performance_tests); the sweep needs sweep.env. The
bundled local suites, examples and docs are updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d
The Tests repo's per-environment copies of a suite become one suite run
in every environment (mvp_tests, pathfinder_tests), so runs recorded
under an old name (sprint_6_tests, dev_refactor_tests, test_integration,
prod_integration, pathfinder_tests_TEST, pathfinder_tests_PROD) are filed
under the shared one, keeping the old name in runs.source_suite.
Migration 0008 renames the runs already recorded; ingest renames any
that arrive later, eg a run saved before the switch. A series is still
suite, env, target and query type, so each environment's history,
trends and diffs carry on from its old copy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d
@maximusunc
maximusunc merged commit 5b43596 into main Oct 29, 2026
7 of 8 checks passed
@maximusunc
maximusunc deleted the claude/hopeful-darwin-3kmynk branch October 29, 2026 17:29
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