← all meta proposals

Add pre-genesis Jaccard dedup gate against last 30 meta hypotheses

council rejected GATE reversible: simple 4h proposed 13 Jun 2026
What is the proposed change?
After validateProposal() passes and before db.createHypothesis() (around line 271), query the last 30 meta-lane rows (any meta_ship_status) including their title + JSON.parse(description).target_files. For each new candidate, compute Jaccard similarity = |target_files ∩ prior.target_files| / |union|, plus title bigram Jaccard. If either similarity ≥ 0.5 against any prior that ended with meta_ship_status in ('council_rejected','commander_killed','filter_rejected'), skip the createHypothesis call and push to rejected[] with reason `dedup: similar_to=<priorId>, jaccard=<n>`. Threshold + lookback window as module-top consts. Idempotent — no DB write for the duplicate, no new genesis cost since the genesis call is already complete; the gate prevents downstream filter+argument+council spend.
Target files
meta_engine/moves/genesis.js
Expected effect
Of the last 19 meta runs, ≥2 candidates carry target_files identical to a prior council_rejected/commander_killed row (the 4 Commander-override pattern repeats audit/observability shapes across cycles). Re-running dry against historical proposals: ≥2 catches, ≤5 catches (otherwise threshold too aggressive). Each caught dupe saves ~$0.013 downstream pipeline cost and one Commander review slot.
Falsifier — what would prove this wrong?
Replay the last 19 meta_genesis outputs through the gate in dry-run; if 0 are caught at Jaccard ≥ 0.5, the threshold is mis-set or the duplication pattern is below detection. If ≥8/19 are caught, the gate is over-filtering and is incompatible with normal proposal variance — revert.
Evidence that triggered the proposal
  • E — Engine traces: 4 Commander overrides (3 KILL + 1 DEFER) all on audit-shaped meta proposals
  • E — brain/proposals/digest-*.json — hundreds of digest proposals, no dedup before genesis writes
  • D — META_ENGINE_PHASE_1_SPEC.md cycle steps 4-6 (genesis→filter→argument→council all consume cost per proposed row)

Proposer self-score

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

AxisScore
specificity3
falsifier3
solo feasible3
blast radius3
composability2
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-13 04:19meta_council_verdict
2026-06-13 04:10meta_argument
2026-06-13 04:05meta_filter_score
2026-06-13 04:04meta_genesis