# Execution Log: Phase 2 - Scripting

## Task 2.1: Skeleton & Agnostic Setup
### Deskripsi
Membangun struktur file `benchmark_extraction.py` dengan logika inisialisasi API (*Client*) yang bersifat *Agnostik Provider* (dapat beralih antara Alibaba DashScope dan OpenAI).

### Langkah-langkah Eksekusi
1. Mendefinisikan variabel lokal `TESTING_PROVIDER = "dashscope"` dan variabel pendukung `TESTING_MODEL_OVERRIDE = None`.
2. Menyusun `PRICING_MATRIX` berupa kamus harga tarif dasar per 1 Juta Token untuk model seperti `qwen3-30b-a3b-thinking-2507` dan `gpt-4o`.
3. Membangun fungsi kondisional `get_llm_client_and_model()` yang cerdas mendeteksi *provider* mana yang aktif dan mengambil kunci spesifik dari berkas `.env` yang ada, memformulasikan klien API tanpa bentrok.

### Status Eksekusi
✅ Berhasil

---

## Task 2.2: Context Assembler
### Deskripsi
Menduplikasi secara persis logika persiapan konteks yang akan dimakan oleh model di dalam `ingestion.py`.

### Langkah-langkah Eksekusi
1. Mendeduplikasi `parent_id` dari seluruh blok `retrieval_results.json`.
2. Mencomot string utuh berdasarkan *ID* dari `_chunked.json`.
3. Melakukan injeksi pembukaan 1500 huruf dengan *header* `--- BAGIAN RELEVAN: METADATA & JUDUL ARTIKEL ---`.
4. Mengukur *Input Token* terhadap teks yang sudah dirakit menggunakan modul `tiktoken` dengan enkoder `cl100k_base` (maksimal 25000 karakter).

### Status Eksekusi
✅ Berhasil

---

## Task 2.3: LLM Execution & Costing
### Deskripsi
Pemanggilan LLM lewat fungsi *production* `extract_pillars_with_llm` dan kalkulasi Biaya Aktual Eksekusi.

### Langkah-langkah Eksekusi
1. Melewatkan *instance client* (yang *Agnostic*) bersama dengan batas `api_semaphore` ke *engine* ekstraktor LLM.
2. Mencatat metrik kembalian murni (Latensi, Input Token, Output Token).
3. Merumuskan fungsi `calculate_cost()` yang mengeksekusi operasi aritmatika berdasarkan tabel `PRICING_MATRIX`.

### Status Eksekusi
✅ Berhasil

---

## Task 2.4: Artifacts & Markdown Logger
### Deskripsi
Membungkus hasil penguraian JSON terstruktur, visualisasi bacaan bagi tim QA, serta tabel *Cost Log*.

### Langkah-langkah Eksekusi
1. Pembuatan generator *Markdown* vertikal `create_human_verification_md`.
2. Penulisan log berformat *append-only* ke dalam matriks: `performance_matrix_extraction.md`.
3. Memperbarui tabel matriks untuk menampung dua kolom krusial: `MODEL` (memberi tahu klien apa yang dipakai saat baris itu dicetak) dan `COST ($)` (menunjukkan dolar yang terpotong untuk ekstraksi tersebut).

### Status Eksekusi
✅ Berhasil
