LUPINE is a GPU over IP bridge allowing GPUs on remote machines to be attached to CPU-only machines.
This report presents the forensic synthetic code analysis of lupinemachines/lupine, a C++ project with 2,330 GitHub stars. SynthScan v2.0 examined 68,547 lines of code across 72 source files, recording 144 pattern matches distributed across 7 syntactic categories. The overall adjusted score of 3.2 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 144 distinct pattern matches across 7 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | codegen/ops.py | 37 | " ({param_name} != nullptr && rpc_write(conn, {param_name}, sizeof({base_type})) < 0) ||\n".format( | CODE |
| HIGH | codegen/ops.py | 80 | " ({param_name}_null_check && rpc_read(conn, &{param_name}, sizeof({base_type})) < 0) ||\n".format( | CODE |
| HIGH | codegen/ops.py | 105 | " ({param_name}_null_check && rpc_write(conn, &{param_name}, sizeof({base_type})) < 0) ||\n".format( | CODE |
| HIGH | codegen/ops.py | 121 | " ({param_name}_null_check && rpc_read(conn, {param_name}, sizeof({base_type})) < 0) ||\n".format( | CODE |
| HIGH | codegen/ops.py | 223 | " ({size} != 0 && rpc_write(conn, {param_name}, {size}) < 0) ||\n".format( | STRING |
| HIGH | codegen/ops.py | 457 | " ({size} != 0 && rpc_write(conn, {param_name}, {size}) < 0) ||\n".format( | STRING |
| HIGH | codegen/ops.py | 476 | " ({size} != 0 && rpc_read(conn, {param_name}, {size}) < 0) ||\n".format( | STRING |
| HIGH | codegen/ops.py | 497 | anchor array is null, which is a count-only query); the server runs the API | CODE |
| HIGH⚡ | codegen/codegen.py | 792 | f.write(" if (return_value == CUDA_SUCCESS && dptr != nullptr) lupine_note_deviceptr_allocation_route(*dptr, | CODE |
| HIGH⚡ | codegen/codegen.py | 794 | f.write(" if (return_value == CUDA_SUCCESS && dptr != nullptr) {\n") | CODE |
| HIGH⚡ | codegen/codegen.py | 801 | f.write(" if (return_value == CUDA_SUCCESS && dptr != nullptr) lupine_note_deviceptr_allocation_route(*dptr, | CODE |
| HIGH | codegen/codegen.py | 825 | f.write(" if (return_value == CUDA_SUCCESS && hfunc != nullptr) return_value = lupine_record_module_function( | CODE |
| HIGH | codegen/codegen.py | 827 | f.write(" if (return_value == CUDA_SUCCESS && pKernel != nullptr) return_value = lupine_record_library_kernel | CODE |
| HIGH | codegen/codegen.py | 1341 | f.write(" (dptr != nullptr && rpc_read(conn, dptr, sizeof(CUdeviceptr)) < 0) ||\n") | CODE |
| HIGH | codegen/codegen.py | 1347 | f.write(" if (return_value == CUDA_SUCCESS && dptr != nullptr) lupine_note_deviceptr_allocation(*dptr | CODE |
| HIGH | codegen/codegen.py | 1363 | f.write(" (dptr != nullptr && rpc_read(conn, dptr, sizeof(CUdeviceptr)) < 0) ||\n") | CODE |
| HIGH | codegen/codegen.py | 1369 | f.write(" if (return_value == CUDA_SUCCESS && dptr != nullptr) lupine_note_deviceptr_allocation(*dptr | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | client.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | client.cpp | 21 | #endif | COMMENT |
| LOW | client.cpp | 41 | COMMENT | |
| LOW | memcpy.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | manual_server.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | manual_server.cpp | 21 | #include <unordered_set> | COMMENT |
| LOW | manual_server.cpp | 41 | #include "codegen/gen_api.h" | COMMENT |
| LOW | manual_server.cpp | 181 | // the device-printf channel and nothing else can contaminate the capture. | COMMENT |
| LOW | lupine_platform.h | 1 | #ifndef LUPINE_PLATFORM_H | COMMENT |
| LOW | routing.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | lupine_log.h | 1 | #ifndef LUPINE_LOG_H | COMMENT |
| LOW | h2.cpp | 1 | #include "lupine_log.h" | COMMENT |
| LOW | nvml_server.cpp | 1 | #include "nvml_server.h" | COMMENT |
| LOW | h2_test.cpp | 1 | #include "lupine_log.h" | COMMENT |
| LOW | memcpy.h | 1 | #pragma once | COMMENT |
| LOW | nvml_client.cpp | 1 | #include <arpa/inet.h> | COMMENT |
| LOW | nvml_client.cpp | 541 | } // namespace | COMMENT |
| LOW | rpc.h | 1 | #ifndef RPC_H | COMMENT |
| LOW | cuda_compat.h | 1 | #ifndef LUPINE_CUDA_COMPAT_H | COMMENT |
| LOW | compress.cpp | 1 | // Optional LZ4 compression for large host<->device memory transfer payloads. | COMMENT |
| LOW | compress.cpp | 21 | // | COMMENT |
| LOW | server.cpp | 1 | #include <condition_variable> | COMMENT |
| LOW | codegen/gen_api.h | 1 | // Generated by codegen.py. Do not edit by hand. | COMMENT |
| LOW | codegen/gen_api.h | 21 | #define RPC_cuFlushGPUDirectRDMAWrites 434434783 | COMMENT |
| LOW | codegen/gen_api.h | 41 | #define RPC_cuCtxSetCacheConfig 820065396 | COMMENT |
| LOW | codegen/gen_api.h | 61 | #define RPC_cuLinkComplete 1460078792 | COMMENT |
| LOW | codegen/gen_api.h | 81 | #define RPC_cuMemFree_v2 2004586063 | COMMENT |
| LOW | codegen/gen_api.h | 101 | #define RPC_cuMemcpyDtoA_v2 206508478 | COMMENT |
| LOW | codegen/gen_api.h | 121 | #define RPC_cuMemsetD32_v2 447800970 | COMMENT |
| LOW | codegen/gen_api.h | 141 | #define RPC_cuMipmappedArrayCreate 1284494309 | COMMENT |
| LOW | codegen/gen_api.h | 161 | #define RPC_cuMemPoolDestroy 1759284423 | COMMENT |
| LOW | codegen/gen_api.h | 181 | #define RPC_cuStreamSynchronize 1581600379 | COMMENT |
| LOW | codegen/gen_api.h | 201 | #define RPC_cuStreamWaitValue32_v2 1641833423 | COMMENT |
| LOW | codegen/gen_api.h | 221 | #define RPC_cuLaunch 1255109853 | COMMENT |
| LOW | codegen/gen_api.h | 241 | #define RPC_cuGraphAddEmptyNode 523519941 | COMMENT |
| LOW | codegen/gen_api.h | 261 | #define RPC_cuGraphMemFreeNodeGetParams 1901836585 | COMMENT |
| LOW | codegen/gen_api.h | 281 | #define RPC_cuGraphNodeSetEnabled 401629509 | COMMENT |
| LOW | codegen/gen_api.h | 301 | #define RPC_cuOccupancyMaxPotentialClusterSize 600198052 | COMMENT |
| LOW | codegen/gen_api.h | 321 | #define RPC_cuTexRefGetFormat 1609708665 | COMMENT |
| LOW | codegen/gen_api.h | 341 | #define RPC_cuCtxEnablePeerAccess 1737933368 | COMMENT |
| LOW | codegen/gen_api.h | 361 | #define RPC_cuGraphRemoveDependencies_v2 1606074400 | COMMENT |
| LOW | codegen/gen_api.h | 381 | #define RPC_cuTensorMapEncodeIm2col 1203430832 | COMMENT |
| LOW | codegen/gen_api.h | 401 | #define RPC_nvmlDeviceGetMemoryInfo 1622472062 | COMMENT |
| LOW | codegen/gen_api.h | 421 | #define RPC_nvmlDeviceGetMaxPcieLinkWidth 1143822398 | COMMENT |
| LOW | codegen/gen_api.h | 441 | #define RPC_nvmlDeviceGetMemoryInfo_v2 1387993144 | COMMENT |
| LOW | codegen/gen_client.cpp | 1 | #include <cuda.h> | COMMENT |
| LOW | codegen/annotations.h | 1 | #include <cuda.h> | COMMENT |
| LOW | codegen/gen_server.cpp | 1 | #include "cuda_compat.h" | COMMENT |
| LOW | codegen/gen_client.h | 1 | #ifndef GEN_CLIENT_H | COMMENT |
| LOW | third_party/lz4/lz4.h | 81 | * Enable exporting of functions when building a Windows DLL | COMMENT |
| LOW | third_party/lz4/lz4.h | 121 | # endif | COMMENT |
| LOW | third_party/lz4/lz4.h | 781 | * Should deprecation warnings be a problem, it is generally possible to disable them, | COMMENT |
| LOW | third_party/lz4/lz4.c | 121 | * Compiler Options | COMMENT |
| LOW | third_party/lz4/lz4.c | 161 | */ | COMMENT |
| LOW | third_party/lz4/lz4.c | 221 | # define ALLOC_AND_ZERO(s) LZ4_calloc(1,s) | COMMENT |
| LOW | third_party/lz4/lz4.c | 241 | **************************************/ | COMMENT |
| LOW | third_party/lz4/lz4.c | 261 | #define ML_MASK ((1U<<ML_BITS)-1) | COMMENT |
| LOW | third_party/lz4/lz4.c | 341 | * environments, the compiler can't assume the implementation of memcpy() is | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/tests/test_lupine_adapter.py | 57 | def test_connect_sets_env_and_returns_devices(lupine_module): | CODE |
| LOW | python/tests/test_lupine_adapter.py | 66 | def test_connect_loads_explicit_libcuda(lupine_module, monkeypatch, tmp_path): | CODE |
| LOW | python/tests/test_lupine_adapter.py | 79 | def test_connect_accepts_multiple_hosts_in_order(lupine_module): | CODE |
| LOW | python/tests/test_lupine_adapter.py | 86 | def test_session_devices_use_native_topology_for_multi_gpu_server(lupine_module): | CODE |
| LOW | python/tests/test_lupine_adapter.py | 99 | def test_connect_uses_sidecar_when_torch_has_no_cuda_backend(lupine_module, monkeypatch): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 116 | def test_connect_sidecar_fallback_rejects_multiple_hosts(lupine_module, monkeypatch): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 125 | def test_connect_sidecar_fallback_rejects_libcuda(lupine_module, monkeypatch, tmp_path): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 134 | def test_connect_requires_cuda_backend_off_macos(lupine_module, monkeypatch): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 143 | def test_connect_restores_env_when_cuda_was_not_initialized(lupine_module, monkeypatch): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 152 | def test_connect_restores_env_when_cuda_initialized_inside_context(lupine_module): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 161 | def test_connect_restores_env_after_topology_query(lupine_module): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 170 | def test_connect_accepts_matching_preconfigured_env(lupine_module, monkeypatch): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 180 | def test_connect_rejects_different_preconfigured_env(lupine_module, monkeypatch): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 189 | def test_connect_refuses_after_cuda_init(lupine_module): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 198 | def test_devices_use_native_topology_without_configured_servers(lupine_module): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 209 | def test_session_no_visible_devices(lupine_module): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 217 | def test_connect_accepts_empty_hosts(lupine_module): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 226 | def test_duplicate_hosts_are_preserved(lupine_module): | CODE |
| LOW | python/tests/tensor_test.py | 13 | def test_cpu_tensor_rejects_noncontiguous_input(): | CODE |
| LOW | python/tests/tensor_test.py | 35 | def test_cpu_tensor_rejects_lazy_views(value, error): | CODE |
| LOW | python/tests/tensor_test.py | 64 | def test_cpu_tensor_transport_uses_bounded_binary_chunks(): | CODE |
| LOW | python/tests/tensor_test.py | 98 | def test_cpu_tensor_binary_round_trip(value): | CODE |
| LOW | python/tests/tensor_test.py | 113 | def test_worker_streams_cpu_cuda_transfers_in_chunks(): | CODE |
| LOW⚡ | python/tests/sidecar_test.py | 32 | def test_sidecar_container_runtime_is_macos_only(monkeypatch): | CODE |
| LOW⚡ | python/tests/sidecar_test.py | 39 | def test_sidecar_container_runtime_requires_cli(monkeypatch): | CODE |
| LOW⚡ | python/tests/sidecar_test.py | 47 | def test_sidecar_container_runtime_starts_services_and_pulls_missing_image(monkeypatch): | CODE |
| LOW | python/tests/sidecar_test.py | 71 | def test_sidecar_container_runtime_pulls_missing_image(monkeypatch): | CODE |
| LOW | python/tests/sidecar_test.py | 98 | def test_sidecar_dispatch_mode_forwards_factory_ops(monkeypatch): | CODE |
| LOW | python/tests/sidecar_test.py | 126 | def test_sidecar_dispatch_mode_forwards_tensor_ops(monkeypatch): | CODE |
| LOW | python/tests/sidecar_test.py | 154 | def test_sidecar_dispatch_mode_keeps_cpu_ops_local(monkeypatch): | CODE |
| LOW | python/tests/sidecar_test.py | 169 | def test_sidecar_to_copy_uses_direct_cpu_upload(monkeypatch): | CODE |
| LOW | python/tests/sidecar_test.py | 192 | def test_sidecar_to_copy_uses_direct_gpu_download(monkeypatch): | CODE |
| LOW | python/tests/sidecar_test.py | 221 | def test_sidecar_copy_uses_direct_cpu_stream(monkeypatch): | CODE |
| LOW | python/tests/sidecar_test.py | 249 | def test_sidecar_worker_consumes_tensor_stream_before_operation_error(tmp_path): | CODE |
| LOW | python/lupine/tensor.py | 147 | def _validate_cpu_result_tensor(tensor: Any) -> None: | CODE |
| LOW | codegen/ops.py | 255 | def client_post_rpc_read_success(self, f): | STRING |
| LOW | codegen/codegen.py | 659 | def client_translated_deviceptr_names( | CODE |
| LOW | codegen/codegen.py | 715 | def client_routing_route_expr(metadata: FunctionAnnotationMetadata) -> str: | CODE |
| LOW | codegen/codegen.py | 913 | def write_nvml_client_validation(f, operations): | CODE |
| LOW | codegen/codegen.py | 970 | def write_nvml_client_wrapper(f, function, operations, metadata): | CODE |
| LOW | codegen/codegen.py | 1017 | def write_server_buffer_cleanup(f, owned_buffers, indent): | CODE |
| LOW | codegen/codegen.py | 1022 | def write_nvml_server_handler(f, function, operations): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/lupine/worker.py | 58 | except Exception: | CODE |
| LOW | python/lupine/worker.py | 133 | except Exception: | CODE |
| LOW | python/lupine/worker.py | 146 | except Exception: | CODE |
| LOW | python/lupine/worker.py | 210 | except Exception: | CODE |
| LOW | python/lupine/worker.py | 226 | except Exception as exc: | CODE |
| LOW | python/lupine/sidecar.py | 268 | except Exception as exc: | CODE |
| LOW | python/lupine/tensor.py | 196 | except Exception: | CODE |
| LOW | python/lupine/tensor.py | 252 | except Exception: | CODE |
| MEDIUM | codegen/codegen.py | 1145 | print(f"Error parsing annotation for {function.name}: {e}") | CODE |
| LOW | codegen/codegen.py | 1144 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/lupine/worker.py | 190 | CODE | |
| LOW | python/lupine/sidecar.py | 239 | CODE | |
| LOW | python/lupine/tensor.py | 203 | CODE | |
| LOW | codegen/ops.py | 348 | CODE | |
| LOW | codegen/annotationgen.py | 6 | CODE | |
| LOW | codegen/codegen.py | 262 | CODE | |
| LOW | codegen/codegen.py | 745 | CODE | |
| LOW | codegen/codegen.py | 913 | CODE | |
| LOW | codegen/codegen.py | 1098 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/lupine/sidecar.py | 1 | CODE | |
| LOW | python/lupine/__init__.py | 8 | CODE | |
| LOW | python/lupine/tensor.py | 3 | CODE | |
| LOW | codegen/codegen.py | 4 | CODE | |
| LOW | codegen/codegen.py | 5 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/lupine/__init__.py | 71 | def _set_server_env(servers: Sequence[str]) -> None: | CODE |
| LOW | python/lupine/__init__.py | 225 | __all__ = [ | CODE |
| LOW | python/lupine/tensor.py | 33 | def _set_active_session(session: Any) -> None: | CODE |