Skip to content

Move the panel rule and the Baseline condition into the harness - #49

Merged
elsehow merged 1 commit into
mainfrom
feat/shared-panel
Nov 12, 2026
Merged

elsehow merged 1 commit into
mainfrom
feat/shared-panel

Conversation

@elsehow

@elsehow elsehow commented Nov 12, 2026

Copy link
Copy Markdown
Member

What

The panel rule and the Baseline condition move into the harness (packages/fri-forecaster), beside the ECI reader, because a second dashboard (EEAI, next PR) uses the same panel and the same condition.

  • fri_forecaster/panel.py: the table of runnable models, the selection rule (top K by Epoch's Capabilities Index, one seat per model family), the reasoning levels, and a CLI (python -m fri_forecaster.panel).
  • fri_forecaster/baseline.py: the Baseline loop's settings (no system prompt, search offered and never required, top reasoning level) and a run() helper.
  • AIRO reads both from there. redlines/registry.py keeps what is AIRO's own (colors, chart roles, ForecastBench names) joined onto the shared rows; redlines/llm.py, redlines/pi_loop.py and code/run_unified.py import the shared constants.

What does not change

Nothing AIRO asks or publishes. Checked before and after the change:

  • registry.MODELS is identical, and so are the panel and its provenance for every Epoch snapshot in data/.
  • The baseline condition's --dry-run prompt is byte-identical, and its research tools equal baseline.research_tools().
  • python3 -m redlines build && python3 -m redlines assemble leaves the tracked index.html and results unchanged.

One log line changes wording: the warning for a top model with no registry row now names fri_forecaster/panel.py. It keeps the phrases code/refresh_panel.sh greps for.

Tests

tests/test_shared_panel.py pins that AIRO's rows and minimal instrument agree with the harness; packages/fri-forecaster/tests/test_panel.py covers the rule, automatic rows and the Baseline loop. Full suite locally, with the EEAI PR on top: 524 passed, 16 skipped.

Deploying

This touches AIRO's run path, so deploy it deliberately (airo deploy), not as a side effect of something else. No data migration is needed.

🤖 Generated with Claude Code

The panel (the top-K models by Epoch's Capabilities Index we can run, one seat
per model family) and the Baseline condition (no system prompt, search offered
and never required, top reasoning level) are now shared by more than one
dashboard, so they live beside the ECI reader in packages/fri-forecaster:

- fri_forecaster/panel.py: the table of runnable models, the selection rule,
  the reasoning levels, and a CLI (python -m fri_forecaster.panel).
- fri_forecaster/baseline.py: the Baseline loop's settings and a run() helper.

AIRO reads both from there. redlines/registry.py keeps what is AIRO's own
(colors, chart roles, ForecastBench names) joined onto the shared rows;
redlines/llm.py, redlines/pi_loop.py and code/run_unified.py import the shared
constants. Nothing AIRO asks or publishes changes: registry.MODELS, the panel
for every snapshot and the baseline prompt are identical to before, and
tests/test_shared_panel.py pins that AIRO and the harness agree.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@elsehow
elsehow merged commit 74e1d23 into main Nov 12, 2026
4 checks passed
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