Skip to content

feat(analysis): deterministic outcome evaluation (mureo_outcome_evaluate)#361

Merged
hyoshi merged 1 commit into
mainfrom
feat/outcome-eval
Jul 7, 2026
Merged

feat(analysis): deterministic outcome evaluation (mureo_outcome_evaluate)#361
hyoshi merged 1 commit into
mainfrom
feat/outcome-eval

Conversation

@hyoshi

@hyoshi hyoshi commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Feature 2 of the OSS roadmap. Turns the observation-window review (daily-check) and the /learn signal from an LLM judgement call into a reproducible verdict.

  • Pure engine mureo/analysis/outcome_eval.py: evaluate_metric / evaluate_outcome compare a before/after metric snapshot → improved / regressed / inconclusive per metric + overall. Metric direction is explicit (cpa/cpc/cpl/cpm lower-is-better; conversions/ctr/cvr/roas higher-is-better; cost/spend/clicks/impressions volume-only, never scored). A change within ±noise_pct (default 10%) or a zero/absent baseline is inconclusive — no fabricated swing.
  • MCP tool mureo_outcome_evaluate (before = action_log metrics_at_action, after = current numbers).
  • Skill wiring: daily-check's evidence step now calls the tool instead of eyeballing, and normalizes hosted/plugin metric names to the standard keys first.
  • Platform-agnostic: it's a pure calculation (no data-path interception), so unlike the policy gate it works for TikTok / official MCPs / plugins — the caller just feeds comparable metric names.

Test plan

  • tests/test_outcome_eval.py — pure eval (directions, noise band, zero baseline, string coercion) + MCP tool registration/dispatch
  • Tool-count assertions updated (mureo context 8→9, total 189→190)
  • ruff / black / mypy clean on mureo/ (244 files)
  • CI green

Roadmap: #1 policy gate (merged #360) · #2 outcome eval (this) · #3 generic STATE.json anomaly (pending). Calculation-tier features (#2, #3) reach hosted MCPs; hard enforcement for those needs the gateway (#359).

https://claude.ai/code/session_0195WBK6YopTveq9RAQE2xMz

…ate)

Turn the observation-window review (daily-check) and /learn signal from an
LLM judgement call into a reproducible verdict. New pure engine
mureo/analysis/outcome_eval.py compares a before/after metric snapshot and
returns improved / regressed / inconclusive per metric + overall:

- Metric direction is explicit (cpa/cpc/cpl/cpm lower-is-better;
  conversions/ctr/cvr/roas higher-is-better; cost/spend/clicks/impressions
  volume-only, never scored).
- A change within +/-noise_pct (default 10%) or a zero/absent baseline is
  inconclusive — no fabricated swing (same noise discipline as the anomaly
  detector).
- Pure and platform-agnostic: works for any platform (google_ads / meta_ads /
  tiktok_ads / plugins) as long as the caller feeds comparable metric names.

Exposed as the mureo_outcome_evaluate MCP tool (before = action_log
metrics_at_action, after = current). daily-check's evidence step now calls it
instead of eyeballing, and normalizes hosted/plugin metric names to the
standard keys first so the verdict works for TikTok too.

TDD: tests/test_outcome_eval.py (pure eval + MCP tool). Tool-count assertions
updated (mureo context 8->9, total 189->190).
@hyoshi
hyoshi merged commit efb794f into main Jul 7, 2026
9 checks passed
@hyoshi
hyoshi deleted the feat/outcome-eval branch July 7, 2026 00:58
hyoshi added a commit that referenced this pull request Jul 7, 2026
Ships the three OSS-roadmap features merged since 0.10.17: built-in
STRATEGY.md guardrail gate (#360), deterministic outcome evaluation (#361),
and generic anomaly detection wired for every platform (#362).
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