# BUDGET — a RATCHET on lang/runtime/el_runtime.c. Enforced by # scripts/check-runtime-growth.sh. These numbers may only ever go DOWN. # # WHY THIS FILE EXISTS # -------------------- # scripts/check-single-runtime.sh guards against el_runtime.c being COPIED. # Nothing guarded against it GROWING. It grew from 10,607 lines to 20,527 — # 94% — in 3.5 months, while under an explicit commit-message promise that it # was a temporary shim about to be deleted. # # It grew because lang/AGENTS.md told every agent to grow it: it claimed # el_runtime.c was "the authoritative single-file link target" and that a new # C builtin "must live there to be linkable". That is false — placement is a # link-time concern, `builtin_arity` is an arity guard not a dispatch table, # and the shipped elc already links from ten translation units. The claim is # corrected, and this file is the mechanism that keeps it corrected. # # THIS IS A RATCHET, NOT A LIMIT # ------------------------------ # The budget is set at the CURRENT size. There is no headroom, deliberately. # The file cannot grow by even one line. Any new code goes in the .c that owns # the concern — that is the whole point, and every other runtime file is # deliberately UNCAPPED. # # When you move code OUT, lower the number in the same commit. The guard tells # you to when you have earned it. # # FORMAT: — `#` comments and blank lines ignored. # Maximum lines in lang/runtime/el_runtime.c. # 2026-08-16: 20,527 — the high-water mark. # 2026-08-16: 20,427 — engram_text.c extracted (tokenize, token hygiene, # word-boundary match, damage signature). Ratcheted down. max_lines 20427 # Maximum top-level engram/eg_/cog_ function definitions in el_runtime.c. # ~47.5% of the file is engram code, and engram already owns six dedicated # sibling files (engram_{store,vindex,geometry,reason,verify,cognition}.c). # Every one of these belongs in one of them. This is the Stage 3 scoreboard. # 2026-08-16: 279 -> 275 (4 moved to engram_text.c). max_engram_fns 275