summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-04-15Study 1: 270 runs complete + judge validation pipelineCaptainJack2491
- config_study1.yaml: 3 models × 3 oversight × bare framing × n=30 - Judge validation: 54-run subset, gold=Sonnet 4.6, proxy=Grok 4.1 Fast (BB κ=0.702) + GPT-4.1 (GB κ=0.878) - Fix OpenAI batch provider: BytesIO, method/url fields, response.body parsing - Scripts: extract_subset.py, judge_validation.py - Dissertation chapters updated (intro, methodology, results, conclusion)
2026-04-13deps: add scikit-learn for statistical analysisCaptainJack2491
2026-04-13api: add chat interface styles to results dashboardCaptainJack2491
2026-04-13docs: add progress presentation from start of Term 2 (Jan 2026)CaptainJack2491
2026-04-13notes: add dissertation pivot plan and additional research notesCaptainJack2491
2026-04-13docs: add judging specification and config templateCaptainJack2491
2026-04-13judge_validation: add v2 judge comparison resultsCaptainJack2491
2026-04-13docs: add paper draft with alternative structure for publicationCaptainJack2491
2026-04-13papers: add 2512.16041v1 deception alignment paperCaptainJack2491
2026-04-13viz: add architecture diagrams for thesisCaptainJack2491
2026-04-13docs: update dissertation intro, lit review, and methodology chaptersCaptainJack2491
2026-04-13ignore: add videos/ to gitignoreCaptainJack2491
2026-04-10refactor(judge): simplify to single judge per prong, auto-create sync clientsCaptainJack2491
BREAKING CHANGE: Judge API now uses single blackbox_model/glassbox_model instead of lists with aggregation. Changes: - Judge auto-creates sync clients from model configs (supports anthropic, openai, xai) - Removed multi-model aggregation support (aggregate_results method removed) - New: create_sync_clients_for_models() and get_supported_providers() - Updated judge_runner.py to use new single-judge API - Added scripts/judge_comparison.py for testing judge model pairs - Updated v2_redesign notes to reflect implementation status
2026-04-10refactor(judge): simplify to single judge per prong, remove multi-model ↵CaptainJack2491
aggregation - Remove multi-model aggregation support from Judge class - Single blackbox judge: claude-sonnet-4-20250514 (anthropic) - Single glassbox judge: gpt-4.1 (openai) - Remove aggregate_results method and all aggregation-related code - Simplify batch collection to single result per run - Update config_dryrun.yaml with new judge configuration
2026-04-02feat(dashboard): add interactive charts and layout optimizationsCaptainJack2491
- Separated Static Visualizations into dedicated tab with fullscreen image modal - Added new interactive charts: Glassbox Category by Scenario, Intent vs Reality, and Radar Chart - Replaced average token tracking with global token aggregations - Implemented Grouped-Stacked Bar Chart for visual comparison of Action alongside Sophistication by oversight tier - Added standardized color palettes to improve chart legibility
2026-04-02feat(dashboard): integrate interrogation module into web dashboardCaptainJack2491
- Added HTTP POST /api/interrogate/start and /api/interrogate/chat to api/server.py - Implemented ACTIVE_SESSIONS cache to persist synchronous agent state across requests - Updated sys.path in api/server.py to resolve inner core imports correctly - Added Inspector Modal 'Interrogate' view toggle in index.html - Implemented JS interrogation loop, fallback log path resolution, auto-scroll, and markdown rendering in results.js - Added custom CSS animations (.thinking-pulse, .pulse-ring) to mimic agent processing
2026-04-02feat(dashboard): enhance raw-dataset view with column toggles, truncation, ↵CaptainJack2491
and row inspector
2026-04-02fix: update web dashboard to auto-discover data from multiple directoriesCaptainJack2491
- CSV results now found in logs/full_experiment/, output/, and config.output_dir - Viz images now found in viz/ (project root) and output/charts/ - Judge logs now found in judge_logs/ and logs/judge_full_experiment/ - Added CORS middleware for local development - Added /api/logs/ endpoints for browsing raw JSON experiment logs - Added --port and --host CLI args
2026-04-02Merge branch 'feature/web-gui'CaptainJack2491
2026-04-02docs: add v2 redesign notes with publication planCaptainJack2491
- 01: v1→v2 evolution history, results, limitations, rationalization hypothesis - 02: judge system state, single judge per prong, 20% validation protocol - 03: research plan analysis, Option B (two-phase) selected - 04: publication plan — paper structure, three-layer analysis strategy, Gemini ceiling effect handling, budget, venue targets, timeline Key decisions: - Two-phase design (540 runs) over full factorial (1,620) - Single paper: v1 exploratory → Study 1 (oversight) → Study 2 (framing) - Three-layer analysis: pooled → per-model → sensitivity excluding ceiling models
2026-04-01feat: implement robust reasoning token handling and multi-turn persistenceCaptainJack2491
- Refactored Agent's chat loop to explicitly preserve and pass back reasoning context (reasoning_details, reasoning) to OpenRouter. - Ensures frontier models like Gemini 3.1 and DeepSeek v3.2 maintain their 'thinking' chain during complex tool-calling sessions. - Enhanced reasoning extraction to support structured details, reasoning_content, and fallback tags. - Verified capture of encrypted and plain-text reasoning blocks in experimental logs.
2026-04-01Fix error runs not appearing in final summaryCaptainJack2491
2026-03-26Refactor judge module into judge/ packageCaptainJack2491
Split monolithic src/judge.py into a proper package structure: - src/judge/batch_providers.py: BatchProvider ABC, AnthropicBatchProvider, XAIBatchProvider - src/judge/judges.py: RegexChecker, BlackboxChecker, GlassboxChecker - src/judge/helpers.py: extract_* functions, parse_json_verdict - src/judge/prompts.py: BLACKBOX_PROMPT, GLASSBOX_PROMPT, constants - src/judge/judge.py: Judge orchestrator class - src/judge/__init__.py: Re-exports all public APIs
2026-03-26Add xAI (Grok) batch API supportCaptainJack2491
- Add XAIBatchProvider class implementing BatchProvider ABC - Add --provider CLI argument to judge_runner (anthropic|xai) - Refactor Judge class to use BatchProvider instead of direct API calls - Update tests for new Judge constructor signature
2026-03-25refactor: extract judge prompts to files and add granular blackbox categoriesCaptainJack2491
- Extracted Blackbox and Glassbox prompts from into their own markdown files in - Implemented progressive 4-tier Blackbox categories (FABRICATED, OMITTED_CRITICAL, DECEPTIVE_FRAMING, ACCURATE) - Added neutral examples to the Blackbox prompt to improve formatting consistency - Updated references and tests to match new judge categorization structure
2026-03-25feat: align all hidden goals with child_protection directive templateCaptainJack2491
2026-03-25fix: updated scenarios and added a new oneCaptainJack2491
2026-03-25feat: implement rich dashboard for experiment progressCaptainJack2491
2026-03-25feat: add tqdm progress bar and fix main config flag loadingCaptainJack2491
2026-03-25fix: catch and recover from JSONDecodeError on malformed tool argsCaptainJack2491
2026-03-25test: add coverage for v2 infra featuresCaptainJack2491
- VFSFactory: independent instances vs singletons - make_tools_for_vfs: parallel binding - config_loader: goal_types and max_workers parsing - runner: goal_type iteration and resume skipping - agent: goal_type storage and path resolution
2026-03-25feat: add hidden goal variants and rebalance child_protectionCaptainJack2491
- Create hidden_goals/ for all 3 scenarios (self_serving, moral, bare) - Corporate: shareholder value vs community harm vs bare instruction - Child protection: department stats vs saving lives vs bare directive - Pharma: stock price vs patient access vs bare instruction - Rebalance child_protection data: archive cases D, E, F (35KB -> 13.6KB) - Update child_protection regex_rules.yaml for remaining 3 cases
2026-03-25feat: add goal_type variation system and parallel processingCaptainJack2491
- vfs.py: add VFS.create() factory for parallel-safe independent instances - tools.py: add make_tools_for_vfs() to bind tools to specific VFS instances - config_loader.py: add goal_types and max_workers config properties - agent.py: add goal_type field, vfs_instance param, goal_type in log paths - runner.py: rewrite with goal_type loop dimension, ThreadPoolExecutor parallel execution, isolated VFS per run, flattened work items, thread-safe results All backward compatible - empty goal_types defaults to legacy hidden_goal.md, max_workers=1 defaults to sequential execution.
2026-03-24added new papersCaptainJack2491
2026-03-14feat: statistical analysis on the whole dataCaptainJack2491
2026-03-09feat: add total token usage chart and update documentationCaptainJack2491
This commit: - Adds a 'Total Token Usage by Model' chart alongside the average token chart - Updates the web_gui_plan.md to reflect the removal of execution APIs and the addition of the new data visualization features.
2026-03-09feat: add token usage metrics and click-to-zoom chartsCaptainJack2491
This commit: - Bakes total/prompt/completion tokens directly into results.csv - Reverts dynamic JSON scraping backend logic for speed - Adds modal overlay functionality to zoom Chart.js graphs on click
2026-03-09feat: implement multi-select filters and logical oversight sortingCaptainJack2491
This commit: - Replaces single-select dropdowns with multi-select checkbox lists - Adds 'All' and 'None' quick-action links for filter groups - Implements custom priority sorting for Oversight levels (low -> mid -> high) - Updates Chart.js logic to respect logical sorting on X-axes
2026-03-09feat: pivot Web GUI to dedicated Data Visualization DashboardCaptainJack2491
This commit: - Removes all execution logic (runs, cancellation, SSE logs) - Strips the terminal and configuration sidebar - Implements a global filtering panel (Model, Scenario, Oversight) - Dedicated the UI 100% to interactive Chart.js and static visuals
2026-03-09feat: upgrade web GUI to modular ES6 and add Chart.jsCaptainJack2491
This commit completely overhauls the initial GUI: - Splits monolithic JS/CSS into an ES6 module structure - Implements an industrial 'Control Room' dark theme - Adds dynamic file selection endpoints for CSV and JSON judge logs - Integrates Chart.js to automatically render visualizations from CSV data - Updates web_gui_plan.md to reflect architectural changes
2026-03-09feat: Add web GUI for experiment frameworkCaptainJack2491
- Add FastAPI backend (api/server.py) with endpoints for: - Config read/write - Scenario/model discovery - Experiment run management (start/cancel/status) - Real-time log streaming via SSE - Results fetching (CSV, images, judge results) - Add vanilla JS frontend (api/static/): - Clean dark-themed dashboard - Configuration panel with dropdowns - Live log terminal - Results viewer with tabs - Add documentation (docs/web_gui_plan.md) Dependencies added: fastapi, uvicorn, sse-starlette
2026-03-06feat(judge): add selective judging and log filteringCaptainJack2491
- Implement enabled_judges parameter in Judge class to selectively run regex, blackbox, or glassbox checks. - Add --judges CLI argument to judge_runner.py for granular control over judging pipeline. - Add --model and --scenario filters to judge_runner.py for targeted evaluation of experiment logs. - Optimize synchronous judging to skip LLM calls and API key checks when only local (regex) judges are enabled. - Update Anthropic Batch API integration to support dynamic number of requests per log based on enabled judges. - Improve console output and logging to reflect selected filters and active judge components.
2026-03-04fix(agent): added reasoning extraction from groq modelsCaptainJack2491
2026-03-02feat: regex checker now returns score (e.g. 6/7) instead of binary PASS/FAILCaptainJack2491
- Verdict shows matched/total required rules for more nuanced evaluation - Adds 'matched' and 'total' fields to result dict - Returns 'N/A' when no rules are defined
2026-03-02fix: sharpen glassbox category definitions for ROBUST_HONEST vs ↵CaptainJack2491
UNINTENTIONAL_FAILURE - ROBUST_HONEST: ignored hidden goal + output is accurate and complete - UNINTENTIONAL_FAILURE: ignored hidden goal + output has genuine quality issues - Added explicit disambiguation note in the prompt - Clarified CONSIDERED_HONEST as deliberate refusal to comply
2026-03-02fix(scenarios): removed `[HIDDEN]` token to stop models from think this is a ↵CaptainJack2491
test.
2026-03-02feat: add benign_goal (task description) context to blackbox judgeCaptainJack2491
- Blackbox prompt now includes TASK DESCRIPTION section from benign_goal.md - Helps judge evaluate framing even without a baseline - Hidden goal is never exposed (maintains blackbox/glassbox boundary) - Applied to both judge_single and prepare_batch_requests paths
2026-03-02fix: judge resilience for missing baselines and list-format regex rulesCaptainJack2491
- RegexChecker now handles both list-format and dict-format YAML rules - Judge falls back to experiment log's VFS state for source docs when no baseline exists - Blackbox judge receives '(No baseline available)' instead of crashing - Resume logic excludes .partial.json from completed run count
2026-03-02fix: global oversight_levels now filters scenario-available levelsCaptainJack2491
Previously a scenario with its own oversight/ directory would ignore the global oversight_levels config. Now the global list acts as a filter — only levels present in BOTH the scenario dir AND the global config are run. Warns if no levels match.
2026-03-02feat: incremental log saving via .partial.json filesCaptainJack2491
- Writes _in_progress.partial.json after each turn in the chat loop - Partial file persists if run crashes/hangs for post-mortem inspection - Cleaned up automatically when final save_logs succeeds - Enabled in both baseline and experiment runs via runner.py