Skip to content

Remove the reports (analyzer) feature - #1287

Open
kyle-compute wants to merge 1 commit into
stagingfrom
qa-rebuild/a-delete-reports
Open

Remove the reports (analyzer) feature#1287
kyle-compute wants to merge 1 commit into
stagingfrom
qa-rebuild/a-delete-reports

Conversation

@kyle-compute

@kyle-compute kyle-compute commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

This PR deletes the reports feature.

It is PR A of six (A–F) rebuilding analysis so every analysis job runs as a normal trial instead of through its own separate pipeline. This is the rebuild of [#1122](#1122).

This PR only deletes old behavior. It does not add the replacement yet.

What is being deleted

Reports let a user select completed eval runs and have an LLM generate a written analysis of them.

That feature had its own:

  • database tables: analyzers and analyzer_experiments
  • worker path: ANALYZER jobs with mode = "report"
  • backend router: backend/api/routers/reports.py
  • CLI command: oddish report
  • sandbox/report infrastructure
  • frontend /analyzers pages
  • tests for those paths

This PR removes all of it.

In total:

  • 94 files deleted entirely: 13,369 lines
  • 17 files edited: +172 / −429 lines, almost entirely removing imports, registrations, navigation, or documentation for deleted code

Examples:

  • workers no longer register the report handler
  • the frontend no longer shows the Analyzers nav item
  • AGENTS.md no longer documents reports

Database change

This PR adds one migration:

dropanalyzers01_drop_analyzers_tables.py

It drops:

analyzer_experiments
analyzers

in that order because analyzer_experiments is the child table.

No surviving table has a foreign key to either one, so nothing else is deleted.

The downgrade recreates both tables and their indexes.

What happens to already-queued report jobs

A worker may still receive an old job like:

ANALYZER
payload.mode = "report"

after this deploy.

Instead of crashing or retrying forever, the dispatcher permanently fails it once with:

reports feature removed; report ANALYZER jobs no longer run

Permanent failure means the job is marked failed and is not retried.

What is intentionally kept

Three related things remain for later PRs:

  1. Agent capabilities stays until PR B.
  2. analyzer_blocks stays because live QA data still reads it. PR E removes it.
  3. post_trial_sandbox_enabled stays until PR D.

Until PR D merges, the Modal environment must not set:

ODDISH_POST_TRIAL_SANDBOX_ENABLED=true

The code behind that flag is deleted in this PR.

Verification

The test suites are already red on a fresh database on unmodified staging, so the useful check is whether this branch introduces new failures.

I ran this branch and staging against the same local Postgres 16 setup and compared the failure sets.

Result:

  • oddish

    • branch: 79 failed + 21 errors
    • staging: 79 failed + 21 errors
    • failure-set difference: 0
    • 3,181 tests pass on this branch
  • backend

    • branch: 48 failures
    • staging: 57 failures
    • 0 branch-only failures
    • the 9 failures that disappeared belonged to files deleted by this PR

I also verified:

  • alembic upgrade head succeeds from an empty Postgres database
  • migration history ends at exactly one head: dropanalyzers01
  • analyzers and analyzer_experiments are gone
  • analyzer_blocks and trials remain
  • import oddish succeeds
  • import backend succeeds
  • pnpm build exits 0
  • the frontend build contains no /analyzers route

Tests

No new tests are added.

This is a deletion PR: tests whose only subject was deleted are deleted with it. Nothing is added solely to prove that removed code is absent.

PR A of the analysis-as-trials rebuild: delete the reports/evals stack
end-to-end. Gone: the oddish evals/ package, reports core + CLI
(core/analyzers.py, cli/report.py), the report worker arm
(workers/queue/analyzer_handler.py — verified report-only), the backend
sandbox-LLM stack (api/services/sandbox/, sandbox_llm_client.py,
worker/analyzer_sandbox.py), report prompt/parse/runner blocks, ops
entrypoints, the analyzers UI, and their test suites — 94 files,
13,369 lines.

Migration dropanalyzers01 (chained on agentcap01) drops analyzers +
analyzer_experiments. analyzer_blocks stays: summaries and capabilities
still write it, and its analyzer_id is a plain string with no FK.

ANALYZER worker jobs keep their trajectory_summary and
agent_capabilities modes; any surviving report-mode job now fails
terminally instead of retrying into a handler that no longer exists.
The cleanup sweep's ANALYZER domain-mirror arm is removed with the
table it mirrored into. LLMClientType.SANDBOX keeps its enum value for
historical analyzer_blocks rows but has no registered backend;
post_trial_sandbox_enabled (default false) must stay off until the
classifier dies in the cutover PR.
@vercel

vercel Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
oddish-app Ready Ready Preview Aug 18, 2026 10:00pm

@github-actions

Copy link
Copy Markdown
Contributor

Oddish preview

Commit: 4ba287ef67948eea61482bfacb3be7caa3286411

Surface Link Target
Frontend https://pr-1287.oddish.app Vercel preview for 4ba287e
Backend oddish-pr-1287 oddish-pr-1287
Database project ssxnhxsbrwvwfihguxhp project ssxnhxsbrwvwfihguxhp

Vercel deployment URL: https://oddish-8cytup76z.oddish.app

Plan:

  • Frontend deploy: true
  • Backend deploy: true
  • Migrations: true

This comment is updated by the PR Preview workflow.

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