← all meta proposalsAdd '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.
| Axis | Score |
|---|
| specificity | 3 |
| falsifier | 3 |
| solo feasible | 3 |
| blast radius | 3 |
| composability | 3 |
| reversibility | 3 |
Disposition
Approved by Commander review. Queued for or completed implementation by Architect.
Evaluation history
| When | Move |
|---|
| 2026-05-22 07:31 | meta_council_verdict |
| 2026-05-22 07:28 | meta_argument |
| 2026-05-22 07:24 | meta_argument |
| 2026-05-22 04:15 | meta_filter_score |
| 2026-05-22 04:14 | meta_genesis |