diff --git a/.github/code-owners.json b/.github/code-owners.json new file mode 100644 index 000000000..91391757f --- /dev/null +++ b/.github/code-owners.json @@ -0,0 +1,4050 @@ +{ + "_comment": "Generated by scripts/code_owners.py -- do not edit. Commits per author over the window; a tie-break input for issue triage, not a policy or review gate.", + "window": "12 months ago", + "repos": { + "wavelength": { + "ref": "origin/main", + "head": "535ca057e360f5ca81267b41a3e0f522140af39a", + "packages": { + "arkrpc": { + "Roasbeef": 5, + "ellemouton": 4, + "bhandras": 2, + "sputn1ck": 1 + }, + "baselib": { + "Roasbeef": 57, + "bhandras": 12, + "sputn1ck": 7, + "ellemouton": 2 + }, + "btcwbackend": { + "Roasbeef": 20, + "bhandras": 5, + "ellemouton": 5, + "sputn1ck": 4 + }, + "build": { + "Roasbeef": 11, + "bhandras": 1 + }, + "chain": { + "bhandras": 1, + "ellemouton": 1 + }, + "chainbackends": { + "Roasbeef": 16, + "bhandras": 9, + "ellemouton": 9 + }, + "chainfees": { + "Roasbeef": 5, + "bhandras": 1, + "ellemouton": 1 + }, + "chainsource": { + "Roasbeef": 20, + "bhandras": 6, + "ellemouton": 5 + }, + "cmd": { + "Roasbeef": 64, + "bhandras": 36, + "sputn1ck": 28, + "ellemouton": 10 + }, + "coinselect": { + "Roasbeef": 1, + "ellemouton": 1 + }, + "credit": { + "Roasbeef": 11, + "ellemouton": 2, + "sputn1ck": 2, + "bhandras": 1 + }, + "daemonrpc": { + "bhandras": 4, + "sputn1ck": 1 + }, + "darepod": { + "Roasbeef": 155, + "bhandras": 77, + "ellemouton": 58, + "sputn1ck": 37 + }, + "db": { + "Roasbeef": 140, + "bhandras": 47, + "ellemouton": 34, + "sputn1ck": 8 + }, + "fraud": { + "Roasbeef": 3, + "ellemouton": 3 + }, + "gateway": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "harness": { + "bhandras": 17, + "Roasbeef": 7, + "ellemouton": 6, + "sputn1ck": 3 + }, + "indexer": { + "Roasbeef": 23, + "bhandras": 11, + "ellemouton": 1 + }, + "internal": { + "Roasbeef": 12, + "bhandras": 8, + "ellemouton": 2, + "sputn1ck": 1 + }, + "ledger": { + "Roasbeef": 41, + "bhandras": 3, + "ellemouton": 2 + }, + "ledgeractor": { + "Roasbeef": 3 + }, + "lib": { + "Roasbeef": 51, + "ellemouton": 50, + "bhandras": 41, + "sputn1ck": 21 + }, + "lndbackend": { + "Roasbeef": 10, + "bhandras": 7, + "ellemouton": 3 + }, + "lwwallet": { + "Roasbeef": 23, + "ellemouton": 8, + "bhandras": 7, + "sputn1ck": 5 + }, + "mailbox": { + "Roasbeef": 12, + "bhandras": 4, + "ellemouton": 2, + "sputn1ck": 1 + }, + "metrics": { + "Roasbeef": 8 + }, + "oor": { + "Roasbeef": 69, + "bhandras": 68, + "ellemouton": 21, + "sputn1ck": 1 + }, + "oorwire": { + "Roasbeef": 1 + }, + "p-models": { + "Roasbeef": 6 + }, + "proofkeys": { + "bhandras": 2, + "Roasbeef": 1 + }, + "round": { + "Roasbeef": 138, + "ellemouton": 66, + "bhandras": 17, + "sputn1ck": 12 + }, + "rpc": { + "Roasbeef": 24, + "sputn1ck": 10, + "bhandras": 9, + "ellemouton": 7 + }, + "rpcauth": { + "sputn1ck": 2 + }, + "scripts": { + "Roasbeef": 4, + "bhandras": 3 + }, + "sdk": { + "bhandras": 51, + "sputn1ck": 42, + "Roasbeef": 29, + "ellemouton": 8 + }, + "serverconn": { + "Roasbeef": 53, + "bhandras": 14, + "ellemouton": 5, + "sputn1ck": 4 + }, + "swapclientserver": { + "sputn1ck": 18, + "bhandras": 15, + "Roasbeef": 9, + "ellemouton": 1 + }, + "swaprpc": { + "bhandras": 1 + }, + "swapwallet": { + "Roasbeef": 37, + "bhandras": 23, + "sputn1ck": 22, + "ellemouton": 13 + }, + "systest": { + "Roasbeef": 25, + "ellemouton": 13, + "bhandras": 7, + "sputn1ck": 2 + }, + "timeout": { + "Roasbeef": 11, + "bhandras": 3 + }, + "tools": { + "Roasbeef": 3, + "bhandras": 3 + }, + "txconfirm": { + "Roasbeef": 36, + "ellemouton": 7, + "bhandras": 2, + "sputn1ck": 2 + }, + "unroll": { + "Roasbeef": 25, + "ellemouton": 19, + "bhandras": 6, + "sputn1ck": 6 + }, + "unrollplan": { + "Roasbeef": 4, + "bhandras": 2, + "ellemouton": 2 + }, + "vhtlcrecovery": { + "Roasbeef": 5, + "bhandras": 4, + "ellemouton": 1 + }, + "vtxo": { + "Roasbeef": 62, + "ellemouton": 39, + "bhandras": 12, + "sputn1ck": 9 + }, + "wallet": { + "Roasbeef": 69, + "ellemouton": 22, + "bhandras": 17, + "sputn1ck": 5 + }, + "walletcore": { + "Roasbeef": 7, + "bhandras": 3, + "sputn1ck": 2, + "ellemouton": 1 + }, + "waved": { + "Roasbeef": 27, + "ellemouton": 9, + "sputn1ck": 7, + "bhandras": 5 + }, + "waverpc": { + "Roasbeef": 1 + } + }, + "files": { + "arkrpc/ancestry_path_convert.go": { + "Roasbeef": 2, + "ellemouton": 2, + "bhandras": 1 + }, + "arkrpc/ancestry_path_convert_test.go": { + "Roasbeef": 2, + "ellemouton": 2, + "bhandras": 1 + }, + "arkrpc/tree_path_convert.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "arkrpc/tree_path_convert_test.go": { + "Roasbeef": 4, + "bhandras": 1, + "ellemouton": 1 + }, + "baselib/actor/actor.go": { + "Roasbeef": 9, + "bhandras": 5, + "sputn1ck": 1 + }, + "baselib/actor/caller_context_test.go": { + "bhandras": 3, + "Roasbeef": 1 + }, + "baselib/actor/channel_mailbox.go": { + "bhandras": 3, + "Roasbeef": 2 + }, + "baselib/actor/delivery.go": { + "Roasbeef": 4, + "bhandras": 1 + }, + "baselib/actor/delivery_store.go": { + "Roasbeef": 6, + "bhandras": 2 + }, + "baselib/actor/delivery_test.go": { + "Roasbeef": 7, + "bhandras": 2 + }, + "baselib/actor/durable_actor.go": { + "Roasbeef": 13, + "bhandras": 6, + "ellemouton": 2 + }, + "baselib/actor/durable_actor_test.go": { + "Roasbeef": 7, + "bhandras": 4 + }, + "baselib/actor/durable_mailbox.go": { + "Roasbeef": 13, + "bhandras": 4 + }, + "baselib/actor/durable_mailbox_test.go": { + "Roasbeef": 8, + "bhandras": 3 + }, + "baselib/actor/example_basic_actor_test.go": { + "Roasbeef": 3, + "bhandras": 1, + "sputn1ck": 1 + }, + "baselib/actor/example_router_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "sputn1ck": 1 + }, + "baselib/actor/example_struct_actor_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "sputn1ck": 1 + }, + "baselib/actor/example_tell_only_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "sputn1ck": 1 + }, + "baselib/actor/interface.go": { + "Roasbeef": 11, + "bhandras": 2, + "sputn1ck": 1 + }, + "baselib/actor/log.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "baselib/actor/mailbox_test.go": { + "Roasbeef": 2, + "bhandras": 2 + }, + "baselib/actor/map_input_ref.go": { + "Roasbeef": 4, + "bhandras": 1 + }, + "baselib/actor/map_ref.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "baselib/actor/outbox_publisher.go": { + "Roasbeef": 4, + "bhandras": 4 + }, + "baselib/actor/outbox_publisher_test.go": { + "Roasbeef": 5, + "bhandras": 3 + }, + "baselib/actor/restart.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "baselib/actor/router.go": { + "Roasbeef": 4, + "bhandras": 1, + "sputn1ck": 1 + }, + "baselib/actor/system.go": { + "Roasbeef": 8, + "bhandras": 3, + "sputn1ck": 2 + }, + "baselib/actor/system_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "sputn1ck": 1 + }, + "baselib/actor/tell_only_ref_test_helper.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "baselib/actor/tx_context.go": { + "Roasbeef": 4, + "bhandras": 1 + }, + "baselib/actor/tx_context_test.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "baselib/actor/tx_exec.go": { + "Roasbeef": 3 + }, + "baselib/actor/tx_exec_test.go": { + "Roasbeef": 4 + }, + "baselib/example/example_actors.go": { + "bhandras": 2, + "Roasbeef": 1, + "sputn1ck": 1 + }, + "baselib/example/example_protofsm.go": { + "Roasbeef": 1, + "bhandras": 1, + "sputn1ck": 1 + }, + "baselib/example/example_test.go": { + "Roasbeef": 2, + "bhandras": 2, + "sputn1ck": 1 + }, + "baselib/protofsm/actor_wrapper.go": { + "sputn1ck": 2, + "Roasbeef": 1, + "bhandras": 1 + }, + "baselib/protofsm/state_machine.go": { + "Roasbeef": 3, + "sputn1ck": 3, + "bhandras": 1 + }, + "baselib/protofsm/state_machine_test.go": { + "sputn1ck": 3 + }, + "btcwbackend/boarding_backend.go": { + "Roasbeef": 8, + "sputn1ck": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "btcwbackend/chain_backend.go": { + "Roasbeef": 7, + "ellemouton": 5, + "bhandras": 2, + "sputn1ck": 2 + }, + "btcwbackend/chain_backend_test.go": { + "Roasbeef": 2, + "ellemouton": 2, + "bhandras": 1 + }, + "btcwbackend/config.go": { + "Roasbeef": 4, + "sputn1ck": 2, + "bhandras": 1 + }, + "btcwbackend/neutrino.go": { + "Roasbeef": 4, + "bhandras": 3, + "sputn1ck": 3, + "ellemouton": 1 + }, + "btcwbackend/wallet.go": { + "Roasbeef": 11, + "bhandras": 4, + "sputn1ck": 2 + }, + "btcwbackend/wasm_stub.go": { + "Roasbeef": 3, + "ellemouton": 1, + "sputn1ck": 1 + }, + "build/log.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "build/version.go": { + "Roasbeef": 5 + }, + "build/version_test.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "chainbackends/bitcoindrpc/package_submitter.go": { + "Roasbeef": 2, + "ellemouton": 2, + "bhandras": 1 + }, + "chainbackends/doc.go": { + "Roasbeef": 3 + }, + "chainbackends/lnd.go": { + "Roasbeef": 8, + "bhandras": 7, + "ellemouton": 6 + }, + "chainbackends/lnd_test.go": { + "ellemouton": 4, + "bhandras": 3, + "Roasbeef": 2 + }, + "chainbackends/lndclient_adapters.go": { + "Roasbeef": 8, + "bhandras": 6, + "ellemouton": 5 + }, + "chainbackends/log.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "chainbackends/package_error.go": { + "ellemouton": 2, + "bhandras": 1 + }, + "chainfees/mempoolspace.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "chainfees/mempoolspace_test.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "chainfees/walletkit.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "chainfees/walletkit_test.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "chainsource/backend.go": { + "ellemouton": 4, + "Roasbeef": 3, + "bhandras": 1 + }, + "chainsource/block_epoch_actor.go": { + "Roasbeef": 5, + "bhandras": 4 + }, + "chainsource/broadcast_errors.go": { + "ellemouton": 2, + "bhandras": 1 + }, + "chainsource/broadcast_errors_test.go": { + "bhandras": 2, + "ellemouton": 1 + }, + "chainsource/chainsource.go": { + "Roasbeef": 5, + "ellemouton": 4, + "bhandras": 2 + }, + "chainsource/chainsource_errors_test.go": { + "Roasbeef": 6, + "ellemouton": 2, + "bhandras": 1 + }, + "chainsource/chainsource_test.go": { + "Roasbeef": 6, + "bhandras": 4, + "ellemouton": 4 + }, + "chainsource/conf_actor.go": { + "Roasbeef": 7, + "bhandras": 3, + "ellemouton": 3 + }, + "chainsource/messages.go": { + "Roasbeef": 4, + "ellemouton": 4, + "bhandras": 1 + }, + "chainsource/messages_test.go": { + "Roasbeef": 3, + "ellemouton": 2, + "bhandras": 1 + }, + "chainsource/spend_actor.go": { + "Roasbeef": 5, + "bhandras": 3, + "ellemouton": 2 + }, + "chainsource/transform.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "chainsource/transform_test.go": { + "Roasbeef": 4, + "bhandras": 3, + "ellemouton": 1 + }, + "cmd/arkd/main.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "cmd/darepocli/darepoclicommands/client.go": { + "sputn1ck": 3, + "bhandras": 2 + }, + "cmd/darepocli/darepoclicommands/cmd_ark.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_ark_send.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_balance.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_board.go": { + "Roasbeef": 3, + "bhandras": 1, + "sputn1ck": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_create.go": { + "sputn1ck": 4, + "Roasbeef": 2 + }, + "cmd/darepocli/darepoclicommands/cmd_exit.go": { + "Roasbeef": 4, + "sputn1ck": 4 + }, + "cmd/darepocli/darepoclicommands/cmd_fees.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_list.go": { + "sputn1ck": 2, + "Roasbeef": 1, + "bhandras": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_mcp.go": { + "Roasbeef": 6, + "bhandras": 5, + "sputn1ck": 4, + "ellemouton": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_oor.go": { + "bhandras": 6, + "Roasbeef": 2, + "ellemouton": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_recv.go": { + "Roasbeef": 2, + "sputn1ck": 2 + }, + "cmd/darepocli/darepoclicommands/cmd_rounds.go": { + "Roasbeef": 3, + "bhandras": 2, + "ellemouton": 2 + }, + "cmd/darepocli/darepoclicommands/cmd_schema.go": { + "Roasbeef": 1, + "bhandras": 1, + "sputn1ck": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_send.go": { + "Roasbeef": 6, + "sputn1ck": 5, + "bhandras": 3, + "ellemouton": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_send_test.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_swap.go": { + "bhandras": 5, + "sputn1ck": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_swap_rpc.go": { + "Roasbeef": 2, + "bhandras": 2, + "sputn1ck": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_swap_stub.go": { + "bhandras": 3 + }, + "cmd/darepocli/darepoclicommands/cmd_swap_test.go": { + "bhandras": 4 + }, + "cmd/darepocli/darepoclicommands/cmd_sweep.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_unlock.go": { + "Roasbeef": 2, + "sputn1ck": 2 + }, + "cmd/darepocli/darepoclicommands/cmd_vtxos.go": { + "Roasbeef": 3, + "ellemouton": 2, + "bhandras": 1, + "sputn1ck": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_vtxos_leave_test.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "cmd/darepocli/darepoclicommands/cmd_wallet.go": { + "Roasbeef": 4, + "bhandras": 2, + "sputn1ck": 2 + }, + "cmd/darepocli/darepoclicommands/cmd_wallet_rpc.go": { + "Roasbeef": 4, + "sputn1ck": 1 + }, + "cmd/darepocli/darepoclicommands/devrpc/command_test.go": { + "sputn1ck": 2, + "bhandras": 1 + }, + "cmd/darepocli/darepoclicommands/mcp_wallet.go": { + "sputn1ck": 3, + "Roasbeef": 2, + "bhandras": 1 + }, + "cmd/darepocli/darepoclicommands/mcp_wallet_test.go": { + "sputn1ck": 2, + "Roasbeef": 1, + "bhandras": 1 + }, + "cmd/darepocli/darepoclicommands/oor_destination.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "cmd/darepocli/darepoclicommands/oor_destination_test.go": { + "bhandras": 3, + "Roasbeef": 2, + "ellemouton": 1 + }, + "cmd/darepocli/darepoclicommands/root.go": { + "bhandras": 8, + "Roasbeef": 6, + "sputn1ck": 4, + "ellemouton": 1 + }, + "cmd/darepocli/darepoclicommands/root_test.go": { + "bhandras": 3, + "Roasbeef": 1 + }, + "cmd/darepocli/darepoclicommands/schema_registry.go": { + "Roasbeef": 10, + "bhandras": 6, + "sputn1ck": 3, + "ellemouton": 2 + }, + "cmd/darepocli/darepoclicommands/wallet_client.go": { + "Roasbeef": 2, + "sputn1ck": 2, + "bhandras": 1 + }, + "cmd/darepocli/darepoclicommands/wallet_client_test.go": { + "Roasbeef": 2, + "sputn1ck": 2, + "bhandras": 1 + }, + "cmd/darepocli/darepoclicommands/wallet_inspection_table.go": { + "bhandras": 4, + "Roasbeef": 1, + "sputn1ck": 1 + }, + "cmd/darepocli/darepoclicommands/wallet_inspection_table_test.go": { + "bhandras": 3, + "Roasbeef": 1, + "sputn1ck": 1 + }, + "cmd/darepocli/darepoclicommands/wallet_table.go": { + "sputn1ck": 2, + "bhandras": 1 + }, + "cmd/darepocli/internal/gen-devrpc/main.go": { + "sputn1ck": 3 + }, + "cmd/darepocli/main.go": { + "Roasbeef": 2, + "sputn1ck": 2, + "bhandras": 1 + }, + "cmd/darepod/main.go": { + "Roasbeef": 13, + "bhandras": 7, + "sputn1ck": 7, + "ellemouton": 3 + }, + "cmd/darepod/main_test.go": { + "ellemouton": 2, + "bhandras": 1 + }, + "cmd/merge-sql-schemas/main.go": { + "Roasbeef": 4, + "bhandras": 3 + }, + "cmd/protoc-gen-mailboxrpc/internal/gen/generator.go": { + "Roasbeef": 3, + "bhandras": 2 + }, + "cmd/protoc-gen-mailboxrpc/main.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "cmd/walletdk-wasm/main.go": { + "Roasbeef": 2, + "sputn1ck": 1 + }, + "cmd/wavecli/waveclicommands/cmd_send.go": { + "Roasbeef": 3 + }, + "cmd/wavecli/waveclicommands/cmd_send_test.go": { + "Roasbeef": 3 + }, + "cmd/wavecli/waveclicommands/cmd_vtxos.go": { + "Roasbeef": 3 + }, + "cmd/waved/main.go": { + "Roasbeef": 3, + "sputn1ck": 2 + }, + "credit/config.go": { + "Roasbeef": 3, + "ellemouton": 2 + }, + "credit/messages.go": { + "Roasbeef": 4 + }, + "credit/op_actor.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "credit/op_actor_test.go": { + "Roasbeef": 3, + "sputn1ck": 2 + }, + "credit/policy.go": { + "Roasbeef": 3 + }, + "credit/registry.go": { + "Roasbeef": 7, + "sputn1ck": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "credit/registry_test.go": { + "Roasbeef": 4, + "bhandras": 1, + "sputn1ck": 1 + }, + "credit/state.go": { + "Roasbeef": 3 + }, + "daemonrpc/daemon_proto_test.go": { + "bhandras": 3 + }, + "darepod/boarding_sweep.go": { + "Roasbeef": 2, + "bhandras": 2 + }, + "darepod/boarding_sweep_test.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "darepod/boarding_sweep_watcher.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "darepod/boarding_sweep_watcher_test.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "darepod/config.go": { + "Roasbeef": 21, + "bhandras": 13, + "sputn1ck": 13, + "ellemouton": 7 + }, + "darepod/config_network_test.go": { + "Roasbeef": 2, + "ellemouton": 1, + "sputn1ck": 1 + }, + "darepod/congestion_roundtrip_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "darepod/credit_registry.go": { + "Roasbeef": 3, + "ellemouton": 1 + }, + "darepod/gateway_server_test.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "darepod/incoming_metadata.go": { + "ellemouton": 5, + "bhandras": 4, + "Roasbeef": 3 + }, + "darepod/incoming_metadata_test.go": { + "ellemouton": 4, + "bhandras": 1 + }, + "darepod/indexer_proof_keyops.go": { + "bhandras": 2, + "sputn1ck": 1 + }, + "darepod/lineage_test.go": { + "ellemouton": 3, + "bhandras": 1 + }, + "darepod/log.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "darepod/logging.go": { + "Roasbeef": 9, + "bhandras": 4, + "sputn1ck": 2, + "ellemouton": 1 + }, + "darepod/metrics.go": { + "Roasbeef": 4 + }, + "darepod/outbound_clients.go": { + "sputn1ck": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "darepod/receive_script.go": { + "bhandras": 5, + "Roasbeef": 4, + "ellemouton": 1 + }, + "darepod/receive_script_test.go": { + "bhandras": 5, + "Roasbeef": 3, + "sputn1ck": 1 + }, + "darepod/rpc_auth.go": { + "Roasbeef": 2, + "sputn1ck": 2 + }, + "darepod/rpc_boarding_sweep.go": { + "Roasbeef": 3, + "bhandras": 2, + "ellemouton": 1 + }, + "darepod/rpc_exit_plan.go": { + "Roasbeef": 7, + "ellemouton": 3, + "sputn1ck": 3 + }, + "darepod/rpc_exit_plan_test.go": { + "Roasbeef": 3, + "sputn1ck": 3, + "ellemouton": 2 + }, + "darepod/rpc_fees.go": { + "Roasbeef": 6, + "bhandras": 4, + "ellemouton": 1, + "sputn1ck": 1 + }, + "darepod/rpc_fees_test.go": { + "Roasbeef": 4, + "bhandras": 3, + "ellemouton": 2 + }, + "darepod/rpc_leave_test.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "darepod/rpc_oor_custom_input_test.go": { + "bhandras": 4, + "ellemouton": 1, + "sputn1ck": 1 + }, + "darepod/rpc_oor_idempotency_test.go": { + "bhandras": 7, + "Roasbeef": 5, + "ellemouton": 1, + "sputn1ck": 1 + }, + "darepod/rpc_oor_receive.go": { + "bhandras": 5, + "Roasbeef": 3 + }, + "darepod/rpc_operation_status.go": { + "bhandras": 2, + "ellemouton": 1, + "sputn1ck": 1 + }, + "darepod/rpc_operation_status_test.go": { + "bhandras": 3, + "sputn1ck": 1 + }, + "darepod/rpc_security.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "darepod/rpc_server.go": { + "Roasbeef": 36, + "bhandras": 25, + "ellemouton": 25, + "sputn1ck": 13 + }, + "darepod/rpc_server_test.go": { + "ellemouton": 9, + "Roasbeef": 5, + "bhandras": 5, + "sputn1ck": 4 + }, + "darepod/rpc_swap_lookup.go": { + "bhandras": 4, + "ellemouton": 3 + }, + "darepod/rpc_vhtlc_recovery.go": { + "bhandras": 3, + "ellemouton": 1 + }, + "darepod/rpc_vhtlc_recovery_test.go": { + "bhandras": 3, + "Roasbeef": 1, + "ellemouton": 1 + }, + "darepod/rpc_wallet.go": { + "Roasbeef": 7, + "bhandras": 4, + "sputn1ck": 3, + "ellemouton": 1 + }, + "darepod/seed_manager.go": { + "Roasbeef": 6, + "bhandras": 2, + "sputn1ck": 1 + }, + "darepod/seed_manager_test.go": { + "Roasbeef": 4, + "bhandras": 1 + }, + "darepod/seed_storage_wasm.go": { + "Roasbeef": 3, + "sputn1ck": 1 + }, + "darepod/server.go": { + "Roasbeef": 93, + "bhandras": 34, + "ellemouton": 30, + "sputn1ck": 23 + }, + "darepod/server_mailbox_edge_test.go": { + "bhandras": 3, + "sputn1ck": 1 + }, + "darepod/server_outbound_clients_test.go": { + "sputn1ck": 3 + }, + "darepod/server_round_testhook.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "darepod/server_round_testhook_test.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "darepod/server_rpc_listener_test.go": { + "bhandras": 3, + "sputn1ck": 3, + "Roasbeef": 1 + }, + "darepod/serverconn_builder.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "darepod/unroll_fee_input_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "darepod/vhtlc_recovery_target.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "darepod/wallet_ops.go": { + "bhandras": 6, + "Roasbeef": 4, + "ellemouton": 2 + }, + "darepod/wallet_ops_test.go": { + "bhandras": 5, + "Roasbeef": 3, + "ellemouton": 1 + }, + "darepod/wallet_recovery.go": { + "sputn1ck": 3, + "ellemouton": 2 + }, + "darepod/wallet_testhooks.go": { + "ellemouton": 3, + "bhandras": 1, + "sputn1ck": 1 + }, + "db/activity_store.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "db/actor_delivery_store.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "db/actor_delivery_store_test.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "db/actordelivery/durable_actor_pool_bench_test.go": { + "Roasbeef": 3 + }, + "db/actordelivery/durable_actor_reorder_test.go": { + "Roasbeef": 4 + }, + "db/actordelivery/migrations/runner.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "db/actordelivery/migrations_test.go": { + "Roasbeef": 3, + "bhandras": 2 + }, + "db/actordelivery/sqlc/models.go": { + "Roasbeef": 4, + "bhandras": 2, + "ellemouton": 2 + }, + "db/actordelivery/sqlc/querier.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "db/actordelivery/store.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "db/actordelivery/store_bench_test.go": { + "Roasbeef": 3 + }, + "db/actordelivery/store_impl.go": { + "Roasbeef": 11, + "bhandras": 3 + }, + "db/actordelivery/store_impl_test.go": { + "Roasbeef": 4, + "bhandras": 3 + }, + "db/actordelivery/store_test.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "db/actordelivery/store_tx_retry_test.go": { + "Roasbeef": 3 + }, + "db/ancestry_codec.go": { + "Roasbeef": 6, + "bhandras": 2, + "ellemouton": 2 + }, + "db/ancestry_codec_test.go": { + "Roasbeef": 3, + "bhandras": 2, + "ellemouton": 1 + }, + "db/boarding_sweep_store.go": { + "Roasbeef": 4, + "bhandras": 2, + "ellemouton": 1 + }, + "db/boarding_wallet.go": { + "Roasbeef": 7, + "bhandras": 4, + "ellemouton": 2 + }, + "db/boarding_wallet_test.go": { + "Roasbeef": 6, + "bhandras": 5, + "ellemouton": 2 + }, + "db/credit_operation_store.go": { + "Roasbeef": 3 + }, + "db/interfaces.go": { + "Roasbeef": 10, + "bhandras": 5, + "ellemouton": 1 + }, + "db/interfaces_test.go": { + "Roasbeef": 2, + "bhandras": 2 + }, + "db/ledger_store.go": { + "Roasbeef": 10, + "bhandras": 3 + }, + "db/ledger_store_test.go": { + "Roasbeef": 12, + "bhandras": 7, + "ellemouton": 2 + }, + "db/log.go": { + "Roasbeef": 4, + "bhandras": 2 + }, + "db/migrate/migrations.go": { + "bhandras": 3, + "Roasbeef": 1, + "sputn1ck": 1 + }, + "db/migrations.go": { + "Roasbeef": 20, + "bhandras": 10, + "ellemouton": 6, + "sputn1ck": 1 + }, + "db/migrations_test.go": { + "Roasbeef": 8, + "bhandras": 7 + }, + "db/oor_artifact_store.go": { + "bhandras": 4, + "ellemouton": 3, + "Roasbeef": 1 + }, + "db/oor_artifact_store_test.go": { + "bhandras": 3, + "ellemouton": 2, + "Roasbeef": 1 + }, + "db/oor_session_registry_store.go": { + "Roasbeef": 2, + "ellemouton": 2 + }, + "db/oor_session_registry_store_test.go": { + "Roasbeef": 2, + "ellemouton": 2 + }, + "db/oor_unroll_resolver.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 2 + }, + "db/oor_unroll_resolver_test.go": { + "bhandras": 2, + "ellemouton": 2, + "Roasbeef": 1 + }, + "db/pending_intent_store.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "db/pending_intent_store_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "db/post_migration_checks.go": { + "Roasbeef": 5, + "bhandras": 3 + }, + "db/postgres.go": { + "Roasbeef": 9, + "bhandras": 6, + "sputn1ck": 2 + }, + "db/postgres_fixture.go": { + "bhandras": 3, + "Roasbeef": 2, + "sputn1ck": 2 + }, + "db/round_store.go": { + "Roasbeef": 19, + "ellemouton": 18, + "bhandras": 6, + "sputn1ck": 2 + }, + "db/round_store_test.go": { + "ellemouton": 13, + "Roasbeef": 11, + "bhandras": 5, + "sputn1ck": 1 + }, + "db/spending_reservation_store.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "db/sqlc/db_custom.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "db/sqlc/models.go": { + "Roasbeef": 22, + "ellemouton": 13, + "bhandras": 7, + "sputn1ck": 1 + }, + "db/sqlc/querier.go": { + "Roasbeef": 29, + "bhandras": 13, + "ellemouton": 9, + "sputn1ck": 2 + }, + "db/sqlerrors.go": { + "Roasbeef": 6, + "bhandras": 2, + "sputn1ck": 2 + }, + "db/sqlerrors_postgres_test.go": { + "Roasbeef": 3 + }, + "db/sqlite.go": { + "Roasbeef": 13, + "bhandras": 6, + "sputn1ck": 1 + }, + "db/sqlutils.go": { + "Roasbeef": 5, + "bhandras": 2 + }, + "db/store.go": { + "Roasbeef": 14, + "bhandras": 8, + "ellemouton": 2 + }, + "db/test_postgres.go": { + "Roasbeef": 3, + "sputn1ck": 2, + "bhandras": 1 + }, + "db/test_sqlite.go": { + "Roasbeef": 3, + "bhandras": 3 + }, + "db/tree_codec.go": { + "Roasbeef": 3, + "bhandras": 1, + "ellemouton": 1 + }, + "db/tree_codec_test.go": { + "Roasbeef": 3, + "bhandras": 1, + "ellemouton": 1 + }, + "db/unilateral_exit_store.go": { + "ellemouton": 5, + "bhandras": 2, + "Roasbeef": 1 + }, + "db/unilateral_exit_store_test.go": { + "ellemouton": 4, + "Roasbeef": 1, + "bhandras": 1 + }, + "db/utxo_audit_store.go": { + "Roasbeef": 4, + "bhandras": 1 + }, + "db/utxo_audit_store_test.go": { + "Roasbeef": 5, + "bhandras": 2 + }, + "db/vhtlc_recovery_store.go": { + "bhandras": 5, + "Roasbeef": 2, + "ellemouton": 1 + }, + "db/vhtlc_recovery_store_test.go": { + "bhandras": 3, + "Roasbeef": 2, + "ellemouton": 1 + }, + "db/vtxo_store.go": { + "Roasbeef": 14, + "ellemouton": 8, + "bhandras": 4, + "sputn1ck": 1 + }, + "db/vtxo_store_test.go": { + "Roasbeef": 13, + "bhandras": 6, + "ellemouton": 6, + "sputn1ck": 1 + }, + "fraud/actor.go": { + "ellemouton": 3, + "Roasbeef": 2 + }, + "fraud/actor_test.go": { + "Roasbeef": 3, + "ellemouton": 3 + }, + "fraud/messages.go": { + "ellemouton": 3, + "Roasbeef": 1 + }, + "fraud/watch_model.go": { + "ellemouton": 3, + "Roasbeef": 1 + }, + "fraud/watch_model_test.go": { + "ellemouton": 2, + "Roasbeef": 1 + }, + "gateway/gateway.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "gateway/gateway_test.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "harness/harness.go": { + "bhandras": 16, + "Roasbeef": 6, + "ellemouton": 6, + "sputn1ck": 3 + }, + "harness/harness_test.go": { + "bhandras": 4, + "Roasbeef": 2, + "ellemouton": 1 + }, + "harness/port_retry_test.go": { + "bhandras": 3, + "Roasbeef": 1 + }, + "harness/tapd_harness.go": { + "bhandras": 7, + "ellemouton": 2 + }, + "indexer/client.go": { + "Roasbeef": 18, + "bhandras": 8, + "ellemouton": 1 + }, + "indexer/client_test.go": { + "Roasbeef": 5, + "bhandras": 3, + "ellemouton": 1 + }, + "indexer/nonce.go": { + "bhandras": 3, + "Roasbeef": 2 + }, + "indexer/security_audit_test.go": { + "Roasbeef": 6, + "bhandras": 2, + "ellemouton": 1 + }, + "indexer/sync_client.go": { + "Roasbeef": 7, + "bhandras": 5 + }, + "indexer/sync_client_test.go": { + "Roasbeef": 3, + "bhandras": 3 + }, + "internal/actortest/counter_behavior.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "internal/actortest/counter_messages.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "internal/actortest/e2e_test.go": { + "bhandras": 7, + "Roasbeef": 5 + }, + "internal/cmd/tools/accounting/main.go": { + "Roasbeef": 6 + }, + "internal/cmd/tools/accounting/main_test.go": { + "Roasbeef": 4 + }, + "internal/testutils/keys.go": { + "ellemouton": 2, + "Roasbeef": 1 + }, + "internal/testutils/tx_engine.go": { + "ellemouton": 2, + "bhandras": 1 + }, + "ledger/actor.go": { + "Roasbeef": 19, + "bhandras": 3 + }, + "ledger/handlers.go": { + "Roasbeef": 25, + "bhandras": 2, + "ellemouton": 2 + }, + "ledger/handlers_test.go": { + "Roasbeef": 25, + "ellemouton": 2, + "bhandras": 1 + }, + "ledger/messages.go": { + "Roasbeef": 13, + "bhandras": 1, + "ellemouton": 1 + }, + "ledger/service_key.go": { + "Roasbeef": 3 + }, + "ledgeractor/handlers.go": { + "Roasbeef": 3 + }, + "lib/actormsg/interfaces.go": { + "Roasbeef": 10, + "ellemouton": 5, + "bhandras": 1 + }, + "lib/actormsg/service_keys.go": { + "Roasbeef": 3, + "ellemouton": 2, + "bhandras": 1 + }, + "lib/actormsg/vtxo_admission.go": { + "ellemouton": 4, + "Roasbeef": 2, + "bhandras": 2, + "sputn1ck": 1 + }, + "lib/arkscript/anchor.go": { + "sputn1ck": 2, + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/checkpoint.go": { + "bhandras": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "lib/arkscript/compose.go": { + "sputn1ck": 3, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/compose_test.go": { + "sputn1ck": 2, + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/golden_test.go": { + "sputn1ck": 2, + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/node.go": { + "bhandras": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "lib/arkscript/node_test.go": { + "sputn1ck": 2, + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/policy_template.go": { + "sputn1ck": 4, + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/policy_template_test.go": { + "Roasbeef": 3, + "bhandras": 2, + "sputn1ck": 1 + }, + "lib/arkscript/psbt.go": { + "bhandras": 3, + "sputn1ck": 3, + "ellemouton": 1 + }, + "lib/arkscript/psbt_test.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "lib/arkscript/settlement.go": { + "sputn1ck": 4, + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/spend_helpers.go": { + "sputn1ck": 3, + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/spend_path.go": { + "sputn1ck": 4, + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/spend_path_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "lib/arkscript/standard_vtxo.go": { + "Roasbeef": 4, + "sputn1ck": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/standard_vtxo_test.go": { + "Roasbeef": 3, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/tree.go": { + "sputn1ck": 5, + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/tree_test.go": { + "sputn1ck": 3, + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/validate.go": { + "bhandras": 3, + "Roasbeef": 2, + "sputn1ck": 2 + }, + "lib/arkscript/validate_test.go": { + "Roasbeef": 5, + "sputn1ck": 4, + "bhandras": 2 + }, + "lib/arkscript/vhtlc.go": { + "sputn1ck": 7, + "bhandras": 3, + "Roasbeef": 1, + "ellemouton": 1 + }, + "lib/arkscript/vhtlc_test.go": { + "sputn1ck": 5, + "bhandras": 3, + "Roasbeef": 1, + "ellemouton": 1 + }, + "lib/arkscript/vtxo.go": { + "sputn1ck": 4, + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/arkscript/vtxo_test.go": { + "sputn1ck": 3, + "Roasbeef": 1, + "bhandras": 1 + }, + "lib/bip322/intent.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/bip322/intent_auth.go": { + "ellemouton": 2, + "bhandras": 1 + }, + "lib/bip322/intent_auth_test.go": { + "ellemouton": 2, + "bhandras": 1 + }, + "lib/bip322/join_round.go": { + "ellemouton": 2, + "bhandras": 1 + }, + "lib/bip322/join_round_test.go": { + "ellemouton": 2, + "bhandras": 1 + }, + "lib/bip322/sig.go": { + "ellemouton": 2, + "bhandras": 1 + }, + "lib/bip322/signer_test.go": { + "ellemouton": 5, + "bhandras": 1 + }, + "lib/bip322/tx_builder.go": { + "ellemouton": 3, + "bhandras": 1 + }, + "lib/bip322/tx_builder_test.go": { + "ellemouton": 2, + "bhandras": 1 + }, + "lib/bip322/validation.go": { + "ellemouton": 5, + "bhandras": 1 + }, + "lib/bip322/validation_test.go": { + "ellemouton": 4, + "bhandras": 1 + }, + "lib/recovery/proof.go": { + "Roasbeef": 3, + "ellemouton": 2, + "bhandras": 1 + }, + "lib/recovery/proof_accessors_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/recovery/proof_codec.go": { + "Roasbeef": 3, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/recovery/proof_codec_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/recovery/recovery_test.go": { + "Roasbeef": 2, + "ellemouton": 2, + "bhandras": 1 + }, + "lib/recovery/session.go": { + "Roasbeef": 3, + "ellemouton": 2, + "bhandras": 1 + }, + "lib/recovery/session_guards_test.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/recovery/state.go": { + "Roasbeef": 2, + "ellemouton": 2, + "bhandras": 1 + }, + "lib/recovery/state_codec.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/recovery/state_codec_test.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/scripts/vtxo.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "lib/tree/batch.go": { + "ellemouton": 4, + "bhandras": 3, + "Roasbeef": 1, + "sputn1ck": 1 + }, + "lib/tree/batch_test.go": { + "ellemouton": 6, + "bhandras": 3, + "Roasbeef": 1, + "sputn1ck": 1 + }, + "lib/tree/btc_tree_assembler_test.go": { + "bhandras": 4, + "ellemouton": 2 + }, + "lib/tree/build.go": { + "bhandras": 3, + "ellemouton": 1 + }, + "lib/tree/build_test.go": { + "bhandras": 3, + "ellemouton": 3 + }, + "lib/tree/leaf.go": { + "ellemouton": 3, + "bhandras": 1 + }, + "lib/tree/materializer_btc.go": { + "bhandras": 3, + "Roasbeef": 1, + "ellemouton": 1 + }, + "lib/tree/node.go": { + "ellemouton": 7, + "bhandras": 3, + "Roasbeef": 2 + }, + "lib/tree/node_test.go": { + "ellemouton": 4, + "bhandras": 2, + "Roasbeef": 1 + }, + "lib/tree/signing.go": { + "ellemouton": 9, + "bhandras": 1, + "sputn1ck": 1 + }, + "lib/tree/signing_test.go": { + "ellemouton": 6, + "bhandras": 1, + "sputn1ck": 1 + }, + "lib/tree/tree.go": { + "ellemouton": 5, + "Roasbeef": 4, + "bhandras": 3 + }, + "lib/tree/tree_structure.go": { + "bhandras": 3, + "ellemouton": 3 + }, + "lib/tree/tree_test.go": { + "ellemouton": 6, + "bhandras": 3, + "Roasbeef": 2 + }, + "lib/tx/arktx/canonical.go": { + "bhandras": 3, + "Roasbeef": 2, + "ellemouton": 1 + }, + "lib/tx/arktx/canonical_test.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 1 + }, + "lib/tx/checkpoint/build.go": { + "bhandras": 6, + "ellemouton": 2, + "Roasbeef": 1 + }, + "lib/tx/checkpoint/build_test.go": { + "bhandras": 3, + "ellemouton": 2, + "Roasbeef": 1 + }, + "lib/tx/checkpoint/taptree.go": { + "bhandras": 2, + "ellemouton": 1 + }, + "lib/tx/checkpoint/taptree_test.go": { + "bhandras": 3 + }, + "lib/tx/forfeit.go": { + "ellemouton": 3, + "Roasbeef": 2, + "bhandras": 2 + }, + "lib/tx/forfeit_test.go": { + "ellemouton": 5, + "Roasbeef": 2, + "bhandras": 2 + }, + "lib/tx/oor/build.go": { + "bhandras": 8, + "ellemouton": 2, + "Roasbeef": 1 + }, + "lib/tx/oor/build_test.go": { + "bhandras": 6, + "ellemouton": 2, + "Roasbeef": 1 + }, + "lib/tx/oor/canonical.go": { + "bhandras": 3 + }, + "lib/tx/oor/checkpoint_validate.go": { + "ellemouton": 2, + "Roasbeef": 1, + "bhandras": 1 + }, + "lib/tx/oor/doc.go": { + "bhandras": 2, + "ellemouton": 1 + }, + "lib/tx/oor/finalize.go": { + "bhandras": 2, + "ellemouton": 1 + }, + "lib/tx/oor/finalize_test.go": { + "bhandras": 3, + "ellemouton": 1 + }, + "lib/tx/oor/finalize_validate.go": { + "bhandras": 3, + "ellemouton": 2, + "Roasbeef": 1 + }, + "lib/tx/oor/finalize_validate_test.go": { + "bhandras": 2, + "ellemouton": 2, + "Roasbeef": 1 + }, + "lib/tx/oor/package.go": { + "bhandras": 3, + "Roasbeef": 1, + "ellemouton": 1 + }, + "lib/tx/oor/package_methods_test.go": { + "bhandras": 3, + "Roasbeef": 1, + "ellemouton": 1 + }, + "lib/tx/oor/package_test.go": { + "bhandras": 3, + "ellemouton": 2, + "Roasbeef": 1 + }, + "lib/tx/oor/submit.go": { + "bhandras": 4, + "ellemouton": 2, + "Roasbeef": 1 + }, + "lib/tx/oor/submit_signature_validate.go": { + "bhandras": 9, + "Roasbeef": 1, + "ellemouton": 1 + }, + "lib/tx/oor/submit_signature_validate_test.go": { + "bhandras": 6, + "Roasbeef": 1, + "ellemouton": 1 + }, + "lib/tx/oor/submit_test.go": { + "bhandras": 4, + "ellemouton": 2, + "Roasbeef": 1 + }, + "lib/tx/oor/taptree.go": { + "bhandras": 6, + "Roasbeef": 1 + }, + "lib/tx/psbtutil/psbt_test.go": { + "bhandras": 2, + "ellemouton": 1 + }, + "lib/tx/psbtutil/taproot.go": { + "bhandras": 3, + "Roasbeef": 1, + "ellemouton": 1 + }, + "lib/types/ancestry.go": { + "Roasbeef": 3, + "ellemouton": 2 + }, + "lib/types/boarding.go": { + "Roasbeef": 12, + "ellemouton": 12, + "bhandras": 5, + "sputn1ck": 5 + }, + "lib/types/codec.go": { + "ellemouton": 7, + "Roasbeef": 3, + "bhandras": 3 + }, + "lib/types/codec_test.go": { + "ellemouton": 5, + "bhandras": 3, + "Roasbeef": 1 + }, + "lib/types/oor_persistence.go": { + "bhandras": 3 + }, + "lib/types/policy.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "lib/types/proof_codec.go": { + "Roasbeef": 3, + "bhandras": 1, + "ellemouton": 1 + }, + "lndbackend/boarding_backend.go": { + "Roasbeef": 9, + "bhandras": 3, + "ellemouton": 3 + }, + "lndbackend/client_wallet.go": { + "bhandras": 5, + "Roasbeef": 4, + "ellemouton": 1 + }, + "lwwallet/boarding_backend.go": { + "Roasbeef": 5, + "bhandras": 3, + "ellemouton": 2, + "sputn1ck": 1 + }, + "lwwallet/boarding_backend_test.go": { + "Roasbeef": 2, + "ellemouton": 1, + "sputn1ck": 1 + }, + "lwwallet/chain_backend.go": { + "Roasbeef": 3, + "ellemouton": 3, + "bhandras": 2, + "sputn1ck": 1 + }, + "lwwallet/chain_backend_test.go": { + "Roasbeef": 3, + "ellemouton": 3, + "bhandras": 1, + "sputn1ck": 1 + }, + "lwwallet/config.go": { + "Roasbeef": 4, + "sputn1ck": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "lwwallet/esplora.go": { + "Roasbeef": 4, + "bhandras": 3, + "ellemouton": 3, + "sputn1ck": 1 + }, + "lwwallet/esplora_cache_test.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "lwwallet/esplora_chain.go": { + "bhandras": 3, + "ellemouton": 3, + "Roasbeef": 2, + "sputn1ck": 1 + }, + "lwwallet/esplora_chain_test.go": { + "ellemouton": 4, + "Roasbeef": 1 + }, + "lwwallet/esplora_test.go": { + "bhandras": 2, + "ellemouton": 2, + "Roasbeef": 1, + "sputn1ck": 1 + }, + "lwwallet/tip_poller.go": { + "bhandras": 2, + "ellemouton": 2, + "Roasbeef": 1 + }, + "lwwallet/tip_poller_test.go": { + "ellemouton": 2, + "Roasbeef": 1, + "bhandras": 1 + }, + "lwwallet/wallet.go": { + "Roasbeef": 12, + "bhandras": 3, + "ellemouton": 2, + "sputn1ck": 2 + }, + "lwwallet/wallet_lifecycle_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "lwwallet/walletdb_native.go": { + "Roasbeef": 2, + "sputn1ck": 1 + }, + "lwwallet/walletdb_wasm.go": { + "Roasbeef": 3, + "sputn1ck": 1 + }, + "mailbox/client/client.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "mailbox/client/config.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "mailbox/client/doc.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "mailbox/conn/response_registry.go": { + "Roasbeef": 5, + "bhandras": 1, + "ellemouton": 1 + }, + "mailbox/conn/response_registry_property_test.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "mailbox/conn/response_registry_test.go": { + "Roasbeef": 5, + "bhandras": 1, + "sputn1ck": 1 + }, + "mailbox/rpc/interface.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "mailbox/rpc/mux_test.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "metrics/actor.go": { + "Roasbeef": 4 + }, + "metrics/actor_test.go": { + "Roasbeef": 5 + }, + "metrics/collector.go": { + "Roasbeef": 4 + }, + "metrics/collector_test.go": { + "Roasbeef": 4 + }, + "metrics/messages.go": { + "Roasbeef": 4 + }, + "metrics/metrics.go": { + "Roasbeef": 6 + }, + "oor/actor.go": { + "bhandras": 28, + "Roasbeef": 21, + "ellemouton": 3 + }, + "oor/actor_drive_event_identity_test.go": { + "Roasbeef": 4, + "bhandras": 1, + "ellemouton": 1 + }, + "oor/actor_drive_event_integration_test.go": { + "Roasbeef": 6, + "bhandras": 6, + "ellemouton": 2 + }, + "oor/actor_drive_event_test.go": { + "bhandras": 4, + "Roasbeef": 2 + }, + "oor/actor_durable_message.go": { + "bhandras": 22, + "Roasbeef": 12, + "ellemouton": 1 + }, + "oor/actor_durable_message_test.go": { + "bhandras": 14, + "Roasbeef": 6, + "ellemouton": 1 + }, + "oor/actor_ledger_emit_test.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "oor/actor_messages.go": { + "bhandras": 13, + "Roasbeef": 9, + "ellemouton": 1 + }, + "oor/actor_restore_duplicates_test.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "oor/actor_resume_test.go": { + "bhandras": 10, + "Roasbeef": 2, + "ellemouton": 1 + }, + "oor/actor_test.go": { + "bhandras": 21, + "Roasbeef": 11, + "ellemouton": 1 + }, + "oor/ark_recipients.go": { + "bhandras": 3, + "Roasbeef": 1, + "ellemouton": 1 + }, + "oor/ark_sign.go": { + "Roasbeef": 5, + "bhandras": 3, + "ellemouton": 2 + }, + "oor/checkpoint_owner_leaf_test.go": { + "ellemouton": 2, + "Roasbeef": 1 + }, + "oor/checkpoint_sign.go": { + "bhandras": 6, + "Roasbeef": 3, + "ellemouton": 2 + }, + "oor/checkpoint_sign_test.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "oor/checkpoint_sign_testhelpers_test.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "oor/checkpoint_sign_validation_test.go": { + "bhandras": 3, + "Roasbeef": 1, + "ellemouton": 1 + }, + "oor/coverage_misc_test.go": { + "bhandras": 4 + }, + "oor/doc.go": { + "bhandras": 3 + }, + "oor/errors.go": { + "Roasbeef": 6, + "ellemouton": 2 + }, + "oor/errors_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "oor/events.go": { + "bhandras": 13, + "Roasbeef": 3, + "ellemouton": 2 + }, + "oor/incoming_adapter.go": { + "Roasbeef": 7, + "bhandras": 4, + "ellemouton": 2 + }, + "oor/incoming_metadata_query.go": { + "Roasbeef": 5, + "bhandras": 4, + "ellemouton": 4 + }, + "oor/incoming_metadata_query_test.go": { + "bhandras": 2, + "ellemouton": 2, + "Roasbeef": 1 + }, + "oor/incoming_vtxo.go": { + "Roasbeef": 6, + "bhandras": 5, + "ellemouton": 5 + }, + "oor/incoming_vtxo_test.go": { + "Roasbeef": 5, + "ellemouton": 5, + "bhandras": 3 + }, + "oor/interfaces.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 2 + }, + "oor/local_persistence_handler.go": { + "bhandras": 12, + "Roasbeef": 10, + "ellemouton": 5 + }, + "oor/local_persistence_handler_test.go": { + "bhandras": 8, + "Roasbeef": 7, + "ellemouton": 6 + }, + "oor/log.go": { + "Roasbeef": 2, + "bhandras": 2 + }, + "oor/outbox_error_test.go": { + "bhandras": 6, + "Roasbeef": 4, + "ellemouton": 1 + }, + "oor/outbox_factory.go": { + "Roasbeef": 6, + "bhandras": 2 + }, + "oor/outbox_messages.go": { + "Roasbeef": 13, + "bhandras": 12, + "ellemouton": 3 + }, + "oor/outbox_messages_test.go": { + "bhandras": 4, + "Roasbeef": 3, + "ellemouton": 1 + }, + "oor/outgoing_snapshot.go": { + "bhandras": 11, + "Roasbeef": 2, + "ellemouton": 2 + }, + "oor/outgoing_snapshot_codec.go": { + "bhandras": 8, + "Roasbeef": 3, + "ellemouton": 2 + }, + "oor/outgoing_snapshot_codec_test.go": { + "bhandras": 7, + "ellemouton": 2, + "Roasbeef": 1 + }, + "oor/outgoing_snapshot_test.go": { + "bhandras": 7, + "Roasbeef": 1, + "ellemouton": 1 + }, + "oor/package_artifact_codec.go": { + "Roasbeef": 2, + "bhandras": 2 + }, + "oor/package_persistence.go": { + "Roasbeef": 3, + "bhandras": 1, + "ellemouton": 1 + }, + "oor/package_validation.go": { + "ellemouton": 2, + "Roasbeef": 1 + }, + "oor/receive_limits.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "oor/receive_limits_test.go": { + "ellemouton": 5, + "bhandras": 2, + "Roasbeef": 1 + }, + "oor/receive_session.go": { + "Roasbeef": 5, + "bhandras": 5, + "ellemouton": 2 + }, + "oor/receive_session_test.go": { + "bhandras": 6, + "Roasbeef": 4, + "ellemouton": 2 + }, + "oor/receive_snapshot.go": { + "Roasbeef": 7, + "bhandras": 3, + "ellemouton": 2 + }, + "oor/receive_states.go": { + "Roasbeef": 5, + "bhandras": 4, + "ellemouton": 1 + }, + "oor/receive_transitions.go": { + "bhandras": 10, + "Roasbeef": 8 + }, + "oor/registry.go": { + "Roasbeef": 12, + "bhandras": 2, + "ellemouton": 1 + }, + "oor/registry_test.go": { + "Roasbeef": 10, + "bhandras": 2, + "ellemouton": 2, + "sputn1ck": 1 + }, + "oor/resume.go": { + "bhandras": 7, + "Roasbeef": 6 + }, + "oor/retry_callback.go": { + "Roasbeef": 3, + "bhandras": 2, + "ellemouton": 1 + }, + "oor/session.go": { + "bhandras": 8, + "Roasbeef": 3, + "ellemouton": 2 + }, + "oor/session_actor.go": { + "Roasbeef": 9, + "ellemouton": 2 + }, + "oor/session_actor_flow_test.go": { + "Roasbeef": 8, + "ellemouton": 3 + }, + "oor/session_actor_handlers.go": { + "Roasbeef": 10, + "ellemouton": 2, + "bhandras": 1 + }, + "oor/session_actor_id.go": { + "Roasbeef": 3, + "ellemouton": 1 + }, + "oor/session_actor_id_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "oor/session_actor_test.go": { + "Roasbeef": 9, + "ellemouton": 2 + }, + "oor/session_registry_bridge.go": { + "ellemouton": 3, + "Roasbeef": 2 + }, + "oor/session_test.go": { + "bhandras": 8, + "Roasbeef": 4, + "ellemouton": 1 + }, + "oor/shared.go": { + "Roasbeef": 5, + "bhandras": 1 + }, + "oor/signing_effect_actor.go": { + "Roasbeef": 2, + "bhandras": 2 + }, + "oor/signing_outbox_handler.go": { + "Roasbeef": 6, + "bhandras": 5, + "ellemouton": 1 + }, + "oor/states.go": { + "bhandras": 12, + "ellemouton": 2, + "Roasbeef": 1 + }, + "oor/test_helpers_test.go": { + "Roasbeef": 4, + "bhandras": 4, + "ellemouton": 2 + }, + "oor/transfer_input_snapshot.go": { + "bhandras": 6, + "ellemouton": 2, + "Roasbeef": 1 + }, + "oor/transfer_input_snapshot_test.go": { + "bhandras": 5, + "ellemouton": 2, + "Roasbeef": 1 + }, + "oor/transfer_inputs.go": { + "bhandras": 6, + "ellemouton": 2, + "Roasbeef": 1 + }, + "oor/transitions.go": { + "bhandras": 20, + "Roasbeef": 6, + "ellemouton": 3 + }, + "oor/transitions_test.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "oor/transport_bench_test.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "p-models/durableactor/bridge/mailbox_trace.go": { + "Roasbeef": 4 + }, + "proofkeys/backend.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "round/actor.go": { + "Roasbeef": 47, + "ellemouton": 35, + "bhandras": 9, + "sputn1ck": 8 + }, + "round/actor_harness_test.go": { + "Roasbeef": 16, + "ellemouton": 12, + "bhandras": 7, + "sputn1ck": 3 + }, + "round/actor_messages.go": { + "Roasbeef": 7, + "ellemouton": 4, + "bhandras": 1, + "sputn1ck": 1 + }, + "round/actor_outpoint_match_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "round/actor_test.go": { + "ellemouton": 22, + "Roasbeef": 19, + "bhandras": 6, + "sputn1ck": 6 + }, + "round/change_marker_property_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "round/change_marker_test.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 1, + "sputn1ck": 1 + }, + "round/connector_validation_test.go": { + "ellemouton": 2, + "Roasbeef": 1 + }, + "round/events.go": { + "ellemouton": 20, + "Roasbeef": 18, + "bhandras": 3 + }, + "round/fees_invariants_test.go": { + "Roasbeef": 4, + "bhandras": 1, + "ellemouton": 1 + }, + "round/forfeit_release_on_failure_test.go": { + "Roasbeef": 5, + "ellemouton": 1 + }, + "round/from_proto.go": { + "Roasbeef": 11, + "ellemouton": 9, + "bhandras": 3 + }, + "round/from_proto_security_test.go": { + "Roasbeef": 3, + "bhandras": 1, + "ellemouton": 1 + }, + "round/from_proto_test.go": { + "Roasbeef": 4, + "ellemouton": 4, + "bhandras": 3 + }, + "round/fsm_environment.go": { + "ellemouton": 8, + "Roasbeef": 6, + "sputn1ck": 3 + }, + "round/fsm_timeouts.go": { + "Roasbeef": 2, + "ellemouton": 2, + "sputn1ck": 1 + }, + "round/harness_test.go": { + "ellemouton": 18, + "Roasbeef": 12, + "bhandras": 2, + "sputn1ck": 2 + }, + "round/interfaces.go": { + "ellemouton": 15, + "Roasbeef": 14, + "bhandras": 4, + "sputn1ck": 1 + }, + "round/join_auth.go": { + "ellemouton": 10, + "Roasbeef": 2, + "bhandras": 2 + }, + "round/join_auth_test.go": { + "ellemouton": 7, + "Roasbeef": 2, + "bhandras": 2 + }, + "round/leaf_amount_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "round/ledger_emit_test.go": { + "Roasbeef": 5, + "bhandras": 1, + "ellemouton": 1 + }, + "round/log.go": { + "Roasbeef": 4, + "bhandras": 1 + }, + "round/operator_fee_test.go": { + "Roasbeef": 4, + "bhandras": 1, + "ellemouton": 1 + }, + "round/outbox_messages.go": { + "Roasbeef": 27, + "ellemouton": 10, + "bhandras": 3, + "sputn1ck": 1 + }, + "round/outbox_messages_test.go": { + "Roasbeef": 7, + "bhandras": 3, + "ellemouton": 2 + }, + "round/quote_echo_test.go": { + "bhandras": 3, + "ellemouton": 3, + "Roasbeef": 2 + }, + "round/quote_received_state_test.go": { + "Roasbeef": 2, + "ellemouton": 2 + }, + "round/refresh_psbt_size_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "round/registration_timeout_test.go": { + "ellemouton": 2, + "Roasbeef": 1, + "bhandras": 1 + }, + "round/signing_executor.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "round/signing_executor_test.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "round/states.go": { + "Roasbeef": 14, + "ellemouton": 11, + "bhandras": 2 + }, + "round/transition_table.go": { + "Roasbeef": 6, + "ellemouton": 3 + }, + "round/transitions.go": { + "ellemouton": 39, + "Roasbeef": 34, + "bhandras": 7, + "sputn1ck": 6 + }, + "round/transitions_test.go": { + "Roasbeef": 17, + "ellemouton": 16, + "bhandras": 3, + "sputn1ck": 3 + }, + "round/validation.go": { + "Roasbeef": 2, + "bhandras": 2 + }, + "round/validation_test.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 1 + }, + "round/vtxo_messages.go": { + "ellemouton": 5, + "Roasbeef": 4, + "bhandras": 1, + "sputn1ck": 1 + }, + "round/vtxo_tree_binding_test.go": { + "ellemouton": 3, + "Roasbeef": 1 + }, + "rpc/oorpb/payloads.go": { + "Roasbeef": 6, + "bhandras": 3, + "ellemouton": 3 + }, + "rpc/oorpb/payloads_property_test.go": { + "bhandras": 3, + "Roasbeef": 2, + "ellemouton": 1 + }, + "rpc/oorpb/payloads_test.go": { + "Roasbeef": 3, + "bhandras": 3, + "ellemouton": 1 + }, + "rpc/restclient/client_test.go": { + "Roasbeef": 2, + "sputn1ck": 2, + "bhandras": 1 + }, + "rpc/restclient/clients.go": { + "sputn1ck": 8, + "bhandras": 6, + "Roasbeef": 3, + "ellemouton": 2 + }, + "rpc/roundpb/convert.go": { + "Roasbeef": 8, + "bhandras": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "rpc/roundpb/convert_security_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "rpc/roundpb/convert_test.go": { + "Roasbeef": 4, + "bhandras": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "rpc/roundpb/service.go": { + "Roasbeef": 5, + "bhandras": 1, + "sputn1ck": 1 + }, + "scripts/verify-schema-registry/main.go": { + "Roasbeef": 3, + "bhandras": 2 + }, + "sdk/ark/client.go": { + "bhandras": 16, + "sputn1ck": 6, + "Roasbeef": 5, + "ellemouton": 3 + }, + "sdk/ark/client_test.go": { + "bhandras": 12, + "Roasbeef": 3, + "ellemouton": 3, + "sputn1ck": 3 + }, + "sdk/ark/doc.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "sdk/ark/embedded.go": { + "bhandras": 3, + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/ark/inprocess.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "sdk/ark/remote.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "sdk/swaps/client.go": { + "bhandras": 18, + "sputn1ck": 8, + "Roasbeef": 4, + "ellemouton": 1 + }, + "sdk/swaps/errors.go": { + "bhandras": 5, + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/swaps/forfeit_refresh.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "sdk/swaps/grpc_conn.go": { + "bhandras": 9, + "sputn1ck": 6, + "Roasbeef": 3, + "ellemouton": 1 + }, + "sdk/swaps/grpc_conn_test.go": { + "bhandras": 4, + "Roasbeef": 2 + }, + "sdk/swaps/in_swap.go": { + "bhandras": 13, + "sputn1ck": 3, + "Roasbeef": 2, + "ellemouton": 2 + }, + "sdk/swaps/in_swap_fsm.go": { + "bhandras": 2, + "sputn1ck": 1 + }, + "sdk/swaps/in_swap_quote.go": { + "sputn1ck": 3, + "bhandras": 1, + "ellemouton": 1 + }, + "sdk/swaps/in_swap_test.go": { + "bhandras": 15, + "sputn1ck": 5, + "ellemouton": 3, + "Roasbeef": 2 + }, + "sdk/swaps/invoice.go": { + "bhandras": 5, + "ellemouton": 2, + "Roasbeef": 1, + "sputn1ck": 1 + }, + "sdk/swaps/invoice_test.go": { + "bhandras": 6, + "Roasbeef": 1, + "ellemouton": 1 + }, + "sdk/swaps/out_swap.go": { + "bhandras": 17, + "Roasbeef": 6, + "sputn1ck": 5, + "ellemouton": 1 + }, + "sdk/swaps/out_swap_fsm.go": { + "bhandras": 2, + "sputn1ck": 1 + }, + "sdk/swaps/out_swap_mailbox.go": { + "Roasbeef": 2, + "bhandras": 2, + "sputn1ck": 2 + }, + "sdk/swaps/out_swap_mailbox_test.go": { + "Roasbeef": 2, + "bhandras": 2, + "sputn1ck": 2 + }, + "sdk/swaps/out_swap_test.go": { + "bhandras": 18, + "sputn1ck": 7, + "Roasbeef": 6, + "ellemouton": 2 + }, + "sdk/swaps/preimage.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "sdk/swaps/recovery.go": { + "bhandras": 3, + "ellemouton": 2, + "Roasbeef": 1, + "sputn1ck": 1 + }, + "sdk/swaps/rest_conn_test.go": { + "Roasbeef": 3, + "bhandras": 2, + "ellemouton": 1, + "sputn1ck": 1 + }, + "sdk/swaps/sqlc/models.go": { + "bhandras": 4, + "sputn1ck": 2 + }, + "sdk/swaps/store.go": { + "bhandras": 3, + "Roasbeef": 2, + "sputn1ck": 2 + }, + "sdk/swaps/store_sessions.go": { + "bhandras": 11, + "Roasbeef": 2, + "sputn1ck": 2, + "ellemouton": 1 + }, + "sdk/swaps/store_test.go": { + "bhandras": 7, + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/walletdk/client.go": { + "sputn1ck": 11, + "Roasbeef": 6 + }, + "sdk/walletdk/client_exit_test.go": { + "sputn1ck": 3, + "Roasbeef": 2 + }, + "sdk/walletdk/client_test.go": { + "sputn1ck": 3, + "Roasbeef": 1 + }, + "sdk/walletdk/connect_grpc.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/walletdk/convert.go": { + "sputn1ck": 7, + "Roasbeef": 5, + "ellemouton": 1 + }, + "sdk/walletdk/convert_test.go": { + "Roasbeef": 4, + "sputn1ck": 4 + }, + "sdk/walletdk/doc.go": { + "sputn1ck": 4, + "Roasbeef": 1 + }, + "sdk/walletdk/embedded.go": { + "sputn1ck": 10, + "Roasbeef": 5 + }, + "sdk/walletdk/embedded_config.go": { + "sputn1ck": 5, + "Roasbeef": 4 + }, + "sdk/walletdk/embedded_test.go": { + "sputn1ck": 5, + "Roasbeef": 2 + }, + "sdk/walletdk/errors.go": { + "sputn1ck": 3 + }, + "sdk/walletdk/mobile/config.go": { + "Roasbeef": 2, + "sputn1ck": 1 + }, + "sdk/walletdk/mobile/mobile_test.go": { + "Roasbeef": 2, + "sputn1ck": 1 + }, + "sdk/walletdk/mobile/wallet.go": { + "Roasbeef": 3 + }, + "sdk/walletdk/options_test.go": { + "Roasbeef": 2, + "sputn1ck": 1 + }, + "sdk/walletdk/swapruntime.go": { + "sputn1ck": 3, + "Roasbeef": 1 + }, + "sdk/walletdk/swapruntime_stub.go": { + "sputn1ck": 4, + "Roasbeef": 1 + }, + "sdk/walletdk/types.go": { + "sputn1ck": 12, + "Roasbeef": 7, + "ellemouton": 1 + }, + "sdk/walletdk/walletdkrpc.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/walletdk/walletdkrpc_stub.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/wavewalletdk/embedded.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/wavewalletdk/embedded_config.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/wavewalletdk/embedded_test.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/wavewalletdk/mobile/config.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/wavewalletdk/mobile/mobile_test.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "sdk/wavewalletdk/passkey_test.go": { + "Roasbeef": 2, + "sputn1ck": 1 + }, + "serverconn/actor.go": { + "Roasbeef": 19, + "bhandras": 3, + "sputn1ck": 3, + "ellemouton": 2 + }, + "serverconn/actor_correlation_key_test.go": { + "Roasbeef": 3 + }, + "serverconn/actor_tlv_test.go": { + "Roasbeef": 10, + "bhandras": 3 + }, + "serverconn/connector_test.go": { + "Roasbeef": 14, + "bhandras": 5, + "ellemouton": 1 + }, + "serverconn/doc.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "serverconn/durable_unary_queries.go": { + "Roasbeef": 3, + "bhandras": 3 + }, + "serverconn/e2e_test.go": { + "Roasbeef": 5, + "bhandras": 1, + "ellemouton": 1 + }, + "serverconn/event_router.go": { + "Roasbeef": 5, + "bhandras": 4 + }, + "serverconn/event_router_test.go": { + "Roasbeef": 4, + "bhandras": 3 + }, + "serverconn/heartbeat.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 2 + }, + "serverconn/ingress.go": { + "Roasbeef": 12, + "bhandras": 3, + "ellemouton": 1 + }, + "serverconn/ingress_error_test.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 1 + }, + "serverconn/ingress_nontx_test.go": { + "Roasbeef": 4 + }, + "serverconn/ingress_split_test.go": { + "Roasbeef": 3 + }, + "serverconn/mailbox_auth.go": { + "Roasbeef": 2, + "ellemouton": 2, + "bhandras": 1 + }, + "serverconn/restart_replay_test.go": { + "Roasbeef": 5, + "bhandras": 3 + }, + "serverconn/runtime.go": { + "Roasbeef": 5, + "bhandras": 4, + "ellemouton": 2 + }, + "serverconn/runtime_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "serverconn/testutil_test.go": { + "Roasbeef": 6, + "bhandras": 1, + "ellemouton": 1 + }, + "serverconn/types.go": { + "Roasbeef": 16, + "bhandras": 3, + "ellemouton": 3 + }, + "serverconn/types_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "serverconn/unary_facade.go": { + "Roasbeef": 7, + "bhandras": 2, + "ellemouton": 1 + }, + "serverconn/unary_facade_test.go": { + "Roasbeef": 4, + "bhandras": 1 + }, + "serverconn/version_stamp_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "swapclientserver/invoice_generator_test.go": { + "Roasbeef": 2, + "sputn1ck": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "swapclientserver/resume_backend_test.go": { + "Roasbeef": 3, + "sputn1ck": 2 + }, + "swapclientserver/service.go": { + "sputn1ck": 17, + "bhandras": 14, + "Roasbeef": 9, + "ellemouton": 1 + }, + "swapclientserver/service_test.go": { + "bhandras": 13, + "sputn1ck": 11, + "Roasbeef": 3, + "ellemouton": 1 + }, + "swapclientserver/swap_fee_defaults_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "swapwallet/admin.go": { + "sputn1ck": 8, + "Roasbeef": 5, + "ellemouton": 2, + "bhandras": 1 + }, + "swapwallet/admin_test.go": { + "sputn1ck": 5, + "Roasbeef": 4, + "bhandras": 1, + "ellemouton": 1 + }, + "swapwallet/credit_fake_test.go": { + "Roasbeef": 4 + }, + "swapwallet/credit_projector.go": { + "Roasbeef": 4, + "bhandras": 2, + "ellemouton": 1 + }, + "swapwallet/credit_projector_test.go": { + "Roasbeef": 3, + "bhandras": 1, + "ellemouton": 1 + }, + "swapwallet/deps.go": { + "sputn1ck": 8, + "Roasbeef": 7, + "ellemouton": 3, + "bhandras": 1 + }, + "swapwallet/doc.go": { + "Roasbeef": 5, + "sputn1ck": 3, + "bhandras": 2 + }, + "swapwallet/errors.go": { + "Roasbeef": 3, + "sputn1ck": 3, + "ellemouton": 1 + }, + "swapwallet/errors_grpc.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "swapwallet/errors_grpc_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "swapwallet/history.go": { + "bhandras": 13, + "Roasbeef": 12, + "sputn1ck": 7, + "ellemouton": 3 + }, + "swapwallet/history_test.go": { + "Roasbeef": 12, + "bhandras": 11, + "sputn1ck": 7, + "ellemouton": 3 + }, + "swapwallet/inspection.go": { + "bhandras": 5, + "Roasbeef": 3, + "sputn1ck": 1 + }, + "swapwallet/inspection_test.go": { + "bhandras": 5, + "Roasbeef": 3, + "sputn1ck": 1 + }, + "swapwallet/limits.go": { + "Roasbeef": 4, + "ellemouton": 1 + }, + "swapwallet/limits_test.go": { + "Roasbeef": 4, + "ellemouton": 1 + }, + "swapwallet/list_store_test.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "swapwallet/list_view_test.go": { + "Roasbeef": 3, + "sputn1ck": 1 + }, + "swapwallet/mocks_test.go": { + "Roasbeef": 7, + "sputn1ck": 6, + "bhandras": 5, + "ellemouton": 3 + }, + "swapwallet/monitor.go": { + "Roasbeef": 8, + "sputn1ck": 4, + "bhandras": 3 + }, + "swapwallet/monitor_test.go": { + "Roasbeef": 8, + "sputn1ck": 5, + "bhandras": 2 + }, + "swapwallet/normalize.go": { + "Roasbeef": 8, + "bhandras": 3, + "sputn1ck": 3, + "ellemouton": 1 + }, + "swapwallet/normalize_test.go": { + "Roasbeef": 5, + "sputn1ck": 4, + "bhandras": 2, + "ellemouton": 1 + }, + "swapwallet/onchain_fee.go": { + "Roasbeef": 3, + "ellemouton": 1 + }, + "swapwallet/projector.go": { + "Roasbeef": 3, + "bhandras": 2, + "ellemouton": 1 + }, + "swapwallet/projector_test.go": { + "Roasbeef": 4, + "bhandras": 2 + }, + "swapwallet/reconciler.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "swapwallet/reconciler_test.go": { + "Roasbeef": 3, + "bhandras": 2, + "ellemouton": 1 + }, + "swapwallet/recv.go": { + "Roasbeef": 9, + "sputn1ck": 5, + "bhandras": 2, + "ellemouton": 2 + }, + "swapwallet/recv_test.go": { + "Roasbeef": 5, + "sputn1ck": 4, + "bhandras": 2, + "ellemouton": 1 + }, + "swapwallet/register.go": { + "sputn1ck": 6, + "Roasbeef": 5, + "bhandras": 1 + }, + "swapwallet/register_test.go": { + "sputn1ck": 4, + "Roasbeef": 3, + "ellemouton": 1 + }, + "swapwallet/router.go": { + "Roasbeef": 12, + "sputn1ck": 7, + "ellemouton": 5, + "bhandras": 2 + }, + "swapwallet/router_test.go": { + "Roasbeef": 8, + "ellemouton": 6, + "sputn1ck": 6, + "bhandras": 3 + }, + "swapwallet/runtime.go": { + "Roasbeef": 9, + "sputn1ck": 5, + "bhandras": 2 + }, + "swapwallet/runtime_test.go": { + "Roasbeef": 7, + "sputn1ck": 4, + "bhandras": 1 + }, + "swapwallet/send_intents.go": { + "Roasbeef": 2, + "sputn1ck": 2 + }, + "swapwallet/service.go": { + "sputn1ck": 9, + "Roasbeef": 7, + "bhandras": 4, + "ellemouton": 1 + }, + "swapwallet/service_test.go": { + "Roasbeef": 5, + "sputn1ck": 4, + "bhandras": 3, + "ellemouton": 2 + }, + "systest/boarding_wallet_test.go": { + "Roasbeef": 4, + "bhandras": 1, + "ellemouton": 1 + }, + "systest/helpers.go": { + "Roasbeef": 6, + "ellemouton": 2, + "bhandras": 1 + }, + "systest/leave_strand_test.go": { + "ellemouton": 2, + "Roasbeef": 1 + }, + "systest/oor_vtxo_manager_test.go": { + "Roasbeef": 6, + "ellemouton": 5, + "bhandras": 3 + }, + "systest/send_vtxo_test.go": { + "Roasbeef": 9, + "ellemouton": 7, + "bhandras": 5, + "sputn1ck": 2 + }, + "systest/systest.go": { + "Roasbeef": 6, + "ellemouton": 2, + "bhandras": 1 + }, + "systest/vhtlc_recovery_test.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "timeout/actor.go": { + "Roasbeef": 7, + "bhandras": 3 + }, + "timeout/actor_backpressure_test.go": { + "Roasbeef": 4 + }, + "timeout/actor_recurring_test.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "timeout/actor_test.go": { + "Roasbeef": 4, + "bhandras": 2 + }, + "timeout/clock_test.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "timeout/messages.go": { + "Roasbeef": 4, + "bhandras": 1 + }, + "timeout/transform.go": { + "Roasbeef": 3 + }, + "tools/linters/ll.go": { + "bhandras": 2, + "Roasbeef": 1 + }, + "tools/tools.go": { + "Roasbeef": 2, + "bhandras": 2 + }, + "txconfirm/actor.go": { + "Roasbeef": 17, + "ellemouton": 5, + "bhandras": 2, + "sputn1ck": 1 + }, + "txconfirm/actor_test.go": { + "Roasbeef": 18, + "ellemouton": 4, + "bhandras": 2, + "sputn1ck": 1 + }, + "txconfirm/broadcaster.go": { + "Roasbeef": 21, + "ellemouton": 6, + "bhandras": 2, + "sputn1ck": 2 + }, + "txconfirm/broadcaster_test.go": { + "Roasbeef": 21, + "ellemouton": 7, + "sputn1ck": 2, + "bhandras": 1 + }, + "txconfirm/doc.go": { + "Roasbeef": 3, + "ellemouton": 1 + }, + "txconfirm/fee_bump_controller.go": { + "Roasbeef": 3 + }, + "txconfirm/fee_bump_fsm_logic.go": { + "Roasbeef": 3, + "ellemouton": 1 + }, + "txconfirm/fee_bump_fsm_types.go": { + "Roasbeef": 3, + "ellemouton": 1 + }, + "txconfirm/fee_input_actor.go": { + "Roasbeef": 4, + "sputn1ck": 2, + "ellemouton": 1 + }, + "txconfirm/fee_input_fanout.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "txconfirm/fsm_test.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "txconfirm/fsm_types.go": { + "Roasbeef": 4, + "ellemouton": 3, + "bhandras": 1 + }, + "txconfirm/funded_anchor_test.go": { + "Roasbeef": 4, + "ellemouton": 2 + }, + "txconfirm/messages.go": { + "Roasbeef": 6, + "ellemouton": 3, + "bhandras": 1 + }, + "txconfirm/states.go": { + "Roasbeef": 2, + "ellemouton": 2, + "bhandras": 1 + }, + "unroll/actor.go": { + "Roasbeef": 12, + "ellemouton": 8, + "bhandras": 6, + "sputn1ck": 2 + }, + "unroll/actor_test.go": { + "Roasbeef": 11, + "ellemouton": 8, + "bhandras": 5 + }, + "unroll/db_store.go": { + "ellemouton": 3, + "Roasbeef": 2, + "bhandras": 2 + }, + "unroll/db_store_test.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 2 + }, + "unroll/descriptor_resolver.go": { + "ellemouton": 4, + "Roasbeef": 2, + "bhandras": 1 + }, + "unroll/descriptor_resolver_test.go": { + "Roasbeef": 2, + "ellemouton": 2, + "bhandras": 1 + }, + "unroll/exit_plan.go": { + "Roasbeef": 2, + "ellemouton": 2, + "sputn1ck": 1 + }, + "unroll/exit_plan_test.go": { + "Roasbeef": 2, + "ellemouton": 2, + "sputn1ck": 1 + }, + "unroll/exit_progress_test.go": { + "Roasbeef": 3 + }, + "unroll/feasibility.go": { + "Roasbeef": 3, + "ellemouton": 2 + }, + "unroll/feasibility_test.go": { + "Roasbeef": 3, + "ellemouton": 2 + }, + "unroll/fsm_logic.go": { + "ellemouton": 4, + "Roasbeef": 2, + "bhandras": 2, + "sputn1ck": 2 + }, + "unroll/fsm_types.go": { + "ellemouton": 4, + "Roasbeef": 2, + "bhandras": 2, + "sputn1ck": 2 + }, + "unroll/interfaces.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 2 + }, + "unroll/lineage_material.go": { + "ellemouton": 2, + "Roasbeef": 1, + "bhandras": 1 + }, + "unroll/messages.go": { + "Roasbeef": 4, + "bhandras": 3, + "ellemouton": 2, + "sputn1ck": 2 + }, + "unroll/messages_test.go": { + "bhandras": 2, + "ellemouton": 2, + "sputn1ck": 2, + "Roasbeef": 1 + }, + "unroll/proof_assembler.go": { + "ellemouton": 4, + "Roasbeef": 3, + "bhandras": 2 + }, + "unroll/proof_assembler_test.go": { + "Roasbeef": 3, + "bhandras": 2, + "ellemouton": 2 + }, + "unroll/registry.go": { + "Roasbeef": 10, + "ellemouton": 8, + "bhandras": 3, + "sputn1ck": 2 + }, + "unroll/registry_exit_test.go": { + "Roasbeef": 4, + "ellemouton": 4 + }, + "unroll/registry_messages.go": { + "Roasbeef": 4, + "ellemouton": 3, + "bhandras": 2 + }, + "unroll/registry_test.go": { + "Roasbeef": 7, + "ellemouton": 6, + "bhandras": 3 + }, + "unroll/session.go": { + "ellemouton": 2, + "sputn1ck": 2, + "Roasbeef": 1 + }, + "unroll/snapshot.go": { + "ellemouton": 3, + "Roasbeef": 2, + "bhandras": 2 + }, + "unroll/snapshot_test.go": { + "ellemouton": 3, + "Roasbeef": 1, + "bhandras": 1 + }, + "unroll/state_snapshot.go": { + "ellemouton": 4, + "bhandras": 3, + "sputn1ck": 2, + "Roasbeef": 1 + }, + "unroll/state_snapshot_test.go": { + "ellemouton": 3, + "bhandras": 2, + "Roasbeef": 1 + }, + "unroll/sweep.go": { + "Roasbeef": 3, + "bhandras": 2, + "ellemouton": 2 + }, + "unrollplan/doc.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "unrollplan/planner.go": { + "Roasbeef": 4, + "ellemouton": 2, + "bhandras": 1 + }, + "unrollplan/planner_guards_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "unrollplan/planner_oor_test.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "unrollplan/planner_test.go": { + "Roasbeef": 3, + "ellemouton": 2, + "bhandras": 1 + }, + "unrollplan/state_codec.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "unrollplan/state_codec_test.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "vhtlcrecovery/coordinator/service.go": { + "Roasbeef": 3, + "bhandras": 2, + "ellemouton": 1 + }, + "vhtlcrecovery/coordinator/service_test.go": { + "Roasbeef": 4, + "bhandras": 2, + "ellemouton": 1 + }, + "vhtlcrecovery/types.go": { + "bhandras": 2, + "ellemouton": 1 + }, + "vhtlcrecovery/unrollpolicy/policy.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 1 + }, + "vhtlcrecovery/unrollpolicy/policy_test.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 1 + }, + "vtxo/actor.go": { + "Roasbeef": 20, + "ellemouton": 13, + "sputn1ck": 6, + "bhandras": 5 + }, + "vtxo/actor_test.go": { + "Roasbeef": 13, + "ellemouton": 11, + "sputn1ck": 5, + "bhandras": 3 + }, + "vtxo/chain_resolver.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "vtxo/events.go": { + "Roasbeef": 6, + "ellemouton": 6, + "sputn1ck": 2 + }, + "vtxo/expiry.go": { + "Roasbeef": 2, + "ellemouton": 2, + "sputn1ck": 2, + "bhandras": 1 + }, + "vtxo/expiry_validation_test.go": { + "ellemouton": 3, + "sputn1ck": 1 + }, + "vtxo/filter.go": { + "Roasbeef": 2, + "ellemouton": 2, + "bhandras": 1 + }, + "vtxo/filter_test.go": { + "Roasbeef": 2, + "ellemouton": 2 + }, + "vtxo/fsm_environment.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "vtxo/harness_test.go": { + "Roasbeef": 10, + "ellemouton": 6, + "bhandras": 4, + "sputn1ck": 2 + }, + "vtxo/incoming_ancestry.go": { + "ellemouton": 2, + "Roasbeef": 1 + }, + "vtxo/incoming_ancestry_resolver.go": { + "ellemouton": 3, + "Roasbeef": 1 + }, + "vtxo/incoming_ancestry_resolver_test.go": { + "ellemouton": 3, + "Roasbeef": 1 + }, + "vtxo/incoming_handler.go": { + "ellemouton": 4, + "Roasbeef": 2, + "bhandras": 2 + }, + "vtxo/incoming_handler_test.go": { + "ellemouton": 3, + "Roasbeef": 1, + "bhandras": 1 + }, + "vtxo/indexer_response.go": { + "ellemouton": 2, + "Roasbeef": 1 + }, + "vtxo/interfaces.go": { + "ellemouton": 12, + "Roasbeef": 11, + "bhandras": 2, + "sputn1ck": 1 + }, + "vtxo/log.go": { + "Roasbeef": 4, + "bhandras": 1 + }, + "vtxo/manager.go": { + "Roasbeef": 22, + "ellemouton": 18, + "bhandras": 7, + "sputn1ck": 4 + }, + "vtxo/manager_admission_test.go": { + "Roasbeef": 6, + "bhandras": 6, + "ellemouton": 4, + "sputn1ck": 2 + }, + "vtxo/manager_exit_test.go": { + "ellemouton": 4, + "Roasbeef": 3 + }, + "vtxo/manager_expiry_reconcile_test.go": { + "Roasbeef": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "vtxo/manager_force_unroll_test.go": { + "Roasbeef": 3 + }, + "vtxo/manager_forfeit_release_test.go": { + "Roasbeef": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "vtxo/manager_observer_test.go": { + "ellemouton": 2, + "Roasbeef": 1 + }, + "vtxo/manager_reservation_test.go": { + "Roasbeef": 3, + "ellemouton": 1 + }, + "vtxo/manager_test.go": { + "ellemouton": 3, + "Roasbeef": 2, + "bhandras": 2 + }, + "vtxo/messages.go": { + "ellemouton": 13, + "Roasbeef": 6, + "bhandras": 2 + }, + "vtxo/outbox_messages.go": { + "Roasbeef": 8, + "ellemouton": 6, + "bhandras": 3, + "sputn1ck": 2 + }, + "vtxo/policy.go": { + "Roasbeef": 1, + "bhandras": 1, + "ellemouton": 1 + }, + "vtxo/refresh_operator_rotation_test.go": { + "ellemouton": 2, + "Roasbeef": 1, + "sputn1ck": 1 + }, + "vtxo/states.go": { + "ellemouton": 8, + "Roasbeef": 3 + }, + "vtxo/transitions.go": { + "ellemouton": 17, + "Roasbeef": 11, + "bhandras": 3, + "sputn1ck": 1 + }, + "vtxo/transitions_test.go": { + "ellemouton": 10, + "Roasbeef": 8, + "bhandras": 3, + "sputn1ck": 2 + }, + "wallet/board_idempotency_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "wallet/board_limits.go": { + "Roasbeef": 3, + "ellemouton": 2 + }, + "wallet/board_limits_test.go": { + "Roasbeef": 2, + "ellemouton": 2 + }, + "wallet/board_replay_test.go": { + "Roasbeef": 3, + "ellemouton": 1 + }, + "wallet/boarding_sweep.go": { + "Roasbeef": 4, + "ellemouton": 1 + }, + "wallet/boarding_sweep_actor.go": { + "Roasbeef": 13, + "ellemouton": 2 + }, + "wallet/boarding_sweep_actor_test.go": { + "Roasbeef": 7, + "ellemouton": 2 + }, + "wallet/boarding_sweep_store.go": { + "Roasbeef": 2, + "ellemouton": 2 + }, + "wallet/boarding_sweep_test.go": { + "Roasbeef": 4, + "ellemouton": 1 + }, + "wallet/eager_round_join_test.go": { + "Roasbeef": 3, + "ellemouton": 2 + }, + "wallet/interfaces.go": { + "Roasbeef": 12, + "bhandras": 6, + "ellemouton": 3 + }, + "wallet/ledger_emit_test.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "wallet/log.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "wallet/messages.go": { + "Roasbeef": 14, + "bhandras": 9, + "ellemouton": 5, + "sputn1ck": 2 + }, + "wallet/policy.go": { + "bhandras": 2, + "Roasbeef": 1, + "ellemouton": 1 + }, + "wallet/send_onchain_intent_replayer.go": { + "Roasbeef": 3, + "ellemouton": 1 + }, + "wallet/send_onchain_replay_test.go": { + "Roasbeef": 3, + "ellemouton": 1, + "sputn1ck": 1 + }, + "wallet/wallet.go": { + "Roasbeef": 44, + "ellemouton": 19, + "bhandras": 13, + "sputn1ck": 3 + }, + "wallet/wallet_admission_test.go": { + "Roasbeef": 12, + "ellemouton": 10, + "bhandras": 5, + "sputn1ck": 4 + }, + "wallet/wallet_sweep_actor.go": { + "Roasbeef": 5, + "ellemouton": 1 + }, + "wallet/wallet_sweep_actor_test.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "wallet/wallet_test.go": { + "Roasbeef": 14, + "bhandras": 8, + "ellemouton": 4 + }, + "walletcore/boarding_backend.go": { + "Roasbeef": 3, + "bhandras": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "walletcore/config.go": { + "Roasbeef": 2, + "bhandras": 1, + "ellemouton": 1, + "sputn1ck": 1 + }, + "walletcore/output_leaser.go": { + "Roasbeef": 2, + "ellemouton": 1 + }, + "walletcore/wallet.go": { + "Roasbeef": 2, + "bhandras": 2, + "ellemouton": 1 + }, + "waved/config.go": { + "Roasbeef": 10, + "sputn1ck": 2, + "bhandras": 1, + "ellemouton": 1 + }, + "waved/config_max_operator_fee_test.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "waved/config_network_test.go": { + "Roasbeef": 3 + }, + "waved/credit_registry.go": { + "Roasbeef": 3 + }, + "waved/incoming_metadata_test.go": { + "Roasbeef": 3 + }, + "waved/logging.go": { + "Roasbeef": 3 + }, + "waved/operator_negotiation_test.go": { + "Roasbeef": 1, + "bhandras": 1, + "sputn1ck": 1 + }, + "waved/rpc_auth.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "waved/rpc_auth_test.go": { + "Roasbeef": 2, + "bhandras": 1 + }, + "waved/rpc_oor_idempotency_test.go": { + "Roasbeef": 2, + "bhandras": 2, + "sputn1ck": 2 + }, + "waved/rpc_server.go": { + "Roasbeef": 5, + "sputn1ck": 4, + "bhandras": 2, + "ellemouton": 1 + }, + "waved/rpc_vtxo_expiry.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "waved/rpc_vtxo_expiry_test.go": { + "sputn1ck": 2, + "Roasbeef": 1 + }, + "waved/rpc_wallet.go": { + "Roasbeef": 3, + "bhandras": 1 + }, + "waved/server.go": { + "Roasbeef": 9, + "ellemouton": 7, + "sputn1ck": 3, + "bhandras": 1 + }, + "waved/wallet_recovery.go": { + "Roasbeef": 3 + } + } + } + } +} diff --git a/.github/workflows/code-owners-nightly.yml b/.github/workflows/code-owners-nightly.yml new file mode 100644 index 000000000..d04ed18c1 --- /dev/null +++ b/.github/workflows/code-owners-nightly.yml @@ -0,0 +1,153 @@ +name: Code Owners Nightly + +# Refreshes .github/code-owners.json, the ownership map the issue-assign +# workflow reads to route incoming issues. +# +# It measures THIS repository only, and publishes the result. A repo is +# the only place that can authoritatively answer who works on its code, +# and having a sibling compute the answer would need a cross-repo token to +# do something this repo can do for itself. +# +# lumos runs the same script and merges this file in, because issues are +# filed there that track work here -- it fetches the published map rather +# than cloning and recomputing. +# +# The map is also an artifact in its own right: its diff shows ownership +# moving between people over time, and a wrong answer can be argued with +# in a PR rather than rediscovered inside a prompt. +# +# Opens a PR rather than pushing to master. Ownership drifts slowly, so +# most nights produce no diff and no PR. + +on: + schedule: + # 03:42 UTC, deliberately off the hour (GitHub flags the top of the + # hour as a high-load window where scheduled runs get delayed or + # dropped) and an hour AHEAD of lumos's 04:42 run, which fetches the + # map this job publishes. Running after it would hand lumos a map a + # day old every night. + - cron: '42 3 * * *' + workflow_dispatch: + +concurrency: + group: code-owners-nightly + cancel-in-progress: false + +permissions: + contents: read + pull-requests: read + +env: + MAP_PATH: .github/code-owners.json + # The branch this job pushes to. It must never be a protected branch: + # this workflow proposes a change and a human merges it, always. + # + # The push below refuses to run if this names one, so relaxing the rule + # takes more than editing this line. That guard is not defending against + # malice -- it is defending against someone reasonably thinking "the map + # is generated, just commit it" and removing a round trip that exists so + # ownership changes get seen by a person. + BRANCH: automated/code-owners-refresh + PROTECTED_BRANCHES: 'master main' + +jobs: + refresh: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + # Bot token so the push and PR authenticate as the bot, matching + # how doc-gardening-nightly does it. + token: ${{ secrets.BOT_GITHUB_TOKEN }} + # Full history: the whole point is measuring a year of commits. + # A shallow clone yields an almost-empty map and no error. + fetch-depth: 0 + + - name: Regenerate the map + run: python3 scripts/code_owners.py --write --out "${MAP_PATH}" + + - name: Open a PR if it changed + env: + GH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} + run: | + set -euo pipefail + + if git diff --quiet -- "${MAP_PATH}"; then + echo "Ownership unchanged; nothing to do." + exit 0 + fi + + # Summarise the change for the PR body. A 126 KiB JSON diff is + # unreadable line by line, so state which packages changed hands + # -- that is the part a human can actually review. + python3 - "${MAP_PATH}" > /tmp/summary.md <<'PY' + import json, subprocess, sys + path = sys.argv[1] + old = json.loads(subprocess.run( + ["git", "show", f"HEAD:{path}"], + capture_output=True, text=True).stdout or "{}") + new = json.loads(open(path).read()) + + def top(d): + return next(iter(d), None) if d else None + + moved = [] + for repo, cur in new.get("repos", {}).items(): + prev = old.get("repos", {}).get(repo, {}) + for pkg, counts in cur.get("packages", {}).items(): + was = top(prev.get("packages", {}).get(pkg, {})) + now = top(counts) + if was and now and was != now: + moved.append(f"- `{repo}/{pkg}`: {was} -> {now}") + + print("Nightly refresh of the issue-triage ownership map.\n") + if moved: + print("Packages whose top author changed:\n") + print("\n".join(sorted(moved))) + else: + print("No package changed its top author; only counts moved.") + print("\nGenerated by `scripts/code_owners.py`. Do not hand-edit " + "the map -- correct the script or the author table.") + PY + + for protected in ${PROTECTED_BRANCHES}; do + if [ "${BRANCH}" = "${protected}" ]; then + echo "::error::Refusing to push to ${protected}. This job" \ + "opens a PR; it never writes to a protected branch." + exit 1 + fi + done + + git config user.name "darepo-doc-bot" + git config user.email "bot@lightning.engineering" + git checkout -B "${BRANCH}" + git add "${MAP_PATH}" + git commit -m "ci: Refresh the code-ownership map" + + # --force-with-lease, and only ever onto this job's own branch: + # each night rewrites the same proposal rather than stacking a + # new branch per run. The lease still refuses if someone else + # has pushed to it since, so a human's edits on top are safe. + git push --force-with-lease origin "${BRANCH}" + + # Reuse the open PR if there is one, so a week of quiet nights + # does not leave a week of stale PRs behind. + if [ -z "$(gh pr list --head "${BRANCH}" --state open \ + --json number --jq '.[].number')" ]; then + gh pr create --base main --head "${BRANCH}" \ + --title "ci: Refresh the code-ownership map" \ + --body-file /tmp/summary.md + else + gh pr edit --head "${BRANCH}" --body-file /tmp/summary.md + fi + + - name: Notify on failure + if: failure() + env: + GH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} + run: | + echo "::warning::Code-owners refresh failed. The issue-assign " \ + "workflow keeps using the last committed map, which ages " \ + "quietly rather than breaking." diff --git a/scripts/code_owners.py b/scripts/code_owners.py new file mode 100755 index 000000000..ef4226a6d --- /dev/null +++ b/scripts/code_owners.py @@ -0,0 +1,247 @@ +#!/usr/bin/env python3 +"""Generate the code-ownership map used to auto-assign incoming issues. + +Ownership here means "who has been working on this lately", measured as +commits per author over a window. It is an input to triage, not a policy +file: nothing enforces it, and it does not gate review. + +Each repository generates its OWN map, nightly, from its own history -- +this same script lives in lumos, wavelength and swapdk-server. A repo is +the only place that can authoritatively answer who works on its code, and +having one repo compute the answer for another needed a cross-repo token +to do something that repo could do for itself. + +Issues filed in lumos nevertheless track work in all three, so lumos's +nightly also folds in its siblings' published maps with --merge. That is +a fetch of one small file each, not a clone. + +Both levels are emitted, per repository, and both are needed. Measured on +lumos over a twelve-month window, 174 of 617 tracked files -- 28% -- have +a different top author than the package containing them, so a +package-only map would misroute better than a quarter of the issues that +name a specific file. Package counts alone also flatten the margin: the +`indexer` package is 15-13 between two people, while `indexer/service.go` +inside it is 7-4, which is the difference between a coin-flip and a clear +answer. + +Usage: + python3 scripts/code_owners.py --check --repo wavelength=PATH \ + --repo swapdk-server=PATH + python3 scripts/code_owners.py --write --repo wavelength=PATH \ + --repo swapdk-server=PATH +""" + +import argparse +import collections +import json +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +DEFAULT_OUT = ROOT / ".github" / "code-owners.json" + +# The ref each repository is measured on, by name. Named explicitly and +# never defaulting to HEAD: a checkout that gets reused sits on whatever +# branch ran last, and one wavelength clone seen in practice carried an +# `origin/master` holding lumos history -- so a bare `git log` there would +# silently have measured the wrong project. +REFS = { + "lumos": "origin/master", + "wavelength": "origin/main", + "swapdk-server": "origin/master", +} + +# git address -> GitHub handle. Keyed on address because names do not +# identify these people: the largest contributor's display name resembles +# their handle not at all, and two others each commit under more than one +# name. Keep in step with the same table in the issue-assign workflow. +AUTHOR_MAP = { + "laolu32@gmail.com": "Roasbeef", + "bhandras@gmail.com": "bhandras", + "elle.mouton@gmail.com": "ellemouton", + "kon@kon.ninja": "sputn1ck", +} + +# How far back to look. Long enough to capture who built a subsystem, +# short enough that someone who moved off an area a year ago stops being +# its owner. +WINDOW = "12 months ago" + +# Paths that tell you nothing about who should take an issue. Generated +# code and vendored trees have authors, but those authors are whoever ran +# the generator. +SKIP_PREFIXES = ("client/", "vendor/", "docs/") +SKIP_SUFFIXES = (".pb.go", ".pb.gw.go", "_generated.go", ".sql.go") + +# Files below this many commits in the window are noise: a single drive-by +# edit would otherwise make someone the outright "owner" of a file. They +# still count toward their package, which is where thin evidence belongs. +MIN_FILE_COMMITS = 3 + + +def origin_repo_name(): + """origin_repo_name derives the repo name from its origin remote. + + So the same script is byte-identical in all three repositories and + needs no per-repo edit to say which one it is running in. + """ + url = sh(["git", "remote", "get-url", "origin"], cwd=ROOT).strip() + return url.rstrip("/").removesuffix(".git").split("/")[-1] + + +def sh(args, cwd): + r = subprocess.run(args, cwd=cwd, capture_output=True, text=True) + if r.returncode != 0: + raise SystemExit(f"{' '.join(args[:6])}: {r.stderr.strip()[:200]}") + return r.stdout + + +def tracked(path): + """tracked reports whether a path should count toward ownership.""" + if not path.endswith(".go") or "/" not in path: + return False + if path.startswith(SKIP_PREFIXES) or path.endswith(SKIP_SUFFIXES): + return False + return True + + +def measure(repo_path, ref): + """measure returns per-file and per-package author counts. + + One `git log` walk rather than one per path. The per-path form is + O(paths) subprocesses and takes minutes on these repositories; this + reads the same information in a single pass. + + --no-merges matters: a merge commit is attributed to whoever pressed + the button, so counting them measures who merges, not who writes. + """ + out = sh(["git", "log", ref, "--no-merges", f"--since={WINDOW}", + "--format=%x00%ae", "--name-only"], cwd=repo_path) + + per_file = collections.defaultdict(collections.Counter) + per_pkg = collections.defaultdict(collections.Counter) + + handle, pkgs_this_commit = None, set() + + def close_commit(): + # A package is credited ONCE per commit, however many of its files + # that commit touched. Summing file touches instead would weigh a + # single sweeping rename above months of focused work, and would + # contradict the rule this map feeds -- commits, not lines. + for pkg in pkgs_this_commit: + per_pkg[pkg][handle] += 1 + + for line in out.splitlines(): + if line.startswith("\x00"): + if handle: + close_commit() + handle, pkgs_this_commit = AUTHOR_MAP.get(line[1:].strip()), set() + continue + if handle and line and tracked(line): + per_file[line][handle] += 1 + pkgs_this_commit.add(line.split("/")[0]) + if handle: + close_commit() + + return per_file, per_pkg + + +def shape(counts): + """shape orders a counter most-active-first for a stable diff.""" + return dict(sorted(counts.items(), key=lambda kv: (-kv[1], kv[0]))) + + +def merge(doc, paths): + """merge folds sibling repositories' published maps into doc. + + Each entry keeps the `head` and `generated` of the repo that produced + it, so a stale sibling is visible as an old commit rather than + silently presented as current. + """ + for path in paths: + p = Path(path) + if not p.exists(): + # A sibling that has not adopted this yet is expected, not an + # error -- but it must be visible, because the consequence is + # that issues about that repo have no ownership data at all. + print(f"note: {path} not found; its repo will be absent " + f"from the map", file=sys.stderr) + continue + other = json.loads(p.read_text()) + for name, entry in other.get("repos", {}).items(): + if name in doc["repos"]: + raise SystemExit(f"{path}: refusing to overwrite the " + f"locally-measured {name!r}") + doc["repos"][name] = entry + return doc + + +def build(repos): + doc = { + "_comment": "Generated by scripts/code_owners.py -- do not edit. " + "Commits per author over the window; a tie-break " + "input for issue triage, not a policy or review gate.", + "window": WINDOW, + "repos": {}, + } + for name, cfg in repos.items(): + per_file, per_pkg = measure(cfg["path"], cfg["ref"]) + doc["repos"][name] = { + "ref": cfg["ref"], + "head": sh(["git", "rev-parse", cfg["ref"]], + cwd=cfg["path"]).strip(), + "packages": {p: shape(c) for p, c in sorted(per_pkg.items())}, + "files": { + f: shape(c) for f, c in sorted(per_file.items()) + if sum(c.values()) >= MIN_FILE_COMMITS + }, + } + return doc + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--write", action="store_true") + ap.add_argument("--check", action="store_true") + ap.add_argument("--out", default=str(DEFAULT_OUT)) + ap.add_argument("--repo", default=None, metavar="NAME", + help="name of the repo being measured; defaults to the " + f"checkout's own. Known: {', '.join(sorted(REFS))}") + ap.add_argument("--merge", action="append", default=[], metavar="FILE", + help="a sibling repo's published code-owners.json to " + "fold in. Repeatable. Used by lumos, whose issues " + "track work in all three repos.") + args = ap.parse_args() + if not (args.write or args.check): + print(__doc__) + return 1 + + name = args.repo or origin_repo_name() + if name not in REFS: + raise SystemExit(f"unknown repo {name!r}; expected one of " + f"{sorted(REFS)}. Pass --repo to override.") + + doc = merge(build({name: {"ref": REFS[name], "path": str(ROOT)}}), + args.merge) + text = json.dumps(doc, indent=1, sort_keys=False) + "\n" + + for name, r in doc["repos"].items(): + print(f"{name} @ {r['head'][:8]}: {len(r['packages'])} packages, " + f"{len(r['files'])} files") + + if args.check: + cur = Path(args.out) + if cur.exists() and cur.read_text() == text: + print("map is current") + return 0 + print("map is STALE" if cur.exists() else "map does not exist") + return 1 + + Path(args.out).write_text(text) + print(f"wrote {args.out} ({len(text) // 1024} KiB)") + return 0 + + +if __name__ == "__main__": + sys.exit(main())