← all meta proposals

Auto-expire S112 PRE-SEND-GATE doctrine block in genesis.js by run-count check

filter rejected PROMPT reversible: simple 3h proposed 22 May 2026
What is the proposed change?
Replace the hardcoded PROPOSER_SYSTEM string with a function buildProposerSystem(genesisRunCount). At genesis start, before constructing the prompt, query: `SELECT COUNT(*) as n FROM moves WHERE move_type='genesis' AND error IS NULL AND lane='product'` to get genesisRunCount. The function assembles PROPOSER_SYSTEM by concatenating all current blocks but conditionally omits S112 when genesisRunCount > S112_WINDOW (constant: 20) + S112_ACTIVATION_RUN (query once: `SELECT COUNT(*) FROM moves WHERE move_type='genesis' AND lane='product' AND created_at < '2026-04-19'`). Apply same pattern to S121 (40-run window from 2026-04-23). Do not add dynamic expiry to S110 (no run-count expiry condition coded) or S151 (date-gated, not run-count-gated — handle separately). Emit log line: `[genesis] doctrines active=[S110,S113,...] expired=[S112]`. The constant S112_ACTIVATION_RUN should be computed once and stored in a small JSON config file (hypothesis_engine/doctrine_activation_runs.json) so it doesn't requery every run.
Target files
hypothesis_engine/moves/genesis.js
Expected effect
With genesisRunCount ≈33 (33 days × ~1 run/day since 2026-04-19), S112 block is absent from PROPOSER_SYSTEM on next run. PROPOSER_SYSTEM character count drops by approximately the S112 block length (~900 chars, lines 88-106). Over the next 10 genesis runs without S112: if post-hoc audit framing remains rare (<10% of proposals), S112 had already been internalized by model behavior and was zombie overhead. If post-hoc framing rises above 20%, S112 was still actively suppressing it and the expiration window of 20 runs was too short.
Falsifier — what would prove this wrong?
Log PROPOSER_SYSTEM.length per genesis run. After deploy: length must drop by 800-1000 chars when genesisRunCount > threshold. If length doesn't drop, the conditional logic is not firing. Secondary falsifier: run `grep -c 'pre-send gate' genesis_output_log_*.txt` before and after expiry. If pre-send gate framing rate stays constant through expiry, S112 was already internalized. If it falls to zero immediately, S112 was the only reason proposals used pre-send framing — which would be a doctrine-capture finding worth flagging.
Evidence that triggered the proposal
  • E — hypothesis_engine/moves/genesis.js:88-106 — S112 block contains 'active next 20 generations from 2026-04-19' with no code enforcement; today is 2026-05-22 (~33 runs at ~1/day)
  • E — hypothesis_engine/moves/genesis.js:120 — S121 block contains 'active for next 40 genesis runs from 2026-04-23'; ~29 consumed of 40, not yet expired — same code pattern, future expiry approaching
  • D — brain/BUILD_QUEUE.md — doctrinal-stack pruning (#2-B.5) is a manual audit item; this proposal automates the run-count-gated subset specifically, distinct from the manual pruning audit

Proposer self-score

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

AxisScore
specificity2
falsifier2
solo feasible2
blast radius2
composability2
reversibility3
Disposition
Rejected by filter_score. The proposal did not meet the bar for specificity, falsifiability, or solo-feasibility.

Evaluation history

WhenMove
2026-05-22 04:17meta_filter_score
2026-05-22 04:14meta_genesis