CI / build (push) Has been cancelled
Batch 1 (High severity): - Bug 1: --audit cat3 now checks .automaton/tasks/ paths - Bug 4: Verdict PASS/FAIL uses structured ## Status: line parsing - Bug 5: register-guards.sh checks .json/.jsonc, writes plugin key, strips comments - Bug 7: --can-edit/--scope-check path prefix uses os.sep boundary Batch 2 (Medium/Low severity): - Bug 2: migrate-project.sh find command parentheses for -prune binding - Bug 3: vram_detect model prefix matching with known-suffix whitelist - Bug 6: dashboard reads .state file before artifact heuristic fallback - Bug 8: removed wildcard CORS, added security headers (nosniff, DENY) - Bug 9: stale-task detection uses .state.lastedit instead of .state mtime - Bug 10: TEST_PLAN.md maps to test_design (was implement) 249 tests pass (up from 235). All 10 tasks driven through full workflow to completion.
1.4 KiB
1.4 KiB
Implementation: fix-vram-model-prefix-match
Bug
_lookup_model_context() in vram_detect.py used raw startswith() for model name matching, causing false positives like phi-4 matching phi-40 or phi-4-mini-instruct (a different model with different context window).
Fix
Replaced the raw startswith() with a three-tier matching strategy:
- Exact match —
name_lower == key_lower - Ollama parameter tag —
name_lower.startswith(key_lower + ":")(e.g.deepseek-r1:7bmatchesdeepseek-r1) - Known instruction-tuning suffix —
name_lower.startswith(key_lower + "-")only if the next segment is in_KNOWN_MODEL_SUFFIXES = {"instruct", "chat", "it", "fp16", "f16", "bf16"}(e.g.llama-3.1-8b-instructmatchesllama-3.1-8b)
Keys are sorted by length descending so the most specific match wins first.
This prevents false matches:
phi-4-mini-instruct→mininot in known suffixes → no match ✓gpt-4o-foo-unknown→foonot in known suffixes → no match ✓phi-40→ no:or known-suffix separator → no match ✓
Files Changed
scripts/vram_detect.py: Added_KNOWN_MODEL_SUFFIXESset, rewrote_lookup_model_context()with three-tier matching
Tests
test_lookup_model_context_no_false_prefix_match: Assertsphi-4-mini-instructandgpt-4o-foo-unknownreturn 0- Existing
test_lookup_model_context_prefix_matchstill passes (deepseek-r1:7b and llama-3.1-8b-instruct)