Skip to content

Ruthwik/autoresearch#1788

Draft
ruthwikdasyam wants to merge 49 commits intodevfrom
ruthwik/autoresearch
Draft

Ruthwik/autoresearch#1788
ruthwikdasyam wants to merge 49 commits intodevfrom
ruthwik/autoresearch

Conversation

@ruthwikdasyam
Copy link
Copy Markdown
Contributor

Problem

Closes DIM-XXX

Solution

Breaking Changes

How to Test

Contributor License Agreement

  • I have read and approved the CLA.

- GlobalConfig.exit_on_eof: new flag; when set, ReplayConnection streams
  run once with loop=False and the GO2Connection module signals SIGINT to
  main process (DIMOS_MAIN_PID env) once all three streams reach EOF, so
  coordinator.loop() unblocks and stops cleanly
- Apply cli_config_overrides to global_config in run() BEFORE autoconnect()
  so blueprint top-level viewer branching (unitree_go2_basic.py) sees the
  override — previously --viewer=none was ignored because the blueprint was
  imported before the CLI kwarg landed on the singleton
- ReplayConnection: add no-op stop() (prev would AttributeError on
  stop_timer since super().__init__ is bypassed)
…_cpu

- Move to flat autoresearch/ layout: eval.py, optimizations.py, program.md,
  GUIDELINES.md, run.sh, .gitignore
- Delete autoresearch/go2_cpu/ (prior nested version — only diffs were
  license headers + formatting; no logic rescued)
- program.md describes branch-based commit-per-experiment flow (Karpathy
  pattern): ruthwik/autoresearch branch, results.jsonl ledger, reset --hard
  to discard candidates
- GUIDELINES.md documents test-venv requirement, current DimOS hooks
  (--exit-on-eof, --viewer=none, DIMOS_MAIN_PID), and remaining §6 gaps
…t-on-eof

- BASE_REPLAY_CMD: drop `uv run`, invoke test-venv/bin/dimos directly so
  subprocess env isolation matches GUIDELINES
- Add --exit-on-eof: replay ends at EOF instead of hitting the 300s timeout;
  enables fixed-work benchmarking
- Target unitree-go2-basic instead of the smart blueprint. Smart adds 5
  modules (mapping, planning, exploration, patrolling) that are CPU noise
  for an autoresearch CPU-footprint target; PatrollingModule also has a
  5s graceful-stop bug that inflates wall time. Basic covers the LCM/RPC/
  replay stack we actually want to optimize.
- Fix REPO_ROOT: parents[2] → parents[0] after flattening go2_cpu layout
- DEFAULT_TIMEOUT: 300s → 180s safety cap (EOF runs are ~10-30s)
- program.md / GUIDELINES.md: align with unitree-go2-basic target; drop
  PatrollingModule rough-edge note (no longer in the active blueprint)
Replace ad-hoc startup_code string with a documented catalog of tunable
knobs — each with a top-level constant (easy for the agent to grep),
source citation, safe range, and upstream default. apply() composes only
the enabled knobs into cli_args/env/startup_code.

Baseline: all ENABLE_* flags False → apply() returns empty dict-ish.
Matches program.md's "Re-baseline with a clean optimizations.py" rule.

Knobs exposed:
1. LCM_LOOP_TIMEOUT_MS       (lcmservice._LCM_LOOP_TIMEOUT, 50ms → tunable)
2. RPC_POOL_MAX_WORKERS      (PubSubRPCBase._call_thread_pool_max_workers, 50 → tunable)
3. CAMERA_INFO_MODE          (go2 1Hz daemon thread: default|slow|once)
4. N_WORKERS                 (--n-workers CLI flag)
5. BLAS_PINNING              (OMP/MKL/OPENBLAS_NUM_THREADS env)
6. LOG_LEVEL                 (DIMOS_LOG_LEVEL env; reduces formatter CPU)

Source citations point at dimos/ paths so the agent can grep back to
first principles when choosing values.
…source-gated knobs 7-10

Expand eval harness with TTFM (time to first message via I/O detection),
context switch tracking, and multi-score reporting. Add 4 new optimization
knobs gated behind env vars so the agent can toggle them from optimizations.py
without touching DimOS source each run:

- DIMOS_SKIP_WEBSOCKET_VIS: skip WebsocketVisModule in blueprint
- DIMOS_SKIP_CLOCK_SYNC: skip ClockSyncConfigurator during replay
- DIMOS_LAZY_ASYNCIO: lazy asyncio loop creation in ModuleBase
- DIMOS_REPLAY_PREFETCH: background prefetch for LegacyPickleStore
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant