Three bugs prevented the service grid and alerts from rendering:
1. state.observation → state.current_observation
State model serialises the observation under current_observation,
not observation. Services and alerts were never rendered.
2. s.memory_utilization → s.memory_percent
ServiceStatus model field is memory_percent (0-100 float).
All MEM values showed as NaN.
3. a.severity === 'CRITICAL' → a.severity === 'critical'
Alert model severity is lowercase ("critical"/"warning"/"info").
Alert severity colours never applied; critical flash never fired.
Also fixed:
- services rendered via Array.slice().sort() instead of Object.entries()
(services is a JSON array, not a dict)
- max_steps is now dynamic from observation, not hardcoded 15
- rollback_service/block_ip → rollback/block_ip_range (correct action names)
- "WS DISCONNECTED" initial label → "API DISCONNECTED" (REST polling, not WS)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: auto-load .env for HF_TOKEN + fix CPU inference device bug
- _load_dotenv() reads .env at startup so HF_TOKEN is set without
needing to export it manually each session; falls back to manual
parse if python-dotenv is not installed
- Fix .to("cuda") hardcode → .to(device) using _get_model_device(model)
so inference matches whatever device the model actually loaded on
- Fix dtype= → torch_dtype= in float16 fallback (was silently loading
float32 instead of float16)
- Post-load diagnostic prints actual model device; warns + shows pip
install command if model is on CPU
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: replay system, human challenge, progress viz, 2 new generator failure modes
- Feature 1: Episode Replay System
- replay_store dict + replay_counter track completed episodes
- /step endpoint accumulates per-step data (action, reward, obs summary)
- On done=True, full replay saved with timeline steps
- GET /replays — JSON list of replays, newest first
- GET /replay/{id} — full replay data with steps
- GET /replay/{id}/html — dark-theme HTML timeline visualization
- GET /replays/html — HTML index page
- Feature 2: Human vs Agent Challenge
- GET /challenge — fully interactive HTML page to play incidents
- Auto-resets to easy task seed 1234 on load
- Action form with all 14 action types, context-sensitive fields
- Live reward feedback per action, running score display
- End-of-episode comparison panel: human score vs agent avg from /metrics
- Feature 3: Progress Visualization
- GET /progress — dark-theme HTML progress dashboard
- Section 1: Live task vs random baseline bar chart (CSS-only, no JS)
- Section 2: Hardcoded training resul…
fix: switch NOC dashboard from WebSocket to REST polling to sync with live demo_llm.py execution
- Add GPU check with warning at load_model() start
- Add HF_TOKEN env var login before any download
- Replace transformers fallback: load base in 4-bit (BitsAndBytesConfig),
fall back to float16, then attach LoRA adapter (~97MB) via PeftModel
- Fix torch_dtype -> dtype deprecation for transformers 5.5.3
- Update header label to show LoRA adapter size
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: correctly handle PEFT adapter and token parsing for transformers fallback
Runs a full episode against the live HF Space with either a rule-based
heuristic agent (no GPU) or the fine-tuned Llama model via unsloth.
6-panel Rich layout: services, alerts, evidence, reasoning, score, leaderboard.
Episode resolves in 3 steps (easy/seed=42), total reward +0.850.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: shorten short_description to meet HF 60-char limit
- Untrack kaggle_training/results/ — large safetensors files rejected by HF
- Add kaggle_training/results/ to .gitignore
- Checkpoints already published at Arijit-07/aria-devops-llama3b
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: final submission — README frontmatter, BLOG, training notebook, all ARIA features