testsAndMisc/meta/scripts
Krzysztof kuhy Rudnicki 578c4a6cdd Drop the 100% shell coverage bar; back to a presence ratchet
bca70b67 (2026-08-22) turned the shell ratchet from "a run_all.sh exists
beside this lib" into a measured 100% line-coverage bar, run through the
kcov+userns jail. It works -- dot_resolver_install.sh really does measure
39/39 -- but the price is one hand-written test file per lib: fixes/lib
took 34 test files for 22 libs, the jail runs serially at 37-90s a pass
(concurrent jails give false failures), and most libs need a production
seam added before they can be driven at all.

That put the remaining 84 exempt libs at several days of work, for a
repo of personal automation scripts. User's call today: not worth it.

python_pkg keeps its 100% branch bar, which is already met -- 2101 tests,
100.00%, zero missing statements or branches. The difference is the
instrument: pytest-cov is fast, reliable and parallel; the shell jail is
none of those.

Also tried and rejected, recorded in the file: a middle option where the
suite must MENTION the lib by name, closing the empty-suite hole the
100% bar was reaching for. It newly BLOCKED 68 libs sitting in
directories that already have suites -- 38 in utils/lib alone -- because
those passed the old presence check and so were never allowlisted, and
seed_allowlist refuses to grow by design. Tightening a ratchet with no
way to grandfather the existing tree turns it into a wall.

The jail is not deleted; it is still the tool for measuring a lib on
purpose, and ci_mirror.sh still runs jailed suites.

  check_shell_coverage.sh --all:  >600s  ->  0.31s
  BLOCK entries:                  3, all pre-existing meta/scripts/lib
                                  coverage-tooling libs
  allowlist:                      unchanged at 84 (--seed correctly
                                  refused to add the 3)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PJrqKERAo5QUeEHWS5Asgp
2026-08-23 15:47:04 +02:00
..
fixtures focus_ctl: split 1091 -> 171 + 8 siblings, one per enforcer 2026-08-17 17:46:04 +02:00
lib Drop the 100% shell coverage bar; back to a presence ratchet 2026-08-23 15:47:04 +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_ci_green.sh Phase 2: enforce the 250-line cap and stop pushing red 2026-08-21 16:41:31 +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
check_shell_coverage.sh Shell coverage: convert the ratchet to a measured 100% bar 2026-08-22 11:20:58 +02:00
ci_mirror_range.sh Make the push gate check the push, and make its pytest stage real 2026-08-23 15:12:23 +02:00
ci_mirror_shell.sh Make the push gate check the push, and make its pytest stage real 2026-08-23 15:12:23 +02:00
ci_mirror.sh Make the push gate check the push, and make its pytest stage real 2026-08-23 15:12:23 +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: recognise the function name() spelling 2026-08-21 16:11:29 +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
mutate_shell.py meta: make this session's 65 mutations reproducible from the repo 2026-08-17 16:38:46 +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
shell_coverage_jail.sh Fix both kcov defects: dwm_config 47.95% -> 98.48%, rpi_nc_install 11.36% -> 96.59% 2026-08-22 14:24:25 +02:00
shell_coverage_report.py Name the lines outside kcov's line set; bound defect (c) as fail-closed 2026-08-22 14:30:39 +02:00
shell_coverage.sh meta: measurable shell coverage, and dns_iptables.sh at 100% 2026-08-17 15:29:08 +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