R8 Finding and reading entries in scans

How the research finds a book, gets its images, who reads the images and how what was read is recorded. Describes the research 1.25.2 and 1.26.0 (reading the scans does not change between them). Each rule says what is enforced by the code (the strom command does it or refuses the entry) and what is only a rule of the method (an instruction to the agent that the code does not check). Why gives the reason as the method or the research's code states it.

The procedure in brief:

  1. The book: from the place and time the agent determines the jurisdiction (parish, civil registry office), the archive and the particular book (R8.1).
  2. The images: downloaded only through the archive's downloader, at the archive's pace and under its terms, and only those needed. Where the archive does not allow automated download, a person saves them (R8.2).
  3. Browsing: a book or a range of images is read by readers (strom read): separate agents with a clean context, each with a batch of images and the whole question (R8.3). strom tunes how reading goes by itself (R8.4).
  4. Own look: every entry that will be cited the main agent reads itself, from a crop at full resolution (R8.5).
  5. Recording: a source with a clip and a transcription, facts only from what was read with certainty, and the search even without a find (R8.6).
  6. Certainty: the degree of certainty by who read the entry and how; a hard spot needs a second, blind reading (R8.7).

Who reads what, in brief and on the example of one entry, is said in R8.9.

Note: reading by a model is not one hundred per cent. Old handwriting is read by an AI model, and the accuracy of reading depends on the model. The method wants the strongest model for old handwriting, never fast or cheap reading. Readers read with the model for handwriting (model.vision, otherwise strom read --model), and the size of the views follows the model (R8.3.2). The size of views can be calibrated (strom media calibrate, confirmed by a person), and strom tunes reading separately for each agent and model (R8.4). Even so the model makes mistakes: in names, house numbers, dates and places. That is why a reader gives its certainty in per cent for each name, "illegible" beats a guess, a hard spot gets a blind second reading, different readings are a conflict, and the method wants Proven only after the main agent has read the entry itself (R8.7). Principle of the project: important facts should ideally be verified by a person as well. The Strom app shows the excerpt of the entry beside the transcript at the source (A3.3). A transcript checked by a person can be marked Transcription verified (A3.1.1; how the research counts it: R3.5.1). A wrong fact can be corrected in the app; an edit of a fact backed by a record becomes a conflict (S2). Reading by a model is only a proposal: a transcription a person wrote or confirmed is changed by nobody but a person, not even by a new reading (R3.4.1).

R8.1 The book first

Before anything can be proven, it must be clear where the records are. The agent determines the jurisdiction of the place at the time, the archive and the particular book (record set) with access: an address or a reference number.

  • Method only, in this order:
    1. the place and time determine the jurisdiction (strom place jurisdiction L… --kind parish|civil|manor|district --from --to). A place read only uncertainly gives no parish or book until it is certain (R8.5.2);
    2. the archive (strom repo add, with its terms of use) and the book (strom recordset add … --places --years --kinds --access --url). The archive's downloader finds books by itself: strom fetch <downloader> --find "<place>" --years 1780-1850;
    3. a catalogue is used as a person would: a search or the page of one book, never walking record numbers one after another;
    4. where it was searched, even without a result, is recorded (strom search add … --method web|catalog).
  • Indexes, catalogues and online trees are only a pointer to where to look (R3.3).
  • Done when the book with access exists and the task of proving points to it (--where B…).
  • Why: borders, parishes and names changed; a village could belong to different parishes in different centuries. Archives block walking record numbers. A recorded fruitless search keeps the next session from searching the same catalogues again.
  • Controls: terminal (agent).
  • Since: research 1.0.0

R8.1.1 An index before browsing

  • Enforced by the code: when a book is to be browsed image by image (strom read, strom fetch) and an index is known for the book's parish, years and kind of record that nobody has searched for it yet, strom names it before starting anything, with the command that reads it.
  • Limits: from 30 images; a different threshold (or never) is set by a person's answer to the question index.first (strom media calibrate --questions). In a conversation it only says so; in a strom run session it refuses the reading until the agent gives --no-index.
  • Why: according to a comment in the code, from roughly 20–40 images an index pays more than browsing. A case from real research: readers read 61 images of a marriage book while the parish index lay downloaded.
  • Since: research 1.14.0

R8.1.2 A lesson about a book

A peculiarity of a book, an archive or a place is recorded on it as a lesson. Whoever works with the book next time sees it.

  • Enforced by the code:
    • a lesson is one sentence, at most 200 characters; of a longer text the beginning forms the lesson and the rest goes into the details (at most 2000 characters);
    • a lesson belongs to a book, an archive or a place that exists in the research (--on B…|R…|L…);
    • a task shows the lessons of the books it searches in (strom task show).
  • Method only: this is where a book's calibration belongs, two years per page, a hand that writes 7 like 1. A note in a task or in the diary is not such a place: nobody would see it at the book.
  • Why: a book's peculiarity should be seen by everyone who opens it next time (the method “Lessons belong where they apply”).
  • Controls: terminal: strom lesson add "<poučení>" --on B…, strom lesson list, strom lesson edit.
  • Since: research 1.0.0

R8.2 Images only through a downloader

Images from an archive are downloaded only by strom, through that archive's downloader (connector) and at its pace. The agent never downloads by itself: not by a command, a script or its own browser.

  • Enforced by the code: every way to an archive follows the strictest known level of its terms:
LevelWhat strom does by itself
allowedcatalogue and images, at the service's pace
restrictedcatalogue; images only with a person's permission for the archive: slowly, or through their browser, otherwise by hand
by hand onlycatalogue; images only by hand
forbiddenno automated access
unknownas restricted
  • Limits (enforced by the code):
    • the level is the strictest of: the downloader's reading of the terms, the archive's record in the research, the terms shipped with strom, the strictest level strom has ever seen at the server, the robots.txt file and a refusal by the server;
    • only a person may make an archive milder, give permission and accept a milder reading by a downloader; an agent may only make an archive stricter;
    • pace: without a figure from the service at least 2 s between two requests to a server. With the permission "slowly" at most one image in 10 s and at most 120 an hour (a person's pace), unless the person set their own for the server; strom never makes it faster.
  • Method only: download only the images the task reads, never a whole book "just in case". The book is downloaded by the session that reads it. An archive without a downloader: the agent builds one (strom connector new) by the portal's terms and robots.txt.
  • From research 1.30.0: strom connector test --fetch warns when one image costs more than 10 requests (tiles, most likely), says how long an image and a book take at the archive's pace, and sends the agent to look first for the portal's link to the full image, a download of the whole book or the full image through IIIF; tiles only as a last resort.
  • From research 1.31.0: strom fetch says the same once a run, also with a downloader built earlier: from the download's own count (the archive is asked nothing more for it) it says how many requests one image costs, how long an image and the book take at the archive's pace (its number of images, otherwise a book of 200 images), that the download goes on at that pace, for a download in the background how to stop it (strom fetch --stop B…), and what to look for first. The output of --json, strom fetch --status and the brief show it too.
  • Images that the archive does not allow to download automatically are saved by a person into a prepared folder (R6.2.1); an archive's permission: R6.3.1. Browser-only archives, the agent's browser and the whole course: R9.
  • Why: the method wants the terms of every archive kept; a portal whose terms forbid it is not browsed automatically. An archive's hourly cap stops the rest of the work, so whole images first and parts only where an entry needs them.
  • Controls: terminal: strom fetch <downloader> … --images 40-69 --recordset B…, strom allow archive (a person only). App: Awaiting action.
  • Since: research 1.0.0 (downloading only through strom); the levels of terms and a person's pace 1.14.0; an image of tiles reported by strom connector test since 1.30.0, by strom fetch since 1.31.0

R8.3 Readers: who reads the images

A book or a range of images is gone through by readers, not by the main agent. A reader is a separate run of the agent (the same program the research works with) with a clean context. It gets a batch of views and the whole question and writes only its report.

  • Enforced by the code:
    • a reader works in one empty folder outside the research, not in the research's folder;
    • it sees only its views and writes only its report into notes/readings/; it never writes to the research and runs no commands;
    • it reads with the model for handwriting: --model, otherwise the setting model.vision (for Claude Code the default opus);
    • without the agent's personal add-ons (skills, plugins, MCP servers) until a person turns on agent.addons;
    • in a Strom archive (without AI) no readers start.
  • Method only: browsing a book is the readers' work, not the agent's own subagents'. A subagent (strom-scan-reader) reads only crops of found entries. The main agent records the find and the search itself, the search with --by reader.
  • Why: an image stays in the context of whoever opened it; the main agent gets a short report instead of a context full of images. A folder outside the research: a reader must not take over the research's instructions (the files CLAUDE.md, AGENTS.md). The model for handwriting never weaker than the main one: a misread name sends the research to the wrong village.
  • Controls: terminal: strom read B… --images 40-69 --question "…". Run it in the foreground and let it finish (often ten minutes or more).
  • Since: research 1.0.0; the empty folder outside the research and agent.addons 1.14.0

R8.3.1 Batches, readers at once and range

  • Batch: 10 views per reader (--batch, at most 12). A double page read in halves is two views. Batches are as even as possible (11 images: 6 and 5, never 10 and 1).
  • Readers at once: 5 readers at the same time (--parallel, 1 to 10; permanently strom config set read.parallel <n>).
  • Range: at most 200 images in one reading; a list (--images 5-19,21-39) is read exactly as given.
  • Images read before are said by strom at the start; it does not refuse the reading.
  • Why: a reader's cost grows with the square of its batch (an image is paid for in every later turn); ten images per reader cost a third per image compared with fifty. Readers at once give the same readers and requests, only sooner; fewer when the agent's subscription runs out too fast. Hundreds of images in one reading are, according to the code, a mistake, not an intent.
  • Since: research 1.0.0 (batch 10, at most 12); readers at once 1.15.0; the range of 200 images 1.14.0; a list with gaps 1.15.0

R8.3.2 View size and a double page in halves

  • Size (enforced by the code): a view is as big as the readers' model takes it whole: 2000 px on the longer side for newer models (Claude Opus 4.7 and newer, Sonnet 5 and newer, Fable; Codex and OpenCode), otherwise 1568 px. Different only when a person calibrated the size (strom media calibrate) or strom enlarged it for a book (R8.4).
  • A double page in halves: in a blind reading, in a verification task and for an image a reader earlier reported as unclear, the reader gets a double page as two halves that overlap at the gutter (4 % of the width on each side). Only when a half is at least 1.25× sharper than the whole image in one view. Otherwise the double page is read whole; --half both forces halves, --whole forbids them, --half left|right takes only one side.
  • Crop (--crop): only that part of every image, at full resolution. A crop larger than one view is given to the reader in overlapping parts. When a sharper part of the image came from the archive, it is read from that.
  • Why: a bigger image is shrunk by the agent itself before the model sees it, and the thrown-away pixels are paid for by slower reading. A half shows each side sharper; for a nearly square double page the second view would cost more than it brings.
  • Since: research 1.14.0; reading from a sharper part of the image 1.19.0

R8.3.3 What a reader writes

A reader writes its report as it goes, after each image, not at the end. For each image one block with the fields:

FieldWhat it holds
resultfound, nothing, unclear (a possible match that cannot be confirmed)
entriesevery entry that answers the question, word for word in the original language and spelling, where it stands and in which column
illegiblewhat could not be read and where
handthe handwriting: ink, script, language, abbreviations
certaintyfor each name in the entry, how sure the reader is (%)
pagesthe page numbers written on the image
gapspages missing before the image (the numbering jumps)
sectionanother part of the book starts on the image (place, year, kind of record)
  • The reader's rules (strom puts them into the reader's assignment):
    • transcribe only what the question asks for (only page numbers, only the entries of one surname, one entry whole);
    • "nothing" is a valid and valuable result: the reader says what it checked;
    • "illegible" beats a guess;
    • a possible match (an illegible name where the rest fits: age, house, date, parents) is unclear and an entry, never hidden in a nothing block;
    • what the research knows (--context) serves only to recognise the family, never to fill in what was not read;
    • in a blind reading (--blind) an exact transcription without expectations (R3.5).
  • Enforced by the code: an unclear spot from this report keeps a fruitless search from being recorded over the range until someone looks at it closely (R3.6).
  • Why: at an unclear spot the agent must look closely before the range counts as searched in vain; a possible match often hides in exactly what is illegible. A report written as it goes survives an outage: a resumed reader goes on with the images not yet in the report.
  • Since: research 1.0.0; the fields pages, gaps, section, unclear as an entry and "only what the question asks for" 1.14.0

R8.3.4 A reader's time limit and a service outage

  • Enforced by the code: a reader has 5 minutes and 1 minute for each view, at least 6 and at most 15 minutes. When readers of the same agent and model needed more, strom extends the limit: by the last 10 readers that finished or hit the limit (×1.5 after one that finished, ×2 after one that was stopped), never above 15 minutes. --minutes sets the limit by hand.
  • A service outage: a reader whose model service is silent for 150 s after a retry is resumed once where it left off, with the time remaining. If it stays silent, it ends at once; its images are read again later. Such an outage does not make batches smaller.
  • A reader stopped by the limit gave no answer for its images: strom says to look at them oneself, or to read them again with a longer limit.
  • Why: cases from real research: a reader of one crop stood for 15 minutes and the agent waited for it; a reader of one crop ended at the limit of 6 minutes without a result, while the same reading with a limit of 12 minutes was done in 4. A silent service used to run all the way to the limit, and readers without a result made batches smaller.
  • Since: research 1.14.0; resuming after a service outage 1.22.0

R8.3.5 Reading until found

  • Enforced by the code: with --until-found no further reader starts once one reports a find; readers at work finish. strom lists exactly which images nobody read.
  • Limits: only the images read are searched; the search is recorded as --result partial, never as fruitless for the whole range.
  • Method only: only for one particular entry (the baptism, marriage or burial of one person about whom enough is known). Never for all entries of a place or surname, nor where a namesake may come after the find. When the find is not the right one, the rest is read.
  • Why: an image not read is not searched. A namesake is not the person sought (R1.4).
  • Since: research 1.15.0

R8.3.6 Reading a book that is being downloaded

  • Enforced by the code: a book that strom fetch is downloading right now can be read at once. Readers start on the registered images (a batch at a time of 10) and wait for the rest. Images the download did not bring strom lists exactly; they are not read and do not count as fruitless.
  • Why: faster reading; the archive gets the same requests at the same pace.
  • Since: research 1.15.0

R8.3.7 What comes back to the agent

  • Enforced by the code: after the reading the agent gets a short summary: on which images there is a find, on which an unclear spot, what could not be read where there was nothing, and the gaps in the book. With it a ready command strom search add … --by reader with the result found, partial, inconclusive or negative and the gaps in --note. The reports are kept in the research.
  • Images nobody reported and readers that failed are listed separately.
  • Method only: the reports are not read whole, only through strom readings (--match <surname>, --list, one image: strom readings B… --image 57). Each report is recorded at once, before further readers start. Images read before: another question or a blind check is fine, the same question is not.
  • Why: the main agent keeps in its context only what the readers found, not images or whole reports.
  • Controls: terminal: strom readings.
  • Since: research 1.0.0; strom readings 1.14.0

R8.4 Self-tuning of reading

strom measures how reading the scans goes and changes how it reads by itself accordingly. Only towards accuracy or fewer requests to the archive.

  • Enforced by the code, what strom may change by itself:
    • a book read worse than the others, or shown enlarged: the whole image at reading size, a double page in halves, from images already on the computer;
    • readers that lose context, reopen views or give no result: smaller batches and fewer views per call, never below half the default;
    • an archive that hit its limit: whole images first, halves and parts only for candidates;
    • a book from which the portal gave no sharper part: further parts are not offered;
    • images downloaded and never read: only what a task reads is downloaded;
    • each change returns to the default after 60 days without its signal and with new readings.
  • Limits (enforced by the code): never a smaller view, a cheaper model, a reading that could miss an entry, nor more requests to the archive: that is for a person to decide (strom media calibrate --questions). It is decided after a session, never within one: a session goes by the values of its start. It holds separately for each agent and model. Each change is recorded with its reason.
  • Controls: terminal: strom media calibrate --report (how reading went, free), --questions (what a person decides), --reset (back to the defaults); strom config set tune.auto off turns self-tuning off. Calibrating the size of views (strom media calibrate) is a paid reading of the research's own proven records and only a person confirms it. strom doctor, the line after strom's tuning: a change after which reading is worse (it recommends undoing it), or a change after which reading is dearer and no surer (it recommends keeping it).
  • Why: according to the code only so that nothing gets worse by it: a change may add accuracy or save requests to the archive; what could take away accuracy or burden the archive is a question for a person. strom doctor recommends keeping a dearer change because it went toward accuracy and certainty is measured only by the uncertain places: a closer view can read more precisely even when the uncertain places do not decrease.
  • Since: research 1.14.0
  • From research 1.29.0: strom doctor says for a dearer change why it recommends keeping it.

R8.5 The main agent's own reading

An entry that will be cited the main agent looks at itself at full resolution. Old handwriting is dealt with by the strongest model, never by fast or cheap reading.

  • Enforced by the code: images are opened only as views of strom media view (a file in .strom/views/). A whole image has at most 1400 px on the longer side: for finding an entry, not for reading. A half, a crop and parts have the size the model takes whole (1568 or 2000 px). At most 12 images and 24 views per call.
  • Method only, the procedure:
    1. find: the whole image with --grid (a grid in tenths), read off where the entry is;
    2. crop: --crop x,y,width,height (fractions of the image) or --half left|right; transcribe only from a crop or a half at full resolution. Faded ink --contrast, a page sideways --rotate 90, a page in parts --split 2x2; the whole view unclear: --half both before saying "not found";
    3. after about 30 views record what was found before opening more; a view that dropped out of the context is not reopened, the notes hold;
    4. a crop says "enlarged": the scan has no more detail. A sharper part can be downloaded only through a downloader that can do it.
  • Page ↔ image: strom recordset calibrate B… --point 57=112 (measured on the image, never guessed); then strom media view B… --page 112.
  • Why: a reduced whole image is enough to find an entry for half the tokens, but not to read it. Every view stays in the context that opened it. Look at as few pixels as the question needs.
  • Controls: terminal: strom media view B…:57 --grid, strom media view B…:57 --crop 0.05,0.40,0.45,0.18.
  • Since: research 1.0.0 (views, --grid, --crop, --contrast, --rotate); sizes 1400/1568/2000 px, --split, the limits per call and about 30 views 1.14.0

R8.5.1 A name and place for the next search

  • Method only: a name or place on which the next search depends (surname, place of birth, parish) is read again on a crop at full resolution before it is recorded. What stays uncertain is recorded as uncertain and said so.
  • Why: a misread name sends the research to the wrong village.
  • Since: research 1.4.1

R8.5.2 An uncertainly read place is a lead

  • Method only: a place read uncertainly (the readers differ, [?], nothing else confirms it) is a lead, not a place. No parish, book or task follows from it until it is certain: an own look at the crop, the book's index, a gazetteer or cadastre (the village's parish from them, never from today's municipality). If it stays uncertain: a hypothesis with the readings as variants (strom hypothesis add) and a task that checks it (--about H…).
  • Why: a task that took an uncertain place as certain would search in a book of another parish.
  • Since: research 1.14.0

R8.6 Recording a find

A found entry is recorded at once: the source with a clip, a transcription and the place in the book, the facts from it and the search that found it.

  • Enforced by the code: strom batch --file notes/<file> records all lines or none; it says all wrong lines at once.
  • Method only:
    • a source from a scan gets --clip (the crop in which the entry was read), --transcript (the words of the entry line by line, what was not read [?]) and --locator (folio, page, order of the entry); in detail R3.4;
    • an entry in a language or script other than the language of the research gets, beside the literal transcription, a translation into the language of the research (--translation), from research 1.28.0;
    • into the fields (--date, --house, --age, the name) only what was read with certainty. What is uncertain goes into the transcription with [?] and into the fact's note ("house 21 or 27"). What a reader reported as illegible stays illegible until the agent reads it itself. An empty column is empty; nothing is filled in by what is usual;
    • a name read only in part keeps the sure letters (Anna /Kr[?]ková/), a date with an uncertain day keeps the month;
    • the search is recorded even without a find, with the exact range of pages; pages missing from the book are not searched (R3.6).
  • Enforced by the code: a fruitless search over a spot a reader reported as unclear is refused by strom (R3.6). A missing clip or transcription is pointed out.
  • Why: the Strom app shows the entry cut out of the scan beside its words. By the sure fields the person is searched for further; a name with its sure letters can still be found. The most expensive mistake is to search the same book twice.
  • Controls: terminal (agent). App: the source page shows the excerpt and the transcript (A3.3).
  • Since: research 1.0.0; the clip 1.1.0

R8.7 Certainty and verification of what was read

The degree of certainty of a fact from a scan depends on who read the entry and how.

  • Method only: Proven only when the main agent read the entry itself and the entry states the fact directly. A conclusion that rests on one hard cell (a house number, an age, a name) needs a second, blind reading before Proven; different readings are a conflict, not a choice (R3.5).
  • Enforced by the code: Proven needs a citation from a source that is not weak, with primary information (R3.2). The code does not check that the main agent read the entry itself, nor the blind reading.
  • A document read by the research's readers: one reader → Possible; two blind readers agreeing → Probable (R3.5.1). Degrees of certainty: R3.1.
  • Why: the second reader must not know the expected value, otherwise it would "read" it. A fact goes above Probable only when two independent readings agree.
  • Since: research 1.0.0; reading a document by the research's readers 1.18.0

R8.8 Reading a document from the app

A photo, scan or PDF of a document can be given from the app to the research's agent to read: a transcription, a translation and an explanation. One reader can read it, or two independent ones; two are compared, and the result shows the places where they differ. Nothing read goes into the tree without confirmation.

  • Enforced by the code:
    • input: a photo, scan or PDF; several files are pages of one document; at most 10 pages and 50 MB per file. A page whose shorter side has fewer than 800 px is too small and the readers do not get it;
    • 1 reader (faster, cheaper), or 2 independent readers (more reliable, for adding to the tree); the choice is remembered;
    • each reader starts with a clean context and returns: a word-for-word transcription, a translation into the research's language, an explanation (terms, abbreviations, occupations, context) and the people, events and relations named;
    • the second reader reads blind and does not see the first reading. The transcriptions are compared word by word, the people by role and order, the events by kind and order. Where they differ there are variants;
    • a name a reader gives must stand in its transcription. Which people and places of the tree match is decided by strom, not by the reader;
    • at most 20 readings per hour and 60 per day (only a person can raise them); for one tree one document is read at a time and 3 more wait. In a Strom archive reading does not exist.
  • Result:
    • the mark of agreement: 2 readers, agree, 2 readers, K places differ, or 1 reader. On the page preview a green frame marks the selected entry and an amber one the places where the readers differ ("readers differ: the first reads “a”, the second “b”"). In the transcription [?] marks an uncertain reading and [...] an illegible or left-out place;
    • the sections Transcription, Translation, Explanation, About the document, Mentioned; Copy transcription;
    • a document that cannot be read gets a reason (blurred, glare over the text, taken at an angle, part of the page missing, too dark, too small, no written text in the picture) and advice on taking a better photo;
    • the result stays in the reading history (Read documents). It goes into the tree through Suggest for the tree….
  • Limits:
    • without a choice, the research's agent and model for scans read it (R8.3); for each reader the agent, model and thoroughness can be chosen (R8.8.1). Reading counts toward the research's cost, also a cancelled one: what the agent already read counts;
    • the window can be closed; reading goes on and the result is announced. The estimate in the window counts about a minute per reader, with Grok 4 minutes;
    • reading works only with a research that runs on this computer and has an agent set up; otherwise the dialog says why (Not possible now: …).
  • Controls: app: Research → Read a document…, in the person menu Read a document for this person…; drag files into the window or Choose files…; optionally Document concerns (a person) and Note; Readers; Read. A file dragged into the app offers Read now, or Add to materials (R11). History: Research for this tree… → Read documents (N) ›. A source that already has a transcription can be read again from its original (R8.8.2).
  • Since: app 3.14.0, research 1.18.0
  • From app 3.25.0 and research 1.29.0: the choice of readers (Adjust reading, R8.8.1), who read, Read again… at a source (R8.8.2) and the setting Task from a new reading (R8.8.3).
  • From app 3.27.0: in the window Suggest for the tree a person whose match with a person of the tree rests only on a given name or surname read uncertainly (marked “?”) is preselected on No; Link stays to choose. A match also carried by a date, parents, a partner or a child, and a person written earlier from the same entry, stay on Link.

R8.8.1 Readers: program, model and thoroughness

Each reader of a document can read with a different agent, model and thoroughness. Without a choice, reading follows the research's settings. The result says for each reading who read.

  • Enforced by the code:
    • 1 reader (faster), or 2 readers (more reliable, for the tree). Two readers read separately; where their texts disagree there may be a mistake, and that place is shown to check;
    • in Adjust reading, Reader 1 and Reader 2 each have a Program (the agent), Model and Thoroughness (quick, standard, higher, highest), only from what the research on this computer offers. The default is as the agent is set; a change is kept for the next readings (Default returns the research's settings);
    • without a choice the research's model for scans reads (model.vision), never a cheaper model;
    • the second reader reads blind and does not see the first reading (R3.5);
    • an agent that cannot read now (sign-in expired, limit reached) is offered with the reason, and a reader with it cannot start. A model the installed Codex does not know ends the reading as a failure of the reader, with that reason.
  • Result: Read by at each reading: agent · model · thoroughness of each reader, in the terminal, in the reading's file and in the app. The text is by reader 1; reader 2 read independently, as a check, and its whole text can be shown (Reader’s transcription: Reader 1 / Reader 2). When both read with the same program, the result says so.
  • Why: two readers of the same model are weaker evidence than two different models: where they agree, they may be wrong in the same way. The task from a new reading says so too (R8.8.3).
  • Controls: app: Read a document… and Read again… → Readers → Adjust reading. Terminal: strom document read … --agent --model --effort (the first reader) and --blind-agent --blind-model --blind-effort (the blind reader), --readers 2.
  • Since: research 1.29.0, app 3.25.0

R8.8.2 Reading a source again from its original

A source that has a transcription can be read again from its original (the scan or the clip in the research), not from the transcription. The new reading is compared with the transcription place by place. The transcription does not change by it: the new reading stays saved with the source next to it.

  • Enforced by the code:
    • only for a source whose original the research has on this computer and which has a transcription; otherwise the app says why (The research does not have the source’s original on this computer., The source has no transcript to compare a new reading with.). On a phone only a sentence that reading again works in the app on the computer with the research;
    • the readers see neither the transcription nor the names. They get what the research knows about the record: the kind, the language, the date and where the entry stands;
    • only the source's entry is compared with the transcription, not neighbouring entries from the edge of the clip. Not counted as a difference: column labels without a counterpart, headings and notes of the research and of the reader in brackets, a long ſ against s, an illegible place against nothing, and words outside what both read;
    • each place where the new reading differs from the transcription has a kind:
    • substantive change: a name, a number, a date, a person, or a word where the transcription has [...];
    • minor detail: spelling, an abbreviation, punctuation, a label, capital letters;
    • a substantive change is sure only when both readers read it the same way against the transcription and the new reading has neither [...] nor [?] there. A place where the readers disagree is an uncertainty, not a change of the transcription. With one reader, the uncertain places are those where the reader was not sure (the new reading has [...] or [?] there), not a disagreement of two readers;
    • a place a task already assessed, or that a person kept or rejected, is not assessed again.
  • Result (the window Source read again): "Against the existing transcript N substantive changes and K minor details.", or Matches the existing transcript.; The readers agree., or "The readers disagree in N places."; in To check the groups Substantive changes to check (for a transcription a person confirmed Substantive changes to review), Uncertain – readers disagree (with one reader Uncertain – the reader was not sure), Already assessed in task T…, Already decided: kept and Minor details. Only sure substantive changes go into a task by themselves; uncertain places only on a person's request (R8.8.3).
  • Limits: a person's confirmation of the transcription stays. A new reading never overwrites the transcription by itself (R3.4.1).
  • Controls: app: source viewer → Read again… (AI mark), with the choice of readers (R8.8.1); at the source then the line of the new reading with Result ›. Terminal: strom document read --source S… [--clip …], strom source show S….
  • Why: after a time, a transcription can be checked by another reader, from the original. Agreement supports the existing transcription; a difference is a guide for checking, not a new transcription.
  • Since: research 1.29.0, app 3.25.0

R8.8.3 Task from a new reading

A task from a source read again arises by itself only from a sure substantive change nobody has assessed yet. Minor details never create a task, and uncertain places do not create one by themselves: they can be given to the agent only on a person's request. Whether a task from a sure substantive change arises at once or a person decides is set by the setting Task from a new reading.

  • Setting (read.sourceTask, for each tree):
    • Ask (ask, the default): no task arises by itself. The reading stays with the source as not checked until a person decides;
    • Always create (always): the task arises at once; for a transcription a person confirmed, a proposed wording for the person;
    • Never create (never): no task arises by itself; the reading waits with the source and a person can decide just as with Ask.
  • Choices (the footer of the window Source read again, at the source Decide ▸):
    • a transcription a person did not confirm: Task for the agent → Check with the agent now (a task and at once a conversation with the agent in the terminal) or Queue for the agent (a task ahead in the queue, priority 3); No task → Just save (no task arises, the source no longer asks and the same places are not offered again; at the source Give to the agent… can still be chosen then);
    • a transcription a person confirmed: Task for a person → Set aside for review (a proposed wording for the person; the agent does not work on it, R3.4.1), or Just save. A task for the agent never arises here;
    • a source with an unfinished task: Add to T… and check now, Add to task T…. One source has one task of its readings at a time: new places are added to it, none twice.
  • Uncertain places on request:
    • offered only for a reading that has no sure substantive change to decide but has uncertain places that are not minor details and that no task has assessed yet. In the footer of the window Source read again the choice stands next to Close (which stays the main button); at the source in the line of the new reading (Give to the agent… ▸, for a confirmed transcription Set aside for review… ▸). It is offered with every setting, also with Never create; not on a phone. Only minor details or places already assessed → the choice is not offered;
    • a transcription a person did not confirm: Give to the agent to assess (AI mark) → a task for the agent in the queue (priority 3), or the places are added to the source's unfinished task. The readers read blind, without the transcription and the names (R8.8.2); only the agent assesses the places, on the scan with everything the research knows about the record's people, places and dates. Where the scan shows it surely, it corrects the transcription and writes the reason; elsewhere it leaves the transcription and writes a note to the source on what it looked at and why the place stays uncertain. It asks the person nothing;
    • a transcription a person confirmed: Set aside for review → a task for the person with a proposed wording only from the uncertain places the new reading read (not [...], [?]); the agent does not change the transcription (R3.4.1). When the new reading read only illegible places, the choice is not offered;
    • a task from uncertain places arises only on a click, never by itself, not even with Always create. Places a task then holds are not offered again in later readings.
  • Enforced by the code:
    • only a person decides: in the app, or at their terminal. strom document read --source at a person's terminal asks at once (Go through it with the agent now, Put it in the queue as a task, Just keep the reading, for a confirmed transcription Set it aside for review); without a choice it decides nothing, and later strom source reading S… decides. The agent may not decide: it tells the person what waits;
    • only a person hands over uncertain places: strom source reading S… --take queue --unsure (for a confirmed transcription --take review --unsure); --unsure works with nothing else. A reading that has a sure substantive change to decide is refused with --unsure: it is decided without it and the uncertain places go with it. strom source show S… says when the places can be handed over;
    • the task states who read (agent · model · thoroughness of each reader), that two readers of the same model are weaker evidence, and that the new reading is only a guide (R3.4.1). Substantive changes come first in the task's reason;
    • an app older than 3.25.0 has no choice: for an unconfirmed transcription a task for the agent arises at once, for a confirmed one a proposed wording for the person.
  • State at the source (source viewer): Newer reading of … differs (N substantive changes), not checked., … saved, no task created., …: task T… for the agent (queued)., …: review task T…., …: only minor details differ., …: the readers disagree at …; the transcript stays. (with one reader …: the reader was not sure at …; the transcript stays.) After the task is created Open task T… (S4.5.3).
  • Controls: app: Research → Other actions → Research for this tree… → Reading documents → Task from a new reading (it is written into the research and applies also to readings started in the terminal). Terminal: strom config set read.sourceTask ask|always|never --for-tree, once strom document read --source S… --source-task …, strom source reading S… [--take now|queue|keep|review] [--unsure], strom source show S….
  • Why: a task costs the agent's work, which draws on the subscription; a minor detail or an uncertainty does not change the transcription, and what was already assessed should not be assessed again. Uncertain places can still be assessed: the readers cannot settle them, as they read blind, but the agent can assess them with the context of the research when a person asks for it.
  • Since: research 1.29.0, app 3.25.0

R8.9 Who reads: an overview and an example of one entry

An entry in a scan is read by several readers, each with a different task and a different view. No reader writes into the tree: what it reads is material for the main agent and for a person.

Who readsWhat it seesWhat it returnsRule
the book's readers (strom read)a batch of images and the whole question; nothing else from the researcha short report: entries for the question, with a certainty in per cent for namesR8.3
the main agenta crop of the entry at full resolution and everything the research knowsa source with a transcription and facts from what was read with certaintyR8.5, R8.6
the blind second reader (strom read --blind --crop)only the crop of one cell; not the expected value, name, place or why it mattersits own reading of that cellR3.5
the readers of a document from the app (1 reader or 2 readers)the pages of the document; the second reader does not see the first one's readinga transcription, translation, explanation and the people mentionedR8.8, R8.8.1
the readers of Read again… (1 or 2)the original of the entry and what the research knows about the record (kind, language, date, where the entry stands); not the transcription or the namesa new reading, compared with the transcription spot by spotR8.8.2
  • Enforced by the code:
    • blind means: the reader does not get what is expected of it. The blind second reader gets only the crop, the second reader of a document does not see the first reading and the readers of Read again… do not see the transcription or the names;
    • the readers read with the research's model for handwriting (model.vision), never a weaker one. In reading a document and in Read again… each reader has its own program, model and thoroughness, and the result says by the reading who read (R8.8.1);
    • where two readers disagree, the spot is uncertain, not a correction of the transcription (R8.8.2).
  • Method only: an entry that will be cited the main agent reads itself, from the crop (R8.5); a hard cell gets a blind second reading (R3.5).
  • Why: whoever knows the expected value tends to “read” it. Two independent readers, best of two different models, show the spots where the handwriting can be read two ways.
  • Since: research 1.0.0 (the book's readers, the blind second reading); reading a document research 1.18.0; the choice of readers and Read again… research 1.29.0, app 3.25.0

An example of one entry (made up). The source is a baptism entry from 1843. The current transcription was written by the research and a person has not confirmed it: “On 3 March 1843 baptised Jan, son of Václav Horák, cottager in Javorná No. 12, and of Marie b. Vlková.” The date of Jan Horák's baptism was entered into the tree by a person in the app.

  1. Read again… at the source, 2 readers: Reader 1 Claude Code, Reader 2 Codex, each with its own model and thoroughness. Both get only the original of the entry and what the research knows about the record (kind, language, date, where the entry stands); they see neither the transcription nor the names.
  2. The readers read:
    • Reader 1: “… 5 March 1843 … in Javorná No. 17, and of Marie born Vlková.”
    • Reader 2: “… 5 March 1843 … in Javorná No. 12, and of Marie born Vlková.”
  3. The comparison with the transcription:
    • the day 5 instead of 3: both readers read the same and with certainty → a certain substantive change;
    • the house number: Reader 1 reads 17, Reader 2 12 → the readers disagree; the spot is uncertain, not a change of the transcription;
    • “b.” against “born”: an abbreviation → a minor detail.
  4. To check shows: Substantive changes to check (the day of baptism), Uncertain – readers disagree (the house number) and Minor details (“b.”). The transcription has not changed; the new reading stays with the source.
  5. With the setting Ask a person decides: Task for the agent → Queue for the agent. The task gets the certain substantive change and with it the uncertain spot too; a minor detail does not create a task by itself (R8.8.3).
  6. In the task the agent looks at the entry on the scan with everything the research knows about the people and places:
    • the day on the scan is certainly 5: it corrects the transcription and writes the reason;
    • the house number on the scan is not certain: it leaves the transcription and writes a note at the source on what it looked at and why the spot stays uncertain;
    • the date of baptism in the tree was entered by a person: the agent does not change it, it only proposes 5 March
      1. The app shows at the fact The research proposes changing a fact entered by a person and Conflict ›; a person decides (S6.3).

A fact from another program's family tree the agent would be allowed to change by the cited record; the value from the family tree would stay with the fact to be reverted (S6.3).