Make test suite runnable from clean checkout + cross-platform vram_detect
CI / build (push) Has been cancelled
CI / build (push) Has been cancelled
runnable-test-suite (parent) — complete. Three sub-tasks all complete: - make-tests-runnable: add requirements.txt pinning pytest==7.4.4, sweep all docs/prompts from bare 'python' to 'python3' (stock macOS/Windows ships python3), add idempotent .venv install block to scripts/install.sh, and add 'from __future__ import annotations' to 3 dashboard modules using PEP 604 union syntax at definition time so they import on Python 3.9+. The PEP 604 bug was caught by the streak verifier itself during implementation. - vram-detect-cross-platform: scripts/vram_detect.py now branches on platform.system() for Linux/Darwin/Windows. macOS path uses system_profiler SPDisplaysDataType (Apple Silicon unified memory via sysctl hw.memsize; Intel Macs via 'VRAM (Total):'). Windows uses wmic path win32_VideoController get AdapterRAM with PowerShell fallback. Linux /proc/meminfo and nvidia-smi/lspci paths unchanged (regression test locks them). Added 14 local-LLM context-window entries (llama-3.1, qwen2.5, mistral, deepseek-r1/v3, glm-4/4.5, gemma-2, phi-3/4) with source-cited model cards. Added _probe_ollama_model() that runs 'ollama list' as a last-resort fallback. run_command() now wraps PowerShell cmdlets on Windows (['powershell', '-NoProfile', '-NoLogo', '-Command', ...]). - vram-detect-cross-platform-tests: 11 new monkeypatched tests in tests/test_vram_detect.py covering Linux/Darwin/Windows branches for detect_ram and detect_gpu_vram, prefix-match for unknown model names, ollama probe, Windows PowerShell wrapper, and a LOCKED regression test for _detect_ram_linux(). All external subprocess/sysctl/wmic calls are mocked; no live hardware probes. Suite total: 235 passed, 0 errors. Verified on this box: gpu_vram_gb 0 -> 32 on Apple M5 (32GB unified memory), target context correctly jumped 12k -> 42k. Subtask-2 implementation was authored by local LLM (gemma-4-26B-A4B-it via headroom proxy @ localhost:8787). The 10-consecutive-clean-pass streak verifier ran as the independent checker model (article #2/#9/#13 in 'WTF Is a Loop? Part 2'). One anti-spin rail fired: local LLM produced inline branches where subtask-3 tests expected private _detect_ram_linux() helper; extracted helper to match the test contract without weakening tests. Parent + all 3 subtasks complete. Prior opencode-subagent implementation of subtask-2 preserved in git stash for reference.
This commit is contained in:
@@ -53,21 +53,23 @@ Automaton is a **contract-based, state-enforced workflow framework** for LLM age
|
||||
|
||||
## Build & Test Commands
|
||||
|
||||
*Install: `pip3 install -r requirements.txt`*
|
||||
|
||||
```bash
|
||||
# Compile all Python files
|
||||
python -m py_compile automaton/**/*.py automaton/dashboard/**/*.py
|
||||
python3 -m py_compile automaton/**/*.py automaton/dashboard/**/*.py
|
||||
|
||||
# Run the test suite
|
||||
python -m pytest tests/ -v
|
||||
python3 -m pytest tests/ -v
|
||||
|
||||
# Run a single test file
|
||||
python -m pytest tests/test_task.py -v
|
||||
python3 -m pytest tests/test_task.py -v
|
||||
|
||||
# Syntax-check shell scripts
|
||||
bash -n scripts/*.sh
|
||||
|
||||
# Start the dashboard
|
||||
python -m automaton.dashboard
|
||||
python3 -m automaton.dashboard
|
||||
```
|
||||
|
||||
## Conventions
|
||||
@@ -114,7 +116,7 @@ Modes:
|
||||
## Adding or Updating Prompts
|
||||
|
||||
1. Edit the relevant file in `prompts/`.
|
||||
2. Run `python -m pytest tests/test_prompt_paths.py` to ensure task paths are canonical.
|
||||
2. Run `python3 -m pytest tests/test_prompt_paths.py` to ensure task paths are canonical.
|
||||
3. Update `CHANGELOG.md` under `[unreleased]`.
|
||||
|
||||
## Adding a New Script
|
||||
@@ -134,8 +136,8 @@ Modes:
|
||||
## CI
|
||||
|
||||
Gitea CI runs on every push:
|
||||
- `python -m py_compile`
|
||||
- `python -m pytest tests/`
|
||||
- `python3 -m py_compile`
|
||||
- `python3 -m pytest tests/`
|
||||
- `bash -n scripts/*.sh`
|
||||
|
||||
See `.gitea/workflows/ci.yml`.
|
||||
|
||||
Reference in New Issue
Block a user