testsAndMisc/meta/scripts
Krzysztof kuhy Rudnicki ce139b5867
Some checks failed
Pre-commit checks / pre-commit (push) Waiting to run
Shell tests / shell-tests (push) Waiting to run
Shell tests / arch-tests (push) Waiting to run
Python tests / test (push) Has been cancelled
extract_shell_functions: never leave a function defined twice
On a script with no `set -e` anchor -- every #!/system/bin/sh phone
enforcer -- the tool wrote the library, then exited on the missing
anchor, leaving the functions in the entry script as well. The result
defined each moved function twice, lints clean, and passes a
function-body hash check, so nothing downstream catches it. It cost a
split of dns_enforcer.sh this session: 325 lines in, 331 lines out.

Both writes now happen after the anchor search. A missing anchor is a
warning naming the exact line to paste, not an exit, so the move still
completes. Added a shrink guard that refuses to write when the entry
script would not get shorter, and an explicit error when the selected
function set is empty.

Verified both paths: dns_enforcer.sh (no anchor) warns and still drops
171 -> 158 with the functions gone, phone_backup.sh (anchored) drops
333 -> 264 with the source line auto-inserted as before.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011w2Pj4Ek3ZNMQVYcFHgXDY
2026-08-17 15:15:25 +02:00
..
fixtures Close three fail-open paths in the prefix trace harness 2026-08-16 23:38:38 +02:00
lib Close three fail-open paths in the prefix trace harness 2026-08-16 23:38:38 +02:00
run_all refactor(linux_configuration): move remaining dirs + scripts/ to meta/ 2026-05-15 00:53:01 +02:00
_schema_validation.py feat: split oversized modules for 500-line limit, fix kasa coverage gap 2026-06-14 07:19:37 +02:00
_session_autopsy_mutations.py Split test_security_hardening.sh; finish the mutation-driver split 2026-08-16 22:24:02 +02:00
check_agent_contract.sh refactor: extract all inline Python from shell scripts into proper .py files 2026-06-06 10:31:48 +02:00
check_ai_evidence.sh refactor: extract all inline Python from shell scripts into proper .py files 2026-06-06 10:31:48 +02:00
check_append_only_sessions.sh refactor(linux_configuration): move remaining dirs + scripts/ to meta/ 2026-05-15 00:53:01 +02:00
check_file_length.sh meta: add the check_file_length.sh gate the splits assumed existed 2026-08-17 14:52:24 +02:00
check_no_binaries.sh refactor(linux_configuration): move remaining dirs + scripts/ to meta/ 2026-05-15 00:53:01 +02:00
check_no_dufs_conf.sh linux_configuration: self-hosted dufs cloud storage + KeePass WebDAV auto-sync 2026-07-12 03:40:54 +02:00
check_no_inline_python.sh Gate the no-inline-Python rule instead of asking people to remember it 2026-08-16 15:11:56 +02:00
check_no_secrets.sh refactor(linux_configuration): move remaining dirs + scripts/ to meta/ 2026-05-15 00:53:01 +02:00
check_polling_antipatterns.sh Fail the build on any shellcheck finding; fix the 222 the old gate hid 2026-08-03 19:49:11 +02:00
check_python_location.sh refactor: extract all inline Python from shell scripts into proper .py files 2026-06-06 10:31:48 +02:00
check_requirements_sync.py requirements-sync: map bs4 and exempt foreign-runtime imports 2026-07-19 18:58:35 +02:00
ci_mirror.sh billsplit: build a real APK by dropping file_picker for file_selector 2026-08-03 14:15:40 +02:00
disk_cleanup_check.sh Split disk_cleanup_check.sh: extract the helpers and the output blocks 2026-08-16 22:57:06 +02:00
extract_shell_functions.py extract_shell_functions: never leave a function defined twice 2026-08-17 15:15:25 +02:00
init_agent_artifacts.sh refactor(linux_configuration): move remaining dirs + scripts/ to meta/ 2026-05-15 00:53:01 +02:00
install_hooks.sh fix(hooks): make git hooks and their toolchain mandatory and fail-closed 2026-08-03 11:09:11 +02:00
makepkg-manual-dlagent.sh refactor(linux_configuration): move remaining dirs + scripts/ to meta/ 2026-05-15 00:53:01 +02:00
mutate_session_autopsy_hooks.py Split test_security_hardening.sh; finish the mutation-driver split 2026-08-16 22:24:02 +02:00
pytest_changed_packages.py Move billsplit Flutter app into the monorepo 2026-08-03 12:22:22 +02:00
run_prettier_capped.sh Move billsplit Flutter app into the monorepo 2026-08-03 12:22:22 +02:00
run_with_heavy_lock.sh Diagnose the pacman first-hook stall; fix the drift that hid a stale wrapper 2026-08-03 15:15:34 +02:00
trace_shell_split.sh Close three fail-open paths in the prefix trace harness 2026-08-16 23:38:38 +02:00
validate_contract.py feat: split oversized modules for 500-line limit, fix kasa coverage gap 2026-06-14 07:19:37 +02:00
validate_evidence.py feat: split oversized modules for 500-line limit, fix kasa coverage gap 2026-06-14 07:19:37 +02:00
verify_shell_split.sh shell splits: add a verbatim-move harness and triage all 29 targets 2026-08-17 14:07:20 +02:00