Repository path: CLAUDE.md · rendered 2026-09-09
CLAUDE.md — schema, conventions, environment (read every run)
Project: lit-trans, a long-running, largely autonomous research-and-practice project on
literary translation. The charter is PROJECT.md; it outranks this file — re-read it whenever
grounding is needed, and its §11 carries every direction Tom has given. Session flow lives in
continue-prompt.md; the baton is NEXT.md; the allocation of sessions is wiki/plan.md.
The hand-off is structured (rebuilt 2026-09-04, S244, on Tom's direction —
wiki/reassessment-2026-09-04.md; earlier rebuilds S032 and S082). NEXT.md names the next
session's assignment (a workstream W1–W5, a session type T/H/C/E/R, a step); wiki/plan.md
carries the workstreams, their finish lines, ordered steps, the rotation rule and the ledger;
wiki/backlog.md holds aged items (review-or-retire at 10 sessions); wiki/method-notes.md the
live procedural rules (ids permanent; full history in wiki/archive/). Run
python3 tools/check_state.py at session start and again before hand-off — it prints the
assignment and every violation, enforces the byte caps on the cold-start pages, and exits non-zero
on a breach. Instrument work is never a session's unit; a tool repair is a timeboxed gate.
The subject rule (wiki/tracks.md): a unit whose question is about the project's own
statistics, instruments, raters, verifiers, censuses or published figures is method work — a gate,
never the unit — unless a published figure is false or a named deliverable is blocked. The family
rule (wiki/backlog.md): a result's successor question goes to its handbook entry's Open
section, never straight into the next session. Test sentence: what does this unit teach about
translating literature or evaluating translations?
Environment record (first verified 2026-07-23; re-verify only when something breaks)
- Git: identity
Claude <noreply@anthropic.com>; remoteorigin→github.com/tkgally/lit-trans(via the harness's authenticated proxy). Sessions develop on harness-assignedclaude/...branches, never onmain. Land via push → PR → squash-merge (GitHub MCPmerge_pull_request,merge_method: "squash") → confirmorigin/mainadvanced. - GitHub operations: no
ghCLI; use the GitHub MCP tools (mcp__github__*, via ToolSearch). - OpenRouter: key in env var
OPENROUTER_API_KEY— never print, log, or commit it. Endpointhttps://openrouter.ai/api/v1. Billed cost per request via"usage": {"include": true}; the key-usage endpoint (GET /api/v1/key) lags and is shared with non-project spend, so per-request costs are the ledgered figure and the delta is an observation (note (bso)). - Network: outbound HTTPS through a pre-configured proxy (CA bundle
/root/.ccr/ca-bundle.crt); plaincurlworks; WebFetch/WebSearch available. Aozora Bunko files are Shift_JIS (cp932). - Runtime: ephemeral Linux container per session; Python 3.11, stdlib only. Unlanded work is
invisible to the next session — merge before stopping. The shell locale is
POSIX/C(noLANGset): plainwc -won a line of pure non-Latin-script text (verified on Cyrillic) returns 0, not an undercount — silently, no error. Count non-Latin source words withLC_ALL=C.UTF-8 wc -wor Python'slen(text.split()); both agreed exactly onverter's 14,293 words where barewc -wreturned 2,872 (S256). Not audited against past sessions' published word counts — those may have used Python already; this is a tooling note, not a claim any figure is false. - Lead agent: an Anthropic Claude model (Sonnet 5 from 2026-09-04). Because it shares training
priors with any Anthropic panel model, the panel is non-Anthropic (
config/models.md). Lead judgments areinternal-judgment-onlyunless anchored (charter §2.2, §5). Lead translations are first-class artifacts (charter §3, A4): the lead translates as a labelled subject, at no cost, never judging its own output; the panel judges blind.
Page conventions
Typed pages — everything under wiki/, workshop/, framework/, config/, private-texts/ —
begin with front matter:
---
type: <vocab below>
id: <unique kebab-case id>
status: <vocab below>
created: YYYY-MM-DD
updated: YYYY-MM-DD
links: [repo/relative/path.md, ...] # optional
senses: [sense-id, ...] # required on evaluative pages and handbook entries; ids from wiki/goodness-senses.md
internal-judgment-only: true # present when unanchored judgment is asserted
provisional: true # present on self-assessments made before Tier D calibration passed
translated-by: lead | P<n> | <name> # required on type: translation (charter §3, A4)
contamination: none | suspected | high # required on type: translation, with a one-line basis in the body
pairs: [FA→EN, ...] # required on type: entry — the pairs the entry is evidenced on
track: T1..T5 · budget · used · consecutive · last_worked # legacy fields on type: arm (no new arms are constituted)
---
Root files (PROJECT.md, CLAUDE.md, continue-prompt.md, NEXT.md, log.md, README.md) and
journal/ entries carry no front matter.
- type:
anchor(Tier 1) ·source(Tier 2) ·decision·conjecture·claim·result·essay·theory·open-question·regime·experiment·translation·manifest·program·typology·ledger·note·arm·entry(a handbook entry,framework/v0.3/) - status:
draft·open·active·frozen·resolved·retired·superseded·untested·pilot·blocked - ids: decisions
D-YYYYMMDD-NN· regimesR##· experimentsE-YYYYMMDD-slug· resultsRS-YYYYMMDD-slug· anchorsA-slug· sourcesS-slug· translationsT-<work>-<regime>-v<N>· handbook entriesHB-<slug>· armsARM-<slug>(legacy)
Rules that bind every page (from the charter):
- Every evaluative claim about a translation cites anchor pages (
wiki/base/anchors/,wiki/base/sources/) or carriesinternal-judgment-only. Internal-only judgments are never sole support for a handbook recommendation. - Until Tier D calibration has passed (state in
config/models.md), every workshop self-assessment and every panel score carriesprovisional: true. - Every evaluation and every handbook entry names the goodness senses it invokes (
senses:). - Handbook guidance carries a traceability note to workshop or poetics evidence, or is marked
untested; every entry declares the pairs it is evidenced on (D-20260724-04). - Copyright hygiene: brief attributed excerpts only; log every consultation of copyrighted
material in
wiki/base/consulted.md; never store a copyrighted text whole. Tom-provided texts and all their derivatives stay insideprivate-texts/. - Model slugs are configured only in
config/models.md; specs and tools refer to panel roles; run records log the resolved slug as provenance. wiki/index.mdandworkshop/translations/INDEX.mdare generated: runpython3 tools/build_index.pyafter touching pages; never hand-edit them.wiki/method-notes.mdids are permanent — cited verbatim in frozen designs and results, never renumbered or reused; the full set resolves inwiki/archive/method-notes-S032-S243.md.- Translations (
type: translation) carrytranslated-by:andcontamination:, and a## Translator's logfrozen before any evaluation is designed — decisions and alternatives, not quality claims. The lead never judges its own translation (charter §5). - Byte caps on the cold-start pages (
tools/check_state.pyCAPS) are part of the design: when a page hits its cap, move the oldest material towiki/archive/orconfig/archive/whole and link it. Nothing is ever deleted from the record; it is moved.
Contamination: measure before choosing (standing rule, 2026-07-26; compacted S082)
Measure the lead's contamination on the candidate material before designing anything on it,
never as a diagnostic inside a design: one tools/dependence_check.py call per candidate unit,
before any locus is selected and before anything is translated. Report the longest common run
and the shared 7-gram count — run length alone has failed as a proxy three times. A
contamination: declaration without a measurement is a placeholder. The lead is never the
independent third translator where a design's validity turns on independence from any published
rendering of the same work; the boundary is measured overlap, not the comparator's fame
(obscurity is not protective — three measurements against, none for). A lead re-rendering is not
an independent second opinion of anything: across sessions the lead matches itself at up to 37
contiguous tokens, above its record against any published human translation (note (bhb)). The
evidential history lives in RS-20260728b-forced-run-ru, RS-20260730f-recall-floor and the
archived notes; import it, do not re-derive it. Also confirm the published comparator exists, in
reach, before choosing the work (note (bmw)).
Materials: freely available first (2026-07-25, charter §7, A8)
Public domain, open-licensed, freely readable online; prefer sources where the original and a
translation are both free so a reading can be complete. Requests to Tom are exceptional: one
specific thing, named, with why it is wanted and what is lost without it, recorded in
wiki/base/wanted.md with access details verified from an actual tool result, surfaced once in
NEXT.md §For Tom. No standing wish-list.
Non-Anglophone sources (2026-07-25, charter §4, A2)
The Tier 2 base may not be Anglophone-monolingual. Prefer reading a source in its original language; record the language read; flag reliance on an English summary.
Reporting to Tom (2026-08-11 — the clear-reports skill)
The journal, the "For Tom" block of NEXT.md, the end-of-session summary, PR titles and
descriptions, and wanted.md requests are written for Tom as reader and follow
.claude/skills/clear-reports/SKILL.md: self-contained plain English, the project context stated,
every internal term glossed at first use, dates rather than session numbers, the translated prose
quoted, and what needs him — or that nothing does. Wiki pages, log.md and the technical
sections of NEXT.md keep their internal precision.
Budget discipline
USD 5.00 per calendar day (UTC), all sessions combined, soft cap, self-enforced; ledger and method
in config/budget.md. Pre-flight estimate from the max_tokens the request actually permits
(note (abc)) and from seat prices read from the API in the same session (note (bsw)); record
per-request actuals summed across attempts (note (brw)). Money has never been the binding
constraint; session depth is. Lead translation is free and never ledgered.
Directory map
See PROJECT.md §9. Additions since: wiki/plan.md (allocation) · wiki/map.md (the pages a
session needs) · wiki/archive/ and config/archive/ (retired ledgers, intact) ·
framework/v0.3/ (the problem-indexed handbook; v0.2/ is the frozen record) ·
workshop/translations/INDEX.md (generated directory of translations) · runs/ (raw outputs).