github Python re-analysis due

KadenMc/agentic-experiments

github

Hypothesis-first experiment tracking for agent-driven ML research, wired into Claude Code.

maintainer
KadenMc
license
MIT
first seen
2026-06-26
last seen
2026-08-29
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 31 tools
transport stdio counts 31 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • airgapped_fetch
  • airgapped_pull
  • airgapped_push
  • airgapped_rebase
  • airgapped_repo_status
  • airgapped_status
  • airgapped_wandb_sync
  • bind_tracker
  • close_thread
  • jupyter_introspect_current
  • jupyter_parse_introspection
  • link_run
  • list_batches
  • list_runs
  • list_threads
  • new_experiment
  • new_finding
  • new_hypothesis
  • new_run
  • new_thread
  • queue_add
  • queue_clear
  • queue_list
  • queue_materialize
  • queue_remove
  • queue_stop
  • show_batch
  • show_run
  • show_thread
  • sync_offline
  • validate
skills & danger signals github-tarball
code evidence vv0.1.1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 66

filesystem 53

  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/airgapped/_relay.py :47 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/airgapped/client.py :34 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/artifacts.py :29 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/backlinks.py :15 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/cli.py :12 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/hooks/_parse_hook_input.py :14 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/hooks/enforce_hef_chain.py :18 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/hooks/kb_write_guard.py :19 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/hooks/session_start.py :11 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/hooks/stop_validate.py :10 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/install.py :25 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/jupyter.py :33 import shutil
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/kb_io.py :12 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/kb_validate.py :19 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/ledger.py :41 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/linking.py :18 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :18 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/queue.py :40 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/runs.py :19 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/runs_index.py :40 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/sandbox.py :35 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/trackers/base.py :15 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/trackers/noop_adapter.py :12 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/trackers/wandb_adapter.py :13 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/utils/atomic.py :13 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/utils/git.py :10 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/utils/linklease.py :9 Why ``link()`` and not ``open(O_CREAT|O_EXCL)`` or ``flock``
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/utils/paths.py :13 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/validate.py :22 from pathlib import Path
  • fs KadenMc-agentic-experiments-a3f7a23/src/aexp/workpool.py :56 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/conftest.py :4 import shutil
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_airgapped.py :23 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_artifacts.py :5 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_cli.py :5 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_cross_machine_e2e.py :15 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_e2e_smoke.py :19 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_hooks_python.py :19 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_install.py :6 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_kb_io.py :4 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_ledger.py :12 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_linking.py :5 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_linklease.py :14 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_mcp_server.py :12 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_queue.py :12 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_runs.py :5 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_sandbox.py :7 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_trackers_context.py :13 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_trackers_noop.py :6 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_trackers_wandb.py :10 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_utils.py :6 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_validate.py :5 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_validate_cross_machine.py :15 from pathlib import Path
  • fs (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_workpool.py :27 from pathlib import Path

shell / exec 26

  • shell KadenMc-agentic-experiments-a3f7a23/src/aexp/airgapped/_relay.py :42 import subprocess
  • shell KadenMc-agentic-experiments-a3f7a23/src/aexp/cli.py :1045 import subprocess
  • shell KadenMc-agentic-experiments-a3f7a23/src/aexp/jupyter.py :35 import subprocess
  • shell KadenMc-agentic-experiments-a3f7a23/src/aexp/queue.py :35 import subprocess
  • shell KadenMc-agentic-experiments-a3f7a23/src/aexp/trackers/wandb_adapter.py :9 import subprocess
  • shell KadenMc-agentic-experiments-a3f7a23/src/aexp/utils/git.py :9 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_airgapped.py :22 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_artifacts.py :4 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_cli.py :4 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_cross_machine_e2e.py :14 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_e2e_smoke.py :18 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_hooks_python.py :18 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_install.py :5 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_jupyter_connect_postuse.py :5 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_ledger.py :11 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_linking.py :4 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_mcp_server.py :11 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_queue.py :6 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_runs.py :4 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_sandbox.py :4 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_trackers_context.py :11 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_trackers_noop.py :5 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_trackers_wandb.py :8 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_utils.py :5 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_validate.py :4 import subprocess
  • shell (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_validate_cross_machine.py :14 import subprocess

network 6

  • net KadenMc-agentic-experiments-a3f7a23/src/aexp/jupyter.py :34 import socket
  • net KadenMc-agentic-experiments-a3f7a23/src/aexp/queue.py :34 import socket
  • net KadenMc-agentic-experiments-a3f7a23/src/aexp/utils/paths.py :153 import socket
  • net (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_install.py :1097 import socket
  • net (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_jupyter_introspect.py :182 import socket
  • net (weak) KadenMc-agentic-experiments-a3f7a23/tests/test_queue.py :1511 import socket as _socket

tool registrations 31

  • new_hypothesis KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :152
  • new_experiment KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :186
  • new_finding KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :216
  • new_thread KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :258
  • list_threads KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :287
  • show_thread KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :327
  • close_thread KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :349
  • new_run KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :386
  • list_runs KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :423
  • list_batches KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :447
  • show_run KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :473
  • show_batch KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :485
  • link_run KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :520
  • bind_tracker KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :544
  • validate KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :600
  • sync_offline KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :638
  • queue_add KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :696
  • queue_list KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :771
  • queue_remove KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :796
  • queue_stop KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :808
  • queue_clear KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :844
  • queue_materialize KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :859
  • jupyter_introspect_current KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :923
  • jupyter_parse_introspection KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :952
  • airgapped_status KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :1062
  • airgapped_pull KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :1078
  • airgapped_fetch KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :1090
  • airgapped_repo_status KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :1102
  • airgapped_rebase KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :1114
  • airgapped_push KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :1130
  • airgapped_wandb_sync KadenMc-agentic-experiments-a3f7a23/src/aexp/mcp_server.py :1151

declared dependencies 11

  • mcp@(>=1.2,<2.0)
  • signac@(>=2.3.0,<3.0.0)
  • python-frontmatter@(>=1.1.0,<2.0.0)
  • pydantic@(>=2.5,<3.0)
  • pyyaml@(>=6.0,<7.0)
  • typer@(>=0.12,<1.0)
  • rich@(>=13.0,<15.0)
  • wandb@(>=0.16,<1.0)
  • jupyter-collaboration@(>=4.0.0,<5.0.0)
  • jupyter-mcp-tools@(>=0.1.6,<0.2.0)
  • jupyter-mcp-server@(>=1.0.2,<2.0.0)