Skip to content

Expose observation metadata for RLSSM producers - #341

Open
AlexanderFengler wants to merge 5 commits into
codex/observation-producer-interfacesfrom
codex/observation-producer-rlssm
Open

Expose observation metadata for RLSSM producers#341
AlexanderFengler wants to merge 5 commits into
codex/observation-producer-interfacesfrom
codex/observation-producer-rlssm

Conversation

@AlexanderFengler

Copy link
Copy Markdown
Member

Depends on #340.

Scope

  • expose semantic observation metadata from ssms.rl.ModelConfig through the generic producer accessor
  • derive the two existing RL response layouts only:
    • rt, response for RT-based models
    • response for choice-only models
  • take categorical labels from the ordered raw choices tuple, independently of response_to_choice
  • require an explicit ordered v1 schema for every non-standard response layout
  • snapshot resolved metadata on AssembledModel while returning a fresh descriptor on access

Compatibility boundary

This remains an out-of-band metadata interface. It does not change RL simulation or predictive panels, dummy RT behavior, context fields, participant input order, learning updates, preset metadata, or to_hssm_config_dict().

The new ModelConfig inputs are keyword-only. AssembledModel retains its exact constructor, pattern-matching, dataclass-field, serialization, representation, and equality surfaces. Its private schema snapshot is not a dataclass field.

The one intentional tightening is that an assembled model with a non-standard response layout must now declare that layout explicitly. Standard layouts cannot override their derived schemas, so RT and response semantics continue to have one source of truth.

Evidence

  • focused RL metadata contract: 15 passed
  • complete tests/rl suite: 309 passed
  • complete package suite: 1,258 passed, 134 skipped
  • repository-wide Ruff check and format check: passed
  • focused affected-file type check: passed after isolating accepted repository-wide missing-stub and pre-existing optional-narrowing categories
  • live HSSM bridge canaries against this worktree: 3 passed
  • independent seeded parity checks for RT and 2-, 3-, and 4-choice panels, preset info, bridge dictionaries, omission handling, and learning trajectories: unchanged

Deferred

Cross-repository consumer matrices and contributor documentation remain isolated to 6A3d. No downstream consumer is switched to normalized structured results in this PR.

@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8079d103-a376-4ae7-9a56-7d30b1fc327a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Aug 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.36842% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
ssms/rl/config.py 96.55% 1 Missing ⚠️
Flag Coverage Δ
unittests 94.42% <97.36%> (+0.02%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
ssms/rl/assembled.py 95.58% <100.00%> (+0.18%) ⬆️
ssms/rl/config.py 94.17% <96.55%> (+0.26%) ⬆️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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.

1 participant