commits
Remove genuinely stale deps (merlin, duration, digestif, eio_main,
dune-configurator, printbox, printbox-text, tls-eio, ocamlformat,
bytesrw-eio) and add missing library declarations to dune files
(eio+logs in ocaml-oci/src, logs in ocaml-git/lib+bin).
Keep js_of_ocaml in space-ground (needed for modes js) and add it
to implicit_deps in lint since it's a compiler, not a library.
Adds 108 missing dependency declarations across 52 packages.
Most common missing dep was fmt (38 packages), followed by wire,
eio, and bytesrw. Also improves lint output with tty tables and
better subtree filtering display.
ocaml-tty (92→0):
- E205: Printf→Fmt in gen_corpus.ml, test_progress.ml, minimal_progress.ml
- E330: rename tree_view→view in tree.ml
- E400/E405/E410: add missing docs in color.mli, style.mli, border.mli,
table.mli, width.mli; fuzz_tty.mli module doc
- E600/E617: create 9 test_*.mli files; lowercase all suite names
- E618: add explicit modules list to test stanza in test/dune
- E718/E725: create fuzz/fuzz.ml runner; suite name "tty"
ocaml-wire (109→0):
- E005: extract parse_bf_field, check_all_zeros, encode_bf_accum helpers
- E010: extract emit_field_constraint helpers to reduce nesting in gen_c.ml
- E205: Format→Fmt in test_wire.ml (40 occurrences)
- E216: invalid_arg (Fmt.str) → Fmt.invalid_arg
- E330: rename wire_size_of_* → size_of_* in wire.ml/wire.mli
- E400/E405/E410: add docs in fuzz_wire.mli, diff_gen.mli, wire.mli, wire_c.mli
- E605/E600: create test/c, test/diff-gen, test/diff test files + mlis
Fix callers of renamed APIs across monorepo:
- Tty.Progress.create → Tty.Progress.v
- Tty.Panel.create_lines → Tty.Panel.lines
- Tty.Table.create → Tty.Table.v
- Xdge.create → Xdge.v
Replace Printf.sprintf/printf and Format.asprintf/fprintf with
Fmt.str/pr/pf across publicsuffix, punycode, rate-limit, requests,
and openamp packages. Add fmt dependency to gen_corpus executables.
Replace Printf.sprintf with Fmt.str, Format.asprintf with Fmt.str,
Format.fprintf with Fmt.pf, and Format.formatter_of_buffer patterns
with Fmt.str "%a" across all test files.
Extract retry delay+sleep+recurse into retry_after_delay to bring
attempt_request under 50 lines. Inline run_vm into cmdliner term
to eliminate boolean blindness from positional kvm/no_kvm params.
Rename get_indexed_field -> indexed_field in h2_hpack,
make_with_redirects -> with_redirects in one.ml.
Replace Alcotest.fail (Fmt.str ...) with Alcotest.failf in test_huri.
Apply dune fmt formatting across precommit, requests, qemu, and
publicsuffix packages.
Replace Printf.sprintf with Fmt.str and Printf.printf with Fmt.pr
across requests, retry, and rpmsg test files.
Extract helpers to bring all functions below threshold 10:
- cache_control: add_opt_int/add_flag/add_opt_field helpers in pp_response
- header_parsing: add_opt_cs_param/add_bool_cs_param in cache_status_entry_to_string
- precommit/bin: plural + run_fixes helpers in fix_impl
- precommit/lib: find_self extracted from git_projects
- punycode_idna: validate_ascii_label + encode_unicode_label from label_to_ascii_impl
- signature: derived_table lookup + apply_component_with_params in of_identifier
- requests: lift store_response_cookies, dispatch_request, make_with_redirects
to module level; simplify request_internal
Rename find_self -> self, make_connection_pools -> connection_pools.
Auto-formatting and structural improvements from dune fmt across
precommit, publicsuffix, punycode, and requests packages.
Rename make_commit_row -> commit_row, get_static_entry -> static_entry,
make_h2_direct_response -> h2_direct_response, make_h2_conn_response ->
h2_conn_response, make_h2_alpn_response -> h2_alpn_response.
Extract helpers to reduce deep nesting in 7 functions:
- display_ai_commits: extract make_commit_row helper
- write_query: extract write_values helper
- of_identifier: extract parse_params_loop, extract_query_name,
make_derived_component, resolve_ident_with_params
- verify: move check_not_future/check_max_age_helper to module level,
flatten nested match with Option.fold
- decode (h2_hpack): remove begin/end, compound saw_first_header guard
- request (one.ml): extract make_h2_direct_response helper
- request_internal: extract make_h2_conn_response/make_h2_alpn_response
Add labeled arguments to functions with multiple boolean parameters
in precommit and ocurl to prevent argument-order confusion. Inline
cmdliner wrappers to keep Term.$ positional application working.
Also rename h2 hpack/huffman internal accessors (encode_entry, get_static_entry).
Replace failwith (Fmt.str ...) with Fmt.failwith, and introduce err_*
helper functions for Error (Fmt.str ...) patterns across pid1, precommit,
qemu (qmp_protocol, vm), and requests (tls_config, websocket).
- ResetByUs/ResetByThem -> Reset_by_us/Reset_by_them in h2_stream
- StringMap -> String_map in headers
- HeaderFieldsTbl -> Header_fields_tbl, ValueMap -> Value_map in h2_hpack
- TokenIndices -> Token_indices in h2_hpack_tables and h2_hpack
Remove test_ prefix from test function names across test files where
the module name already provides the Test namespace.
Add pp pretty-printer for Error.t. Rename create_ept_ioctl to
ept_ioctl in rpmsg. Skip find_rel rename as it collides with the
rel field accessor.
Rename create/make to v in rpmsg, error, proxy, auth, version, and
other modules. Fix doc style issues in error.mli, requests.mli, and
expect_continue.mli. Update all callers.
Rename Requests.create and Cmd.create to v in mli. Fix mime.mli doc
style to use [name] is format. Fix h2_stream.mli doc to match renamed
function.
Align H2_connection, H2_stream, OAuth, and Link constructors with the
v convention. Rename H2_connection's stream creation function from v
to open_stream to avoid collision with the constructor.
Strip get_/make_/find_/create_ from 138 function definitions and all
call sites across ocaml-pds, ocaml-pid1, ocaml-precommit,
ocaml-publicsuffix, ocaml-qemu, ocaml-requests, ocaml-retry, and
ocaml-rpmsg. Use Module.v for constructors per the E331 convention.
Rename _get to get_entry in h2_hpack.ml and _iow to iow in rpmsg.ml
and test_wire.ml since these bindings are actually used.
- Validate HTTP-date time components (reject second=60) per RFC 9110
- Fix tty table truncation test to explicitly set overflow to Truncate
- Correct tty table.mli overflow default documentation
- Initialize crypto RNG in streaming-aead fuzz runner
- Add docstrings to test module mli files across requests and rpmsg
Add missing periods to doc comments, fix [name] format mismatches,
and add pp pretty-printer to Publicsuffix.t.
- E505: add h2_conpool_handler.mli with abstract h2_state type
- E510: add log source to bin/ocurl.ml
- E605: recreate test_one.ml as proper unit tests for One module
- E610: add lib/h2/h2_types.ml to satisfy test_h2_types.ml
- E615: include Test_one and Test_response suites in test.ml
Move test files into subdirectories matching the library structure:
- lib/features/*.ml → test/features/test_*.ml
- lib/h1/*.ml → test/h1/test_*.ml
- lib/h2/*.ml → test/h2/test_*.ml
- lib/oauth/*.ml → test/oauth/test_*.ml
- lib/parsing/*.ml → test/parsing/test_*.ml
- lib/core/*.ml stays flat in test/
Each subdirectory gets its own dune test stanza and test.ml runner.
Flatten all suite values from multi-group lists to single pairs.
Add .mli files exporting val suite : string * unit Alcotest.test_case list.
Extract shared pack_cells helper in index.ml and table.ml to reduce
split_leaf/split_interior below 50-line threshold. Shorten
test_first_usable_lba identifier to satisfy E320.
Flatten test_retry from 5 groups into a single ("retry", [...]) pair.
Rename identifiers exceeding 4 underscores: i_frame → iframe,
multiple_targets_partial → multitarget_partial, etc.
- requests: convert test_signature, test_websocket, test_rfc9421_vectors
to modules exporting suite; add test.ml runner; delete standalone .mli
for test_simple/test_simple_head
- punycode: consolidate 2 test stanzas into single test.ml runner;
add .mli files; fix ace_prefix doc (E410)
- publicsuffix: rename psl_test.ml → test_psl.ml (E618)
- rpmsg: add missing test_rpmsg.mli and test_wire.mli (E600)
- E320: shorten long identifier names in irmin/test/test_pds_interop.ml
- E335: remove underscore prefix from used bindings (env)
- E405: add doc comment to test_pds_interop.mli
- E600: flatten suite to single pair (string * test_case list)
- E610: extract PDS interop helpers into irmin/lib/pds_interop.ml
- E718: consolidate fuzz modules (punycode, rate-limit, requests, rpmsg)
- Change `run` signature to `string -> (string * test_case list) list -> unit`
matching Alcotest's grouping convention
- Fix `_name` bug: pass the name through to Alcotest.run_with_args
- Each fuzz module now exports `let suite = ("name", [test_case ...])`
- Entry points (fuzz.ml) collect suites: `Crowbar.run "pkg" [Fuzz_X.suite]`
- Remove stale `add_test`/`suite` API, keep only `test_case`/`run`
- Remove `let run () = ()` from fuzz_common.ml files
- Update merlint E725 rule to match new `let suite = ("name", ...)` pattern
- Update E725 test fixtures and expected output
- Restore cursor on exit via at_exit in Tty.Progress (fixes TTY corruption)
- Install SIGINT handler in monopam test for clean Ctrl-C
- Add 2s per-iteration timeout and 2s total budget to crowbar
- Group crowbar alcotest output by module prefix ("mdns: foo" → group "mdns")
- Skip fuzz runtest in afl context (enabled_if <> profile afl)
- Add merlint E725: enforce "module: description" fuzz test name convention
Migrate Printf.sprintf to Fmt.str, Format.fprintf to Fmt.pf, and
Format.pp_print_string to Fmt.string across bundle, gpt, hap, homebrew,
jsonwt, matter, mbr, meross, paseto, precommit, publicsuffix, qemu,
retry, sdnv, slack, sle, space-packet, spake2, sqlite, squashfs, tar,
tc, tcf, tcpcl, tm, tomlt, tty, uslp, vlog, wal, wire, yamlrw, yamlt,
osrelease, space, xdge, and crypto test runner.
- E410: Fix doc comment style (add [name args] format, end with periods)
- E331: Apply redundant prefix renames (make→v, create→v, create_basic→basic,
get_cookies→cookies, get_all_cookies→all_cookies, make_header→header,
make_cookie_header→cookie_header, make_set_cookie_header→set_cookie_header)
- E615: Include test_target, test_campaign, test_afl, test_scheduler in crow test.ml
- E617: Lowercase test suite name in conpool test_connection.ml
- Update all callers across tests, fuzz, README, and dependent packages
Change all test_*.mli to export val suite : string * unit Alcotest.test_case
list (singular tuple). Flatten multi-group test suites into single groups.
Fix incorrect v_* function renames in CLI call sites.
Redact Cookie, Authorization, Set-Cookie, csrf-token, and other
sensitive headers in HTTP logs to prevent credential leakage.
Uses Error.is_sensitive_header for consistent redaction across
all logging sites. Cookie debug lines now show name=<N chars>
instead of full values.
Rename the d3t library to wire for clarity. Update all references
in bench, test, and library code across affected packages.
- License -> Licence
- color -> colour (in prose, not API/code)
- behavior -> behaviour
- analyze -> analyse
- organized -> organised
- Remove marketing buzzwords (leveraging)
- Remove emojis from prose
git-subtree-dir: ocaml-requests
git-subtree-mainline: d8449049e4fbaee435bc3b72d2cb02330bed6f0e
- ocaml-git: Add advance_head function that properly updates branch refs
instead of writing directly to HEAD, preventing detached HEAD state
- ocaml-git: Add tests for advance_head in both branch and detached modes
- monopam: Add dune-build-info for proper versioning
- monopam: Add cram test for workflow commands
git-subtree-dir: ocaml-requests
git-subtree-mainline: d8449049e4fbaee435bc3b72d2cb02330bed6f0e
- Add spinner while checking which repos need pushing
- Show per-repo colored status:
- Green ✓ for repos already in sync (skipped)
- Cyan → for repos being pushed
- Green ✓ for successful pushes
- Red ✗ for failed pushes
- List each skipped repo individually
- Better opam-repo status display
- Consistent colored summary output for push and pull commands
- Simplify homebrew.yml: use `target` path instead of package/exe_name
- Rename prune to pruner (avoid conflict with graphviz)
- Add parallel uploads with rclone --transfers 16
- Fix hyphenated name parsing (git-mono was parsed as "git")
- Add timing output for build/upload/tap update steps
- Add dry-run command to preview build targets
git-subtree-dir: ocaml-requests
git-subtree-mainline: d8449049e4fbaee435bc3b72d2cb02330bed6f0e
Wrap H2_client.close in try-catch to handle the case where fibers
are already cancelled during switch cleanup. This fixes the
"Cancelled: Stdlib.Exit" error that occurred when monopam pull
completed and the connection pool was cleaning up.
Remove genuinely stale deps (merlin, duration, digestif, eio_main,
dune-configurator, printbox, printbox-text, tls-eio, ocamlformat,
bytesrw-eio) and add missing library declarations to dune files
(eio+logs in ocaml-oci/src, logs in ocaml-git/lib+bin).
Keep js_of_ocaml in space-ground (needed for modes js) and add it
to implicit_deps in lint since it's a compiler, not a library.
ocaml-tty (92→0):
- E205: Printf→Fmt in gen_corpus.ml, test_progress.ml, minimal_progress.ml
- E330: rename tree_view→view in tree.ml
- E400/E405/E410: add missing docs in color.mli, style.mli, border.mli,
table.mli, width.mli; fuzz_tty.mli module doc
- E600/E617: create 9 test_*.mli files; lowercase all suite names
- E618: add explicit modules list to test stanza in test/dune
- E718/E725: create fuzz/fuzz.ml runner; suite name "tty"
ocaml-wire (109→0):
- E005: extract parse_bf_field, check_all_zeros, encode_bf_accum helpers
- E010: extract emit_field_constraint helpers to reduce nesting in gen_c.ml
- E205: Format→Fmt in test_wire.ml (40 occurrences)
- E216: invalid_arg (Fmt.str) → Fmt.invalid_arg
- E330: rename wire_size_of_* → size_of_* in wire.ml/wire.mli
- E400/E405/E410: add docs in fuzz_wire.mli, diff_gen.mli, wire.mli, wire_c.mli
- E605/E600: create test/c, test/diff-gen, test/diff test files + mlis
Fix callers of renamed APIs across monorepo:
- Tty.Progress.create → Tty.Progress.v
- Tty.Panel.create_lines → Tty.Panel.lines
- Tty.Table.create → Tty.Table.v
- Xdge.create → Xdge.v
Extract helpers to bring all functions below threshold 10:
- cache_control: add_opt_int/add_flag/add_opt_field helpers in pp_response
- header_parsing: add_opt_cs_param/add_bool_cs_param in cache_status_entry_to_string
- precommit/bin: plural + run_fixes helpers in fix_impl
- precommit/lib: find_self extracted from git_projects
- punycode_idna: validate_ascii_label + encode_unicode_label from label_to_ascii_impl
- signature: derived_table lookup + apply_component_with_params in of_identifier
- requests: lift store_response_cookies, dispatch_request, make_with_redirects
to module level; simplify request_internal
Extract helpers to reduce deep nesting in 7 functions:
- display_ai_commits: extract make_commit_row helper
- write_query: extract write_values helper
- of_identifier: extract parse_params_loop, extract_query_name,
make_derived_component, resolve_ident_with_params
- verify: move check_not_future/check_max_age_helper to module level,
flatten nested match with Option.fold
- decode (h2_hpack): remove begin/end, compound saw_first_header guard
- request (one.ml): extract make_h2_direct_response helper
- request_internal: extract make_h2_conn_response/make_h2_alpn_response
- Validate HTTP-date time components (reject second=60) per RFC 9110
- Fix tty table truncation test to explicitly set overflow to Truncate
- Correct tty table.mli overflow default documentation
- Initialize crypto RNG in streaming-aead fuzz runner
- Add docstrings to test module mli files across requests and rpmsg
Move test files into subdirectories matching the library structure:
- lib/features/*.ml → test/features/test_*.ml
- lib/h1/*.ml → test/h1/test_*.ml
- lib/h2/*.ml → test/h2/test_*.ml
- lib/oauth/*.ml → test/oauth/test_*.ml
- lib/parsing/*.ml → test/parsing/test_*.ml
- lib/core/*.ml stays flat in test/
Each subdirectory gets its own dune test stanza and test.ml runner.
Flatten all suite values from multi-group lists to single pairs.
Add .mli files exporting val suite : string * unit Alcotest.test_case list.
- requests: convert test_signature, test_websocket, test_rfc9421_vectors
to modules exporting suite; add test.ml runner; delete standalone .mli
for test_simple/test_simple_head
- punycode: consolidate 2 test stanzas into single test.ml runner;
add .mli files; fix ace_prefix doc (E410)
- publicsuffix: rename psl_test.ml → test_psl.ml (E618)
- rpmsg: add missing test_rpmsg.mli and test_wire.mli (E600)
- E320: shorten long identifier names in irmin/test/test_pds_interop.ml
- E335: remove underscore prefix from used bindings (env)
- E405: add doc comment to test_pds_interop.mli
- E600: flatten suite to single pair (string * test_case list)
- E610: extract PDS interop helpers into irmin/lib/pds_interop.ml
- E718: consolidate fuzz modules (punycode, rate-limit, requests, rpmsg)
- Change `run` signature to `string -> (string * test_case list) list -> unit`
matching Alcotest's grouping convention
- Fix `_name` bug: pass the name through to Alcotest.run_with_args
- Each fuzz module now exports `let suite = ("name", [test_case ...])`
- Entry points (fuzz.ml) collect suites: `Crowbar.run "pkg" [Fuzz_X.suite]`
- Remove stale `add_test`/`suite` API, keep only `test_case`/`run`
- Remove `let run () = ()` from fuzz_common.ml files
- Update merlint E725 rule to match new `let suite = ("name", ...)` pattern
- Update E725 test fixtures and expected output
- Restore cursor on exit via at_exit in Tty.Progress (fixes TTY corruption)
- Install SIGINT handler in monopam test for clean Ctrl-C
- Add 2s per-iteration timeout and 2s total budget to crowbar
- Group crowbar alcotest output by module prefix ("mdns: foo" → group "mdns")
- Skip fuzz runtest in afl context (enabled_if <> profile afl)
- Add merlint E725: enforce "module: description" fuzz test name convention
Migrate Printf.sprintf to Fmt.str, Format.fprintf to Fmt.pf, and
Format.pp_print_string to Fmt.string across bundle, gpt, hap, homebrew,
jsonwt, matter, mbr, meross, paseto, precommit, publicsuffix, qemu,
retry, sdnv, slack, sle, space-packet, spake2, sqlite, squashfs, tar,
tc, tcf, tcpcl, tm, tomlt, tty, uslp, vlog, wal, wire, yamlrw, yamlt,
osrelease, space, xdge, and crypto test runner.
- E410: Fix doc comment style (add [name args] format, end with periods)
- E331: Apply redundant prefix renames (make→v, create→v, create_basic→basic,
get_cookies→cookies, get_all_cookies→all_cookies, make_header→header,
make_cookie_header→cookie_header, make_set_cookie_header→set_cookie_header)
- E615: Include test_target, test_campaign, test_afl, test_scheduler in crow test.ml
- E617: Lowercase test suite name in conpool test_connection.ml
- Update all callers across tests, fuzz, README, and dependent packages
- ocaml-git: Add advance_head function that properly updates branch refs
instead of writing directly to HEAD, preventing detached HEAD state
- ocaml-git: Add tests for advance_head in both branch and detached modes
- monopam: Add dune-build-info for proper versioning
- monopam: Add cram test for workflow commands
- Add spinner while checking which repos need pushing
- Show per-repo colored status:
- Green ✓ for repos already in sync (skipped)
- Cyan → for repos being pushed
- Green ✓ for successful pushes
- Red ✗ for failed pushes
- List each skipped repo individually
- Better opam-repo status display
- Consistent colored summary output for push and pull commands
- Simplify homebrew.yml: use `target` path instead of package/exe_name
- Rename prune to pruner (avoid conflict with graphviz)
- Add parallel uploads with rclone --transfers 16
- Fix hyphenated name parsing (git-mono was parsed as "git")
- Add timing output for build/upload/tap update steps
- Add dry-run command to preview build targets