# English fact contract, 2.1 (draft entries for `contracts/source_contract_en.md`)

The English 2.1 text may use only the facts and numbers below. Don't change or round the numbers, and keep the qualifiers. Sources: `experiments_en/2_1_stateless/` and `experiments_en/2_1_workspace/`, run 2026-10-14.

### B1. 2.1: a chat's "memory" is the whole history sent again (`experiments_en/2_1_stateless/`)

- AI Builder Space API, gemini-3.8-flash, temperature 0 (chapter wording: "set to give the same answer every time"), 8-turn conversation:
  - Turn 1 pastes a 328-word bundle of memo transcripts (W01, W07, W10, W12, W16, W17) and says "On my team, Saoirse handles deployment and Jaxon is on the backend."
  - Each later turn asks one short question (3–9 words).
- Billed input tokens per turn: 418, 692, 754, 770, 817, 871, 899, 962. Turn 8 typed 9 words ("What's the name of the colleague who handles deployment?"), billed 962 input tokens, and answered correctly: "**Saoirse**".
- The same question with no history: 24 input tokens; answer: "I don't have access to your team or company information. Could you provide more context or check your internal team directory?"
- Replicated on deepseek-v4.1-flash: from turn 2 on, billed input climbs from 1,253 to 1,630 (turn 8 answer: "**Saoirse** handles deployment."); with no history it can't answer either (434 input tokens). Don't quote deepseek's turn 1 as the start of the range: it billed 8,216 because the gateway ran an extra tool round (see the hedge below).
- The bare-"hi" baseline is reused from the Chinese run (language-neutral): gemini-3.8-flash 2, gpt-5 7, grok-4-fast 185, deepseek-v4.1-flash 415. gemini 2 and deepseek 415 were re-confirmed 2026-10-14.
  - So some models' windows hold hundreds of tokens you never typed. In general we can't see who added them or what they are; the bill only shows they are there.
  - Optional, hedged only: on this gateway, deepseek's route comes with a web-search tool the platform adds (the model says "I only have access to web search"; its reply to "hi" offers to search the web), so at least part of those 415 tokens appears to be that tool's description. Not a logged observation; don't state it as fact.
- **Agent tool context usage (DSH screenshot).** DeepSeek Harness web UI, model DeepSeek-V41-Flash. Same transcripts, 6 turns. Session totals at the bottom of the UI: 18.4K, 37.1K, 55.9K, 74.9K, 94K, 113K.
  - Turn 1 typed 343 words and used 18.4K tokens: the tool put its own system prompt and tool descriptions in the window.
  - Each later turn typed 3–9 words and cost another 18.7K–19.2K tokens (about 19K).
  - The cache hit rate climbed every turn, from 66% to 94% (not from 0%: the tool's fixed prefix was already cached). The context meter showed 2% throughout (1M window).
  - Turn 6 answer: "**Saoirse**."
  - Figure: `assets/ch02_01_en/dsh_usage.png` (crop of `dsh_turn6.png`; boxed: "Usage 19.2K tok", "113K tok · Cache hit 94%", "2%").
- Token rule of thumb consistent with the data: 328 English words came to 418 tokens, including a short system prompt.

### B1 (cont.). Chat box vs workspace (`experiments_en/2_1_workspace/`)

- **Chat box.** gemini-3.8-flash, one call, only the request: "Write me a Python script that uses the AI Builder Space speech recognition API to transcribe the voice memos in the memos/ folder to text, and saves each one as a .txt file with the same name in transcripts/. The API key is in the environment variable AI_BUILDER_TOKEN." The generated code was run once, unmodified.
  - 3 of 3 failed, 0/5 transcripts each.
  - All 3 guessed a domain that doesn't exist: two guessed `api.ai-builder.space`, one `api.ai-builder.run` (real: `https://space.ai-builders.com/backend/v1`). Auth header, upload format and output naming were right.
  - One script's own comment: "Base endpoint for AI Builder Space (adjust base URL if using a custom gateway)". Two of three read an optional URL override from an environment variable.
  - Swallowed errors: all 3 caught each file's error, kept going, exited with code 0, and left `transcripts/` empty. Two of them ended by printing "Processing complete." and "Batch transcription completed." The third printed "FAILED" for each file but still exited 0. Going by the exit code alone, all three succeeded.
  - Swapping in the real URL and changing nothing else (not counted as a success): 3 of 3 worked, 5/5 each.
- **Workspace.** A new folder with `memos/` (5 recordings) and an API doc `API.md`. Same request plus "You are working in a folder: you can read files, run commands, and look at the results." Antigravity CLI, model gemini-3.8-flash-high, one turn, no human input.
  - 3 of 3 succeeded first time, 5/5 each, in 98.6–251.5 seconds.
  - All 3 used the endpoint written in `API.md`, set up an environment, installed dependencies, ran the script, and reported checking the output before finishing.
  - In each run the tool's sandbox blocked one attempt to run the script, and the agent found a way around it unaided.
  - The agents' scripts don't swallow errors: a failed request stops the script with a non-zero exit.
  - No key was written to any file.
  - Limits: `API.md` hands the workspace the right address, and the workspace ran on the high-reasoning tier. n=3, one model per condition.
