Views
No views yet

PLDI_EVALUATION=1 environment variable to all evaluation scripts to handle this year discrepancy correctly.Please re-download the repository to get the latest scripts.curl -LsSf https://astral.sh/uv/install.sh | sh1# Clone repository
2git clone https://github.com/spreadsheethurts/spreadsheethurts.git
3cd spreadsheethurts
4# Note: Ensure you have the latest version for 2026 compatibility
5
6# Install dependencies
7uv sync1# Run the following in the spreadsheethurts project root
2# 1. Download dataset from Huggingface
3mkdir -p volume/redis/data
4wget https://huggingface.co/spreadsheethurts/dataset/resolve/main/dump.rdb -O volume/redis/data/dump.rdb
5
6# 2. Install Redis to store dataset and postgresql to store application intermediate and final results
7docker compose up -d
8
9# 3. Verify dataset loading (wait ~30s on first run)
10# Expected: Approximately 7M, 6M, and 10M keys distributed across DBs
11docker exec -it spreadsheethurts-redis-1 redis-cli info keyspacecounterintuitive app which use LLMs , you'll need to set up your API key. Copy .env.example to .env and fill your API key:1cp .env.example .env
2# Open .env and replace with your actual provider (Gemini-2.5-flash is Recommended)src/wizard/
├── features/ # Discovered typecasting features for each spreadsheet
│ ├── calc/
│ ├── excel/
│ └── gsheet/
├── classifier.py # Equivalence class checking
├── argumentation/ # Data argumentation
├── app/
│ ├── rule/ # Decision tree construction for each spreadsheet
│ │ ├── calc/
│ │ ├── excel/
│ │ └── gsheet/
│ ├── counterintuitives/ # Intra-spreadsheet application
│ └── compatibility/ # Inter-spreadsheet applicationbin/typecast_eval.py1export PYTHONPATH=src
2
3# Basic evaluation
4uv run bin/typecast_eval.py calc --size 1000
5
6# Parallel processing for large datasets (adjust batch-size according to your CPUs, larger batch-size for better CPUs)
7uv run bin/typecast_eval.py excel --parallel --batch-size 10000
8
9# Re-validate from previous discrepany report
10uv run bin/typecast_eval.py gsheet --from-reportbin/counterintuitive.py1export PYTHONPATH=src
2
3# stage 1: Generate candidates (adjust batch-size according to your CPUs)
4uv run bin/counterintuitive.py generate calc --batch-size 10000
5# Populates the 'mutation_records' table in the counterintuitive database.
6
7# stage 2: Analyze (online mode with real-time LLM)
8uv run bin/counterintuitive.py analyze calc --online --max-concurrent 50
9# Populates the 'analysis_results' table and 'counterintuitive' view.
10
11# One-shot: Run both stages
12uv run bin/counterintuitive.py run-all calc --batch-size 10000
13
14# View database statistics
15uv run bin/counterintuitive.py statsbin/compat.py1export PYTHONPATH=src
2
3# stage 1: Collect typecasting data
4uv run bin/compat.py collect calc excel --redis-db 14 --parallel --batch-size 10000
5# Populates the 'typecasting_results' table in the compatibility database.
6
7# stage 2a: Find discrepancies
8uv run bin/compat.py diff calc excel
9# Populates the 'interp_discrepancies', 'interp_discrepancy_instances', 'rec_discrepancies', and 'rec_discrepancy_instances' tables.
10
11# stage 2b: Find safe intersection
12uv run bin/compat.py intersect calc excel gsheet
13# Populates the 'portability_summary' and 'safe_inputs' tables in the compatibility database.
14
15# View statistics
16uv run bin/compat.py stats