# Agent Instructions for Jint Jint is a JavaScript interpreter for .NET. It parses JavaScript using the Acornima library (AST), then interprets it directly — no bytecode generation or DLR usage. The pipeline is `Acornima parser → AST → interpreter → runtime → interop`, each AST node wrapped once in a `Jint*` interpreter class that `Engine` walks; the three stages, those wrapper classes and what they return — `Completion` for a statement, `JsValue` or `Reference` for an expression — are in [`Jint/Runtime/Interpreter/AGENTS.md`](Jint/Runtime/Interpreter/AGENTS.md#the-execution-pipeline). This is the canonical instruction file for every agent working on this repository; `CLAUDE.md` imports it. Target and compare work against the **`main`** branch, which is also the PR target. ## How these instructions are laid out This file is the entry point and is kept small: it holds what every agent needs before its first edit, whatever that edit turns out to be. Everything else lives in an `AGENTS.md` beside the code it governs. **Read the file on the row matching what you are about to do, before you touch that code.** | If you are about to… | Read first | What is in it, and what a violation costs | | --- | --- | --- | | change a signature or observable behaviour under `Jint/`, or anything outliving one evaluation — `Prepared`, `Options`, a snapshot, the event loop, an `*Async` entry | [`Jint/AGENTS.md`](Jint/AGENTS.md) | The key runtime types, the namespace map, the engine-source conventions (type co-location, the unsigned-cast bounds check, the code patterns, visibility), and where the frozen-contract table lives. Cost: a silent breaking change for embedders, or one engine's state leaking into another through a shared `Prepared