You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
verifier: Pareto admission gate (Phase 4 of self-evolution)
The journal-prescribed insight r-46988c97 (conf 0.78) requires
"living archive admission gated by Pareto dominance across externally
validated axes". Implement the multi-axis admission check and add
register_admission_mode setting to opt in.
Default axis set (4 axes, after distribution-analysis pre-flight):
- verified_confidence
- premises_supported_count
- peer_differentiators_count
- inverse_alias_gap
known_prior_art_score is excluded by default — it's all-zero on
journals without curated known_prior_art anchors (the common case),
so it would be a Pareto no-op. Re-includable when a journal does
maintain anchors AND verifier evaluations produce differentiator
lists. The full 5-axis dict is still STORED on every entry so
flipping the axis set later doesn't require reverification.
How it works:
- register_admission_mode = "scalar" (default — backward compat):
existing single-floor admission unchanged.
- register_admission_mode = "pareto":
after the scalar gate approves, also run a Pareto-dominance
check against existing active entries. Reject the candidate
if any existing entry beats it on every axis (>= on all,
strictly > on at least one). Catches "just like X but
slightly worse on every dimension" admissions the scalar
floor cannot see.
Implementation:
- _compute_pareto_axes: single source of truth for the 5-axis
dict, used by verify_insight (new candidates) and the backfill
pass (existing entries). Refactor of previously inlined code.
- _pareto_dominates(existing, candidate): >= on all axes, > on
at least one. Uses _PARETO_AXES tuple as the axis set.
- _check_pareto_admission(candidate): O(N) scan of register;
returns (admitted, dominating_entry_ids).
- verify_insight: pareto_axes computed once before _register_gate;
Pareto check runs after gate approves (only when admission_mode
is pareto). Storage path unchanged (axes always persisted).
Smoke test against the ideation_on_ideation register (21 entries):
- existing Pareto frontier = 8 entries, each holding ≥1 axis
- strictly-worse candidate → rejected (dominated by 5 entries)
- identical-to-r-c6745772 candidate → admitted (Pareto allows ties)
- mediocre-but-novel-on-alias_gap candidate → admitted via the
structural-distinctness axis
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments