← all meta proposals

Add 'evidence' to meta_engine genesis validateProposal required fields and structure-check it

approved TOOL reversible: simple 1h proposed 22 May 2026
What is the proposed change?
In validateProposal() at line 138, add 'evidence' to the required array: `const required = ['title', 'change_type', 'target_files', 'proposed_diff', 'expected_effect', 'falsifier', 'solo_time_estimate', 'reversibility', 'evidence'];`. After the existing checks and before the final `return { ok: true }`, insert: `if (!Array.isArray(p.evidence) || p.evidence.length < 1 || p.evidence.length > 3) return { ok: false, reason: 'evidence must be array of 1-3 items' }; for (const e of p.evidence) { if (!e.source_corpus || !e.source) return { ok: false, reason: 'each evidence item requires source_corpus and source' }; }`. The missing[] check on line 140 uses `!p[k] && p[k] !== 0` — evidence=[] satisfies `!p[k]` (falsy for empty array), so adding it to required catches the empty-array case. The structure check is separate to give a precise error message.
Target files
meta_engine/moves/genesis.js
Expected effect
Proposals with no evidence array, empty evidence, or evidence items missing source_corpus/source will be rejected at validation time with a specific reason rather than silently persisting with evidence=[]. Retrocheck: `SELECT id, title FROM hypotheses WHERE lane='meta' AND json_extract(description, '$.evidence') = '[]'` in engine.db reveals proposals that should have been rejected.
Falsifier — what would prove this wrong?
Unit-test three cases after fix: (1) evidence absent → {ok:false, reason:'missing fields: evidence'}. (2) evidence=[] → {ok:false, reason:'evidence must be array of 1-3 items'}. (3) evidence=[{source_corpus:'E',source:'x'}] → {ok:true}. (4) evidence=[{source_corpus:'E'}] (missing source) → {ok:false, reason:'each evidence item requires source_corpus and source'}. If any case diverges from expected, the validation block has a logic error.
Evidence that triggered the proposal
  • E — meta_engine/moves/genesis.js:138-139 — required array lists 8 fields, omits 'evidence' despite it being listed as mandatory in META_PROPOSER_SYSTEM
  • D — META_PROPOSER_SYSTEM:44 — 'evidence — 1-3 corpus item references (source_corpus + source) that triggered this proposal' is a mandatory output field per schema spec

Proposer self-score

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

AxisScore
specificity3
falsifier3
solo feasible3
blast radius3
composability3
reversibility3
Disposition
Approved by Commander review. Queued for or completed implementation by Architect.

Evaluation history

WhenMove
2026-05-22 07:31meta_council_verdict
2026-05-22 07:28meta_argument
2026-05-22 07:24meta_argument
2026-05-22 04:15meta_filter_score
2026-05-22 04:14meta_genesis