commits
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
ocaml-atp: add test_naming.ml for hermest/lib/naming.ml (E605)
ocaml-clcw: merge fuzz_diff.ml into fuzz_clcw.ml to fix E710
(fuzz_diff had no corresponding library module)
ocaml-retry: extract test_retry.ml module with suite tuple (E605)
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.
- 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
- xrpc_server: add on_listen callback with actual bound port (supports port 0)
- pds: register Eio.Switch.on_release for DB close in create/open_
- irmin: use on_listen in cmd_serve, close PDS in cmd_init, add interop cram test
- rpmsg: rename test_endpoint → test_rpmsg for consistency
Standardize fuzz and test conventions across 30+ packages:
- E715/E718: Add fuzz.ml runners referencing Fuzz_*.suite instead of
calling Fuzz_*.run() directly; update dune files accordingly
- E725: Fix fuzz_paseto suite name from "crowbar" to "paseto"
- E600: Create .mli interfaces for test modules (test_firmware,
test_remoteproc, test_pbkdf2, test_paseto) with single-group suites
- E605: Add missing test files (test_skills, test_monitor, test_openamp,
test_xrpc_server) with proper module extraction from inline test.ml
- E415: Add pp pretty-printer to xrpc_server type t
- E405: Add doc comment for pp_sync_action in skills.mli
- E205: Replace Printf with Fmt in fuzz_paseto and gen_corpus
- E331: Rename make_key to key in fuzz_paseto
Add atp-xrpc-server library — minimal Eio HTTP server routing
/xrpc/<nsid> to handlers with CORS, percent-decoding, and JSON errors.
Merge Mst backend into PDS: "mst"/"atproto" are now aliases for "pds"
which uses SQLite (via ocaml-sqlite) instead of one-file-per-CID on
the filesystem. Auto-detect pds.db in detect_backend.
Add `irmin serve` command that exposes any backend (Git, PDS, Memory)
as a read-only ATProto PDS over XRPC. Supports --format=xrpc (default,
extensible), --port (default 2583), --did (auto-detected from PDS
metadata). Implements describeServer, describeRepo, getRecord,
listRecords, getRepo, and getBlob endpoints. DAG-CBOR content is
decoded to JSON with CID links as {"$link":"..."}, non-CBOR content
(Git) is served as-is.
Drop test_ prefix from type and function names in test.ml modules
where the module name already provides the Test namespace.
Replace Printf.sprintf with Fmt.str, Printf.printf with Fmt.pr,
Format.fprintf with Fmt.pf, and Format.asprintf with Fmt.str in:
ocaml-aos, ocaml-atp, ocaml-ax25, ocaml-btree, ocaml-bundle
- ocaml-aos/fuzz: rename fuzz_aos.ml → test.ml
- ocaml-atp/atp/test: move dagcbor_atproto_test and syntax_test to
subdirectories with single test runners, resolving E620
- Replace Printf.sprintf/Format.asprintf with Fmt.str in test files
(irmin, monopam, ocaml-agent)
- Add explicit (modules ...) to disambiguate multi-stanza test dune files
(ocaml-atp, ocaml-tty, ocaml-wire)
Rename get_type_def_description to type_def_description — removes
redundant get_ prefix from option-returning function.
Add documentation to 71+ undocumented public values across jailhouse,
ltp, matter (discovery, msg, pase, session) .mli files. Apply linter
E331 auto-renames (make_*/get_*/create_* prefix removal) in jsonwt,
cwt, ltp, matter, and update callers in atp tests.
The mismatch tests expected Failure or Invalid_argument but the CID
validation raises Eio.Io via Eio_error.raise_.
- cookeio: remove incorrect validation test expecting space in cookie
value to be rejected (RFC 6265 allows it)
- atp: normalize CBOR map key ordering in roundtrip test for
deterministic comparison
- oci: fix guess_manifest platform matching by converting Osrelease
types directly to OCI types instead of lossy string round-trip,
fix test JSON to use OCI-format platform strings, fix truncated
SHA-256 digest in no-platform test (60 → 64 hex chars)
- Fix E325 to skip type variables when checking get/find naming
- Add test.ml runners for bpsec, bytesrw-eio, cfdp, claude-skills
- Add .mli files for btree lib modules and test modules
- Add .mli files for cbort, cgr, bundle, bpsec, bytesrw-eio
- Add claudeio test module stubs and .mli files
- Add claudeio test/proto/dune for outgoing tests
- Fix claudeio examples Test_json_utils -> Json_utils references
- Add linkedin URL parsing module and tests
- Improve linkedin profile scraping and cookie handling
- Fix claude-skills main.ml lint issues
- Fix various .mli doc comment formatting
- Flatten nested ifs in nodes_in_cycles using guard clauses (E010)
- Replace catch-all exception handlers with specific exceptions (E105):
blockstore.ml: catch Eio.Io for mkdirs
dagcbor_atproto_test.ml: catch Failure/Invalid_argument for decode
xrpc_auth_session.ml: catch Eio.Io for file access
xrpc_cred.ml: catch Eio.Io for logout network call
bloom.ml: catch Invalid_argument for deserialization
- Replace Str module with stdlib contains helper in test files (E200)
- Remove str dependency from tangled/test and hermest/test dune files
- Rename block_map functions: find_exn→get, find_many→resolve (E325)
- Reduce underscore count in test identifiers across xrpc/ax25 tests
- Apply linter variant renames: CidLink→Cid_link, FlexNet→Flex_net, etc.
Rename main_cmd -> cmd in main.ml files (E330). Rename find_exn -> get
and find_many -> get_many in block_map (E331).
Rename get_blobs -> blobs in lex, and apply formatting fixes.
Rename get_*, find_*, create_*, make_* functions to drop redundant prefixes:
standard-site (6 renames), tangled (17 renames + 3 local), hermest (8 renames),
xrpc (7 renames), xrpc-auth (9 renames), bloom (3 renames). All call sites
updated across lib, cli, and test code.
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.
Refactor all test directories to follow the convention: test_*.ml exports
suite/suites values, test_*.mli exposes only the suite type, and a single
test.ml runner aggregates and calls Alcotest.run. Consolidate dune files
to single test stanzas per directory.
Fix 64 documentation style issues: add trailing periods, fix [name] format
mismatches, and correct arg count mismatches in doc comments. Add pp
pretty-printers to 7 modules (block_map, standard_site_api, tangled_api,
xrpc_auth_client, xrpc_client, xrpc_cred, block).
Add individual Alcotest test files for ocaml-atp (tid, handle, did, nsid,
record_key, at_uri, mst, car, block_map, blockstore, dagcbor, cid, blob_ref,
eio_error, lex, repo_key, varint), hermest (codegen_jsont, emitter,
lexicon_types, scc), standard-site, tangled, xrpc, xrpc-auth, and bloom.
Fix catch-all exception handlers (E105), redundant function prefixes (E331),
and expose parse functions in ocaml-arp for testability.
Replace Alcotest.fail (Fmt.str ...) with Alcotest.failf (E616) in
ocaml-block tests, hoist nested functions (E320), reduce nesting depth
(E010), and accept spaces in cookie values to match browser behavior.
- Fix base_url trailing slash so requests resolve to /api/...
- Replace Fmt_tty/Logs_fmt with Vlog.setup, thread into subcommands
- Use Monopam_info.version in slack, hermest, and skills CLIs
- Add 24 tests: codec roundtrips, response wrapper, JSON constructors
- Expose Api.Private for test access to internal codecs
- 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-atp
git-subtree-mainline: 53d956cd0a413cbcf30c712c53a21bfaa7a487b8
- 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-atp
git-subtree-mainline: 53d956cd0a413cbcf30c712c53a21bfaa7a487b8
- 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-atp
git-subtree-mainline: 53d956cd0a413cbcf30c712c53a21bfaa7a487b8
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.
git-subtree-dir: ocaml-atp
git-subtree-mainline: 53d956cd0a413cbcf30c712c53a21bfaa7a487b8
The @ocaml-index target was failing because:
1. Test modules lacked .mli files needed for index generation
2. Test directories with multiple executables didn't specify (modules),
causing dune to include all .ml files in each executable - modules
using alcotest were included in executables without that dependency
Added empty .mli stubs and explicit (modules) fields. Also added
(enabled_if (= %{context_name} "default")) to disable tests in afl context.
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
Standardize fuzz and test conventions across 30+ packages:
- E715/E718: Add fuzz.ml runners referencing Fuzz_*.suite instead of
calling Fuzz_*.run() directly; update dune files accordingly
- E725: Fix fuzz_paseto suite name from "crowbar" to "paseto"
- E600: Create .mli interfaces for test modules (test_firmware,
test_remoteproc, test_pbkdf2, test_paseto) with single-group suites
- E605: Add missing test files (test_skills, test_monitor, test_openamp,
test_xrpc_server) with proper module extraction from inline test.ml
- E415: Add pp pretty-printer to xrpc_server type t
- E405: Add doc comment for pp_sync_action in skills.mli
- E205: Replace Printf with Fmt in fuzz_paseto and gen_corpus
- E331: Rename make_key to key in fuzz_paseto
Add atp-xrpc-server library — minimal Eio HTTP server routing
/xrpc/<nsid> to handlers with CORS, percent-decoding, and JSON errors.
Merge Mst backend into PDS: "mst"/"atproto" are now aliases for "pds"
which uses SQLite (via ocaml-sqlite) instead of one-file-per-CID on
the filesystem. Auto-detect pds.db in detect_backend.
Add `irmin serve` command that exposes any backend (Git, PDS, Memory)
as a read-only ATProto PDS over XRPC. Supports --format=xrpc (default,
extensible), --port (default 2583), --did (auto-detected from PDS
metadata). Implements describeServer, describeRepo, getRecord,
listRecords, getRepo, and getBlob endpoints. DAG-CBOR content is
decoded to JSON with CID links as {"$link":"..."}, non-CBOR content
(Git) is served as-is.
- cookeio: remove incorrect validation test expecting space in cookie
value to be rejected (RFC 6265 allows it)
- atp: normalize CBOR map key ordering in roundtrip test for
deterministic comparison
- oci: fix guess_manifest platform matching by converting Osrelease
types directly to OCI types instead of lossy string round-trip,
fix test JSON to use OCI-format platform strings, fix truncated
SHA-256 digest in no-platform test (60 → 64 hex chars)
- Fix E325 to skip type variables when checking get/find naming
- Add test.ml runners for bpsec, bytesrw-eio, cfdp, claude-skills
- Add .mli files for btree lib modules and test modules
- Add .mli files for cbort, cgr, bundle, bpsec, bytesrw-eio
- Add claudeio test module stubs and .mli files
- Add claudeio test/proto/dune for outgoing tests
- Fix claudeio examples Test_json_utils -> Json_utils references
- Add linkedin URL parsing module and tests
- Improve linkedin profile scraping and cookie handling
- Fix claude-skills main.ml lint issues
- Fix various .mli doc comment formatting
- Flatten nested ifs in nodes_in_cycles using guard clauses (E010)
- Replace catch-all exception handlers with specific exceptions (E105):
blockstore.ml: catch Eio.Io for mkdirs
dagcbor_atproto_test.ml: catch Failure/Invalid_argument for decode
xrpc_auth_session.ml: catch Eio.Io for file access
xrpc_cred.ml: catch Eio.Io for logout network call
bloom.ml: catch Invalid_argument for deserialization
- Replace Str module with stdlib contains helper in test files (E200)
- Remove str dependency from tangled/test and hermest/test dune files
- Rename block_map functions: find_exn→get, find_many→resolve (E325)
- Reduce underscore count in test identifiers across xrpc/ax25 tests
- Apply linter variant renames: CidLink→Cid_link, FlexNet→Flex_net, etc.
Add individual Alcotest test files for ocaml-atp (tid, handle, did, nsid,
record_key, at_uri, mst, car, block_map, blockstore, dagcbor, cid, blob_ref,
eio_error, lex, repo_key, varint), hermest (codegen_jsont, emitter,
lexicon_types, scc), standard-site, tangled, xrpc, xrpc-auth, and bloom.
Fix catch-all exception handlers (E105), redundant function prefixes (E331),
and expose parse functions in ocaml-arp for testability.
- Fix base_url trailing slash so requests resolve to /api/...
- Replace Fmt_tty/Logs_fmt with Vlog.setup, thread into subcommands
- Use Monopam_info.version in slack, hermest, and skills CLIs
- Add 24 tests: codec roundtrips, response wrapper, JSON constructors
- Expose Api.Private for test access to internal codecs
- 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
- 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
The @ocaml-index target was failing because:
1. Test modules lacked .mli files needed for index generation
2. Test directories with multiple executables didn't specify (modules),
causing dune to include all .ml files in each executable - modules
using alcotest were included in executables without that dependency
Added empty .mli stubs and explicit (modules) fields. Also added
(enabled_if (= %{context_name} "default")) to disable tests in afl context.