Refactoring backlog — OPEN items only, grouped by EXECUTION CONTEXT#
Lean working document. Every item here is OPEN. Completed/obsolete items and the
observation journal live in the archives:
…-archive-2026-08-10.md,
…-archive-2026-08-27.md,
…-archive-2026-08-30.md,
…-archive-2026-08-31.md,
…-archive-2026-09-02.md,
…-archive-2026-09-03.md,
…-archive-2026-09-07.md,
…-archive-2026-09-09.md,
…-archive-2026-09-17.md.
This file shows OPEN work only + CHANGELOG.md + memory — do not resurrect
without re-verifying.
Legend — effort: S(mall)/M(edium)/L(arge); impact: ★ … ★★★.
Prefix glossary (only the prefixes this OPEN file still uses): F#=the size and
duplication registers. Image gaps (CON7 onwards) live in the root
BACKLOG.md.
Everything else is archive-only: CON1–CON6 closed 2026-09-17/18 (the consumer
issues, the last one measured and aligned at Flutter 3.47.4), EX closed on
2026-09-07/09 (the extent gates scan linux/llm-stack and froze its rows),
VK/AS closed on 2026-09-17, CC/CL/CS/AB/R#/YB/DISK/APP on 2026-09-07,
HT/GH before them, QW/TC/SMK in the 2026-09-04 waves, and the rest long
before that.
Last groomed: 2026-09-18, after CON4’s Windows half was measured, the
dependency wave landed and the two owner questions were answered — every closed
narrative moved to
…-archive-2026-09-17.md and the
CHANGELOG. What stays here is two registers. Every
earlier grooming’s warning still applies: re-derive; do not trust a number
here, including these.
OPEN#
F1. The extent queues — what is left after every row got a verdict [M each]#
function-size.allow and code-complexity.allow are the authority — do not
transcribe them here. Both are fully reviewed: 24 function rows over 80 lines
and 59 cc rows over 15 (plus 1 nesting), every one carrying a verdict that says what its
number IS. Read the reasons, not the numbers — and re-derive the counts from
verify_code_size.py / verify_code_complexity.py, never from this line.
Four measurement facts that decided most of the remaining verdicts, and that a future reader should not re-discover:
Heredoc payloads are not shell.
assert_pinned_versionsis 44 lines of shell around a 312-line embedded Python program — top of the size queue and the WORST candidate on it, because splitting the shell moves 44 lines and itsccis 7. Same shape:assert_app_venv_parity(20 around 72),_gst_xpy_write_config(14 around 70),ensure_meson_cross_file(56 around a 37-line Meson-ini template).Much of the
cchere is a TABLE, not tangle: flag and subcommand parsers (parse_tvm_args13 options,append_tvm_cmake_args15,setup-dependencies.shmain5 valued flags × 11 commands), feature tables (_ffmpeg_probe_core_codecsis fifteenif probe; then --enable-<codec>lines and nothing else), and two rows where the metric is simply literal —dump_debug_info(cc 23) holds one decision (theHOST_PYTHONguard) and otherwise ~20 which-then---versionpairs each swallowed, and_torch_run_setup_pycounts the size of torch’s build environment.Refusal matrices cost safety when flattened:
_chain_prune_archived_logs(every branch is a refusal to delete the wrong thing),_manifest_wrapper_gate(the cell that decides whether a manifest would MIX releases),install_target_packages,override_soundtouch_codeberg_checksum.Precedence ladders where the ORDER is the contract:
host_python_bin,install_abseil_headers’ five download/extract rungs,_detect_gcc_cxxabi_header,configure_opencv_build_env’s gstreamer-libdir search (the RV1-GST-PC ladder).
One row still carries a KEEP verdict worth keeping: media_common_init (29) —
a module loader whose load ORDER is load-bearing. A table plus a loop would read
shorter and say less; the ordering is the knowledge.
The last outside-the-closure row closed on 2026-09-18. bump_versions.py main (160) is now 32: linux/scripts/tests/test-bump-versions.sh — 40
assertions over fake specs, in-process — was the coverage it was blocked on,
then the split into _parse_args / _lookup / _sweep / _safe_row /
_report_row / _write_phase and the reporting helpers. Its
function-size.allow and code-complexity.allow rows were deleted rather than
re-baselined. Every named row left in the two registers is inside the build
closure.
Two rows were given a “do not do the obvious thing” verdict; one is a row today.
verify_comment_size.blocks (nesting 6) is not in code-complexity.allow:
_walk_scan holds the walk and blocks measures cc 9, nesting 4 (2026-09-25;
the one nesting row is smoke-android.sh check_ndk, 7). Its verdict still stands
for the walk: importing verify_code_size.scan would NARROW the scan by
SKIP_DIRS 'patches' (the gate’s own SCAN comment says why), which changes the
gate’s scope and needs a fresh comment-size.allow baseline. And
verify_package_names.load_arch (17): every branch is a way the gate must not
produce a FALSE verdict, the all-or-nothing partial-fetch refusal above all.
F2. Files over ~800 lines [L each, low priority]#
file-size.allow is the authority — do not transcribe it here. The gate
prints files: 13 over 800 lines; 13 frozen; read it there. All rows were
reviewed and all but the one historical split are NOT split targets, each with a
reason a stranger can act on.
Two verdicts worth not re-litigating. build-app-wheelhouse.sh is the
near-miss: the stage suites extract blocks from it by line range, so a file
split silently re-aims them. And smoke-runtime-image.sh — which every earlier
version of this entry nominated as THE one to split — is an explicit NO: its
99 functions (2026-09-25; 91 on 2026-09-18) are the check_* / _probe_*
assertions and the probe-and-verdict layer they share, all over one image through
one _rt_run under one main(). Its
length is the number of assertions it makes about the shipped bytes, and that
number growing is the gate succeeding.
lib/app-packaging.sh crossed 800 on 2026-09-17 (CON2’s scope probe + CON6’s
finish-args block, 797 → 851); the row carries the NOT-a-split reason and the seam
that kept it that way. Record in
…-archive-2026-09-17.md.
Standing context, not a block: git push is the agent’s (2026-09-06) via
gh auth setup-git + HTTPS remotes, and twelve of the fifteen *.sh files in
linux/scripts/lib/ source a sibling lib/log-bootstrap.sh (2026-09-25) — a
consumer that copied ONE lib/*.sh file out on its own breaks on its next CI run,
not here.