fix(ai): analyse the actual session, not stale/benign logs — 0.28.1
The user ran a game ~20s with no crash but the AI dredged up old log lines, guessed the wrong game, and gave Windows advice. Fixes: - Prompt now includes the real game name + capture duration + outcome (clean vs crash), so the model uses the known game instead of guessing from log paths. - gamelogs.collect(since=…): scope Steam-console lines by timestamp and skip a stale per-app Proton log (mtime before the session) — no unrelated past run. - ai_knowledge: flag benign Steam/Proton lines (libnvidia-ml.so.1 assertion, routine minidumps, "fork without exec") as non-causal. - System prompt: Linux-only steps (no "run as administrator"); don't manufacture a problem on a clean run. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
"""Tests for M14 game/Proton/Steam log collection."""
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
import time
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest import mock
|
||||
@@ -45,5 +47,31 @@ class CollectTests(unittest.TestCase):
|
||||
self.assertEqual(gamelogs.collect(), "")
|
||||
|
||||
|
||||
class SinceScopingTests(unittest.TestCase):
|
||||
def test_since_filter_keeps_window_only(self):
|
||||
text = (
|
||||
"[2026-05-22 13:00:00] old session line\n"
|
||||
"[2026-05-22 13:00:01] another old line\n"
|
||||
"[2026-05-22 14:30:00] new session launch\n"
|
||||
"[2026-05-22 14:30:05] new session error\n"
|
||||
)
|
||||
since = time.mktime(time.strptime("2026-05-22 14:00:00", "%Y-%m-%d %H:%M:%S"))
|
||||
out = gamelogs._since_filter(text, since)
|
||||
self.assertIn("new session launch", out)
|
||||
self.assertIn("new session error", out)
|
||||
self.assertNotIn("old session", out)
|
||||
|
||||
def test_collect_skips_stale_proton_log(self):
|
||||
tmp = Path(tempfile.mkdtemp())
|
||||
proton = tmp / "steam-9999.log"
|
||||
proton.write_text("stale proton output from an earlier game")
|
||||
old_mtime = time.time() - 3600
|
||||
os.utime(proton, (old_mtime, old_mtime))
|
||||
since = time.time() - 60 # session started a minute ago
|
||||
with mock.patch.object(gamelogs, "_proton_logs", return_value=[proton]), \
|
||||
mock.patch.object(gamelogs, "_steam_console", return_value=None):
|
||||
self.assertEqual(gamelogs.collect(since=since), "") # stale log excluded
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user