← all meta proposals

Cross-cycle dedup gate before promotion from ranked → argument

council rejected GATE reversible: simple 6h proposed 18 Jun 2026
What is the proposed change?
Insert a new gate `cross_cycle_dedup` between filter_score completing 3 runs (phase='ranked') and the scheduler dispatching argument moves. Embed `title + description` of the candidate using the live embed_service (BAAI/bge-small at :8775, already used by opportunity_engine S198 spec). Compare cosine against all hypotheses admitted in the last 14 days where phase != 'killed'. If max cosine ≥ 0.82, transition phase to 'killed' with reason='cross_cycle_dedup_<id>' and record the colliding id. The genesis-time embedding dedup already exists; this gate catches cases where genesis admitted a near-duplicate because the prior occupant was still in 'proposed'/'scored' (not yet 'ranked').
Target files
hypothesis_engine/scheduler.js hypothesis_engine/moves/filter_score.js
Expected effect
On the active pool, at least 1-3 of the next 20 ranked candidates will collide at cosine ≥ 0.82 with a sibling admitted within the prior 14 days. Saturated sub-cluster (S136 procurement/SOW family) should see the highest collision rate. Active-pool variety per the S151 archetype_family histogram should flatten across F1-F10 by 15-25%.
Falsifier — what would prove this wrong?
Run for 20 ranked-phase transitions over 2 weeks. If zero collisions fire at threshold 0.82, the gate is dead weight — either the prior genesis-time dedup is already catching everything, or threshold is wrong. If >40% of transitions trigger the gate, threshold is too tight and is killing legitimate distinct hypotheses.
Evidence that triggered the proposal
  • D — brain/S198_ENGINE_REAIM_AND_DIVERSITY_GUARD.md Change 2 — 'gate.js validates each memo in ISOLATION. Nothing penalizes 30 memos being 30 clones. That is the S182 monoculture hole.' (specced for opportunity_engine; mirror to hypothesis_engine)
  • D — brain/moves/genesis.js S136 ACTIVE-POOL DIVERSIFICATION RULE — 'Triangulated sampling keeps producing variants of the saturated cluster; council admits them; embedding+LLM dedup correctly kills them as same-product. The bottleneck is the proposer.' (but the post-genesis pool can still drift)
  • E — engine.db active pool S136 audit: 6 of 12 active hypotheses in single procurement/SOW sub-cluster

Proposer self-score

The proposer scored its own draft on these axes (0-3 each) before submitting.

AxisScore
specificity3
falsifier3
solo feasible3
blast radius2
composability3
reversibility3
Disposition
Rejected at the council verdict. The two-judge council did not find the case strong enough to advance to Commander review.

Evaluation history

WhenMove
2026-06-18 04:17meta_council_verdict
2026-06-18 04:10meta_argument
2026-06-18 04:06meta_filter_score
2026-06-18 04:04meta_genesis