feat: Box creation answers Box QA #211

Merged
bjoern merged 6 commits from feat/box-creation-answers-qa into main 2026-10-17 18:44:51 +02:00
Member

The last of three slices on the Box creation ↔ Box QA loop, after #209 and #210. Until now Box creation could reach the review only through the note of a box it added, and every later agent reads those notes. So it had no way to say "I did not do this point, and here is why". The next review could not tell a point refused on purpose from one forgotten.

What's in

The tool (ADR 0016, 0017 and 0029, amended)

  • Sent back with Box QA's feedback, and only then, Box creation holds answer_feedback(points[{point, done?, reason?}]). It gives one item a point, in the feedback's order: what it did, why not, or both.
  • The tool refuses:
    • no points;
    • a point with no point;
    • a point with neither done nor reason;
    • an answer that never names a label the feedback names. The refusal lists those labels. It reads them the way the approval of #209 reads the labels in Box QA's feedback: case-insensitive, and p1r1 not inside p1r12.
  • A later call replaces the answer. The tool writes no content.
  • The human's words, Run again and a first run grant no tool, and the brief then says nothing of answering. The tool checks labels against Box QA's own words.
  • ADR 0017's roster diagram lists the tool under Box creation.

The row keeps the answer

  • Execution.Answer and AnsweredAt on Box creation's row. RecordAnswer refuses a row that is not Box creation's or not running. It also refuses a point with no point, or with neither half: the tool's rule, held again on the write path.
  • When Box QA's feedback asks for an answer, the executor records it only after an attempt that succeeded. It records an empty one when the agent never called the tool. Any other attempt records nothing. A start clears it: each attempt owes its own.
  • Each Box QA verdict now stamps ReviewedAt.
  • Migration AddExecutionAnswer: Answer TEXT NOT NULL DEFAULT '[]', AnsweredAt INTEGER NULL. The '[]' is set by hand: EF generates '', which the JSON list converter throws on when it reads an older row. No backfill: no answer was kept before.
  • ADR 0029's migration list now notes #210's verdict columns too, beside the answer's.

QA hears it

  • After the verdict block of #210, Box QA's next task message gives:
    Box creation answered your feedback:
    - Point: the sound word ドン at the bottom left has no box. Done: added p2r5, a floating box.
    - Point: p2r3 and p2r4 hold one bubble. Not done: they are two bubbles, with art between them.
    
    or "Box creation gave no answer to your feedback."
  • It hears it only when the answer came after that verdict (AnsweredAt > the review's ReviewedAt).
    • A retry after a later verdict at the cap, which sent nothing back, hears no older answer.
    • A verdict that named only regions asked for none, so it hears none.
    • A verdict with no time on record, like one given before this change, still hears the answer.
  • A review reads the answer only from its own page's Box creation row in the same run, never from another page's.
  • In a run of region problems alone, Box QA's words add a Box creation row. That row is asked for an answer too, and the next review reads it.
  • A send-back of the review drops its last verdict, and the answer with it. Box creation's row keeps the answer, so the monitor still shows it until Box creation starts again.

The briefs

  • Box creation, when it answers:

    • name the labels you added, changed or deleted;
    • if a point asks for a box that breaks the rules for boxes and forms, follow the rules and give your reason.

    Step 12 becomes "Call answer_feedback. Then finish …".

  • Box QA:

    • check each point of the answer on the page;
    • a point called done that is not goes back into feedback;
    • judge a reason by the same rules: if it holds, drop the point; if it breaks a rule, put the point back with that rule.
  • An agent's send-back now says "If what a point asks breaks no rule in your instructions, do it." Box refinement hears it too, on a region Box QA names. The human's words still say "do what each point asks". A send-back whose earlier attempt broke off keeps its old line.

  • A review's redo no longer hears "That work is done.", since an answer can say a point was not. It hears "Each agent you sent it to has finished a new attempt since." Transcription QA's redo hears the same new sentence.

  • The description of add_region's note and the description of note_box tell the agent to write about the marks alone, since every later agent reads the note. answer_feedback says "Put your words for Box QA here, never in a box note."

  • The glossary's verdict is "What a QA agent decides", no longer "a QA agent's answer" (ADR 0030 amended).

The run monitor shows the answer under Box creation's row, one line a point: Answered “…”: done, …, Answered “…”: not done, …, or both halves joined by ; .

  • A row that was asked and gave none reads "No answer to Box QA's feedback."
  • A row never asked shows nothing.
  • The lines keep the plain note style: runbar__note--answer only names them, and has no rule of its own.

Seed: the boxed story page goes through one full round.

  • Box QA sends its feedback back. Box creation answers one point done, and one not done with its reason. The review then passes the page.
  • The seeded run gains a Box refinement row and a Box QA row on that page, both succeeded. Box creation's row is on its second attempt.
  • Both verdicts write their approvals through ApproveBoxes. So the page's boxes read qa approved on the Bbox list, except the two the cleaning tightened. AGENTS.md says so.

Tests

5430 passed, 3 skipped, against 5377 on main at 139e253f. That is +53: Domain +3, UseCases +45, Integration +4, BlazorAdapter +1. Both runs are fresh, each project under the 60 s cap. Main's run was at #210's head, whose tree is the same as 139e253f.

  • Engine (AnnotationRunTests, BoxJobTests):

    • a send-back with feedback is answered, and the next review reads the answer after its verdict;
    • no call reads as no answer;
    • a verdict of regions alone asks for none;
    • the human's send-back drops it;
    • each review reads only its own page's answer;
    • a retry after a newer verdict hears no older answer;
    • a review with no verdict time on record still hears the answer;
    • an attempt that answered and then failed records none;
    • the tool holds Box QA's own words, so a skipped label is refused in a real run.
  • ReprocessPage:

    • the human's words grant no tool and record no answer;
    • in a run of region problems alone, Box QA's words add a Box creation row, and the next review reads that row, not the refiner's: it hears that no answer came.
  • Tool:

    • the grant holds answer_feedback only with Box QA's feedback, and the answering brief names only its own tools;
    • each refusal;
    • trimmed halves;
    • a later call replaces;
    • case-insensitive labels.
  • Domain:

    • only a running Box creation row records an answer;
    • each point needs its halves;
    • the answer outlives success, and a start clears it;
    • a verdict stamps its time.
  • Store and migration: the EF round trip through the answer and the success. The upgrade test covers a row written before the columns.

  • Texts:

    • each new sentence of the answering brief is pinned, and the answering brief is the first-run brief plus those;
    • exact pins on the answer block, the no-answer line, and answer_feedback's description and replies, each under the plain-words checks;
    • the redo line's asserts move from "That work is done." to the new line, and an agent's send-back line is pinned beside the human's;
    • Box QA's brief grows by its answer group, so its pinned size moves from 1393 to 1591 words. Box creation's pin of 1490 also holds the answering brief.
  • Monitor: the answer under its row, point by point, and the no-answer line.

  • Seed: the round, the answer and the approvals.

  • Mutation probes: 86 single edits; 75 failed a test at first. Six of the 11 survivors were real gaps. They are now pinned, and a re-run fails all six, each on its new pin:

    • the freshness check;
    • the grant's BoxQa sender check;
    • the creation-row stage filter;
    • recording only after a success;
    • the tool getting Box QA's words;
    • EfRunStore.RecordAnswerAsync.

    The other five change no outcome:

    • >= for > on the two times, which never tie;
    • guarding on the verdict, not its feedback: a verdict of regions alone never re-runs Box creation, so no answer is newer than it;
    • the leading trim, which the tool already did;
    • the seed's needs_work approval, which the ok overwrites;
    • the check for Orihon's note on the grant: a row Box QA sent back always carries Box QA's own words, never Orihon's note.

Notes

  • The refiners do not answer. A refiner's answer to a region problem is the fitted box, and Box QA checks that from the pixels.
  • QA still sees no approval (ADR 0031), and Box creation still hears feedback alone.
  • Rebased on main (139e253f) after #210, whose verdict block the answer follows.

🤖 Generated with Claude Code

The last of three slices on the Box creation ↔ Box QA loop, after #209 and #210. Until now Box creation could reach the review only through the note of a box it added, and every later agent reads those notes. So it had no way to say "I did not do this point, and here is why". The next review could not tell a point refused on purpose from one forgotten. ## What's in **The tool** (ADR 0016, 0017 and 0029, amended) - Sent back with Box QA's `feedback`, and only then, Box creation holds `answer_feedback(points[{point, done?, reason?}])`. It gives one item a point, in the feedback's order: what it did, why not, or both. - The tool refuses: - no points; - a point with no `point`; - a point with neither `done` nor `reason`; - an answer that never names a label the feedback names. The refusal lists those labels. It reads them the way the approval of #209 reads the labels in Box QA's feedback: case-insensitive, and `p1r1` not inside `p1r12`. - A later call replaces the answer. The tool writes no content. - The human's words, Run again and a first run grant no tool, and the brief then says nothing of answering. The tool checks labels against Box QA's own words. - ADR 0017's roster diagram lists the tool under Box creation. **The row keeps the answer** - `Execution.Answer` and `AnsweredAt` on Box creation's row. `RecordAnswer` refuses a row that is not Box creation's or not running. It also refuses a point with no `point`, or with neither half: the tool's rule, held again on the write path. - When Box QA's feedback asks for an answer, the executor records it only after an attempt that succeeded. It records an empty one when the agent never called the tool. Any other attempt records nothing. A start clears it: each attempt owes its own. - Each Box QA verdict now stamps `ReviewedAt`. - Migration `AddExecutionAnswer`: `Answer` TEXT NOT NULL DEFAULT `'[]'`, `AnsweredAt` INTEGER NULL. The `'[]'` is set by hand: EF generates `''`, which the JSON list converter throws on when it reads an older row. No backfill: no answer was kept before. - ADR 0029's migration list now notes #210's verdict columns too, beside the answer's. **QA hears it** - After the verdict block of #210, Box QA's next task message gives: ``` Box creation answered your feedback: - Point: the sound word ドン at the bottom left has no box. Done: added p2r5, a floating box. - Point: p2r3 and p2r4 hold one bubble. Not done: they are two bubbles, with art between them. ``` or "Box creation gave no answer to your feedback." - It hears it only when the answer came after that verdict (`AnsweredAt` > the review's `ReviewedAt`). - A retry after a later verdict at the cap, which sent nothing back, hears no older answer. - A verdict that named only regions asked for none, so it hears none. - A verdict with no time on record, like one given before this change, still hears the answer. - A review reads the answer only from its own page's Box creation row in the same run, never from another page's. - In a run of region problems alone, Box QA's words add a Box creation row. That row is asked for an answer too, and the next review reads it. - A send-back of the review drops its last verdict, and the answer with it. Box creation's row keeps the answer, so the monitor still shows it until Box creation starts again. **The briefs** - Box creation, when it answers: - name the labels you added, changed or deleted; - if a point asks for a box that breaks the rules for boxes and forms, follow the rules and give your reason. Step 12 becomes "Call answer_feedback. Then finish …". - Box QA: - check each point of the answer on the page; - a point called done that is not goes back into `feedback`; - judge a reason by the same rules: if it holds, drop the point; if it breaks a rule, put the point back with that rule. - An agent's send-back now says "If what a point asks breaks no rule in your instructions, do it." Box refinement hears it too, on a region Box QA names. The human's words still say "do what each point asks". A send-back whose earlier attempt broke off keeps its old line. - A review's redo no longer hears "That work is done.", since an answer can say a point was not. It hears "Each agent you sent it to has finished a new attempt since." Transcription QA's redo hears the same new sentence. - The description of `add_region`'s `note` and the description of `note_box` tell the agent to write about the marks alone, since every later agent reads the note. `answer_feedback` says "Put your words for Box QA here, never in a box note." - The glossary's verdict is "What a QA agent decides", no longer "a QA agent's answer" (ADR 0030 amended). **The run monitor** shows the answer under Box creation's row, one line a point: `Answered “…”: done, …`, `Answered “…”: not done, …`, or both halves joined by `; `. - A row that was asked and gave none reads "No answer to Box QA's feedback." - A row never asked shows nothing. - The lines keep the plain note style: `runbar__note--answer` only names them, and has no rule of its own. **Seed:** the boxed story page goes through one full round. - Box QA sends its feedback back. Box creation answers one point done, and one not done with its reason. The review then passes the page. - The seeded run gains a Box refinement row and a Box QA row on that page, both succeeded. Box creation's row is on its second attempt. - Both verdicts write their approvals through `ApproveBoxes`. So the page's boxes read **qa approved** on the Bbox list, except the two the cleaning tightened. AGENTS.md says so. ## Tests 5430 passed, 3 skipped, against 5377 on main at 139e253f. That is +53: Domain +3, UseCases +45, Integration +4, BlazorAdapter +1. Both runs are fresh, each project under the 60 s cap. Main's run was at #210's head, whose tree is the same as 139e253f. - **Engine** (AnnotationRunTests, BoxJobTests): - a send-back with feedback is answered, and the next review reads the answer after its verdict; - no call reads as no answer; - a verdict of regions alone asks for none; - the human's send-back drops it; - each review reads only its own page's answer; - a retry after a newer verdict hears no older answer; - a review with no verdict time on record still hears the answer; - an attempt that answered and then failed records none; - the tool holds Box QA's own words, so a skipped label is refused in a real run. - **ReprocessPage:** - the human's words grant no tool and record no answer; - in a run of region problems alone, Box QA's words add a Box creation row, and the next review reads that row, not the refiner's: it hears that no answer came. - **Tool:** - the grant holds `answer_feedback` only with Box QA's feedback, and the answering brief names only its own tools; - each refusal; - trimmed halves; - a later call replaces; - case-insensitive labels. - **Domain:** - only a running Box creation row records an answer; - each point needs its halves; - the answer outlives success, and a start clears it; - a verdict stamps its time. - **Store and migration:** the EF round trip through the answer and the success. The upgrade test covers a row written before the columns. - **Texts:** - each new sentence of the answering brief is pinned, and the answering brief is the first-run brief plus those; - exact pins on the answer block, the no-answer line, and `answer_feedback`'s description and replies, each under the plain-words checks; - the redo line's asserts move from "That work is done." to the new line, and an agent's send-back line is pinned beside the human's; - Box QA's brief grows by its answer group, so its pinned size moves from 1393 to 1591 words. Box creation's pin of 1490 also holds the answering brief. - **Monitor:** the answer under its row, point by point, and the no-answer line. - **Seed:** the round, the answer and the approvals. - **Mutation probes:** 86 single edits; 75 failed a test at first. Six of the 11 survivors were real gaps. They are now pinned, and a re-run fails all six, each on its new pin: - the freshness check; - the grant's BoxQa sender check; - the creation-row stage filter; - recording only after a success; - the tool getting Box QA's words; - `EfRunStore.RecordAnswerAsync`. The other five change no outcome: - `>=` for `>` on the two times, which never tie; - guarding on the verdict, not its feedback: a verdict of regions alone never re-runs Box creation, so no answer is newer than it; - the leading trim, which the tool already did; - the seed's `needs_work` approval, which the `ok` overwrites; - the check for Orihon's note on the grant: a row Box QA sent back always carries Box QA's own words, never Orihon's note. ## Notes - **The refiners do not answer.** A refiner's answer to a region problem is the fitted box, and Box QA checks that from the pixels. - **QA still sees no approval** (ADR 0031), and Box creation still hears `feedback` alone. - **Rebased on main (139e253f) after #210**, whose verdict block the answer follows. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
The third of three slices on the Box creation and Box QA loop.

- Sent back with Box QA's feedback, and only then, Box creation holds
  answer_feedback: one item a point, what it did or why not. A label the
  feedback names that the answer never does is refused.
- The answer lands on its row (Execution.Answer, AnsweredAt, a new
  migration), recorded whatever the attempt gave, none included.
- Box QA's next task message gives it after its last verdict, only when it
  came after that verdict (ReviewedAt, which each Box QA verdict stamps).
- The briefs: Box creation follows the rules over a point that breaks
  them and says why; Box QA checks each point on the page and judges a
  reason by the same rules. The box notes stay about the marks.
- An agent's send-back asks for each point where it breaks no rule, and a
  review's retry hears a new attempt was made, not that the work is done.
- The run monitor shows the answer under creation's row, and the sample
  world carries one answered round on the boxed story page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Box QA hears Box creation's answer only while the verdict it answers is
  still on the row: a send-back that dropped the verdict drops the answer.
  A row with no verdict time on record still hears it.
- Box creation and Box QA follow the same rules for boxes and forms, and the
  briefs say those, not every rule above.
- The seeded round writes its approvals; ADR 0016 and 0029 list the tool.
- Pins: a review reads only its own page's answer, the answering grant, a
  skipped label in any case, the monitor's line with both halves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A review hears no answer to an older verdict; a creation that answered and then failed
records none; the answer tool holds Box QA's own words; human words get no answer tool;
a region-only send-back reads as no answer; and the store keeps an answer through a
round trip and a success.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs: only a successful attempt records Box creation's answer
All checks were successful
CI / build (pull_request) Successful in 48s
CI / test (pull_request) Successful in 3m1s
a168aa52e3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

🔄 Auto-updating coverage report — this comment is regenerated on every push, so the numbers below always reflect the commit shown here, not the branch tip.

Commit: e198649 · Generated: 2026-10-17 16:31:20 UTC · Revision: #3

Summary

Summary
Generated on: 10/17/2026 - 16:31:20
Coverage date: 10/17/2026 - 16:29:08 - 10/17/2026 - 16:31:16
Parser: MultiReport (4x Cobertura)
Assemblies: 6
Classes: 957
Files: 433
Line coverage: 97.5% (56055 of 57480)
Covered lines: 56055
Uncovered lines: 1425
Coverable lines: 57480
Total lines: 85815
Branch coverage: 89.2% (10500 of 11770)
Covered branches: 10500
Total branches: 11770
Method coverage: Feature is only available for sponsors

Coverage

Orihon.BlazorAdapter - 96.6%
Name Line Branch
Orihon.BlazorAdapter 96.6% 91.3%
Orihon.BlazorAdapter.Bible.AddBeatRowRequested 100%
Orihon.BlazorAdapter.Bible.AddCharacterRowRequested 100%
Orihon.BlazorAdapter.Bible.AddGlossaryRowRequested 100%
Orihon.BlazorAdapter.Bible.AddHouseRuleRowRequested 100%
Orihon.BlazorAdapter.Bible.AddLoreRowRequested 100%
Orihon.BlazorAdapter.Bible.BibleEffects 89.8% 76.9%
Orihon.BlazorAdapter.Bible.BibleLoaded 100%
Orihon.BlazorAdapter.Bible.BiblePage 92.3% 80.5%
Orihon.BlazorAdapter.Bible.BibleReducers 90.6%
Orihon.BlazorAdapter.Bible.BibleState 100%
Orihon.BlazorAdapter.Bible.BibleWriteFailed 100%
Orihon.BlazorAdapter.Bible.DeleteBeatRowRequested 100%
Orihon.BlazorAdapter.Bible.DeleteCharacterRowRequested 100%
Orihon.BlazorAdapter.Bible.DeleteGlossaryRowRequested 100%
Orihon.BlazorAdapter.Bible.DeleteHouseRuleRowRequested 0%
Orihon.BlazorAdapter.Bible.DeleteLoreRowRequested 0%
Orihon.BlazorAdapter.Bible.LoadBible 100%
Orihon.BlazorAdapter.Bible.ReorderBeatsRequested 0%
Orihon.BlazorAdapter.Bible.SaveOverviewRequested 100%
Orihon.BlazorAdapter.Bible.SaveSummaryRequested 100%
Orihon.BlazorAdapter.Bible.UpdateBeatRowRequested 100%
Orihon.BlazorAdapter.Bible.UpdateCharacterRowRequested 100%
Orihon.BlazorAdapter.Bible.UpdateGlossaryRowRequested 100%
Orihon.BlazorAdapter.Bible.UpdateHouseRuleRowRequested 100%
Orihon.BlazorAdapter.Bible.UpdateLoreRowRequested 100%
Orihon.BlazorAdapter.BlazorAdapterAssembly 100%
Orihon.BlazorAdapter.PageWorkspace.BoxSendBackRefused 100%
Orihon.BlazorAdapter.PageWorkspace.CleanedDraft 100%
Orihon.BlazorAdapter.PageWorkspace.CleanedView 100% 100%
Orihon.BlazorAdapter.PageWorkspace.CleaningReprocessSent 100%
Orihon.BlazorAdapter.PageWorkspace.CreateRegionRequested 100%
Orihon.BlazorAdapter.PageWorkspace.DeletePageSummaryRequested 100%
Orihon.BlazorAdapter.PageWorkspace.DeleteRegionRequested 100%
Orihon.BlazorAdapter.PageWorkspace.LoadPageCleaning 100%
Orihon.BlazorAdapter.PageWorkspace.LoadPageWorkspace 100%
Orihon.BlazorAdapter.PageWorkspace.MatchSourceToBoxRequested 100%
Orihon.BlazorAdapter.PageWorkspace.PageCleaningLoaded 100%
Orihon.BlazorAdapter.PageWorkspace.PageStepsLoaded 100%
Orihon.BlazorAdapter.PageWorkspace.PageSummarySaved 100%
Orihon.BlazorAdapter.PageWorkspace.PageViewport 100% 100%
Orihon.BlazorAdapter.PageWorkspace.PageWorkspaceEffects 100% 100%
Orihon.BlazorAdapter.PageWorkspace.PageWorkspaceLoaded 100%
Orihon.BlazorAdapter.PageWorkspace.PageWorkspacePage 96.3% 92.4%
Orihon.BlazorAdapter.PageWorkspace.PageWorkspaceReducers 100% 68.7%
Orihon.BlazorAdapter.PageWorkspace.PageWorkspaceState 100%
Orihon.BlazorAdapter.PageWorkspace.PageWriteFailed 100%
Orihon.BlazorAdapter.PageWorkspace.PickCandidateRequested 100%
Orihon.BlazorAdapter.PageWorkspace.RegionCreated 100%
Orihon.BlazorAdapter.PageWorkspace.RegionSaved 100%
Orihon.BlazorAdapter.PageWorkspace.ReorderRegionsRequested 100%
Orihon.BlazorAdapter.PageWorkspace.ReprocessCleaningRequested 100%
Orihon.BlazorAdapter.PageWorkspace.ReprocessPageRequested 100%
Orihon.BlazorAdapter.PageWorkspace.ReprocessTranscriptionRequested 100%
Orihon.BlazorAdapter.PageWorkspace.ReprocessTranslationRequested 100%
Orihon.BlazorAdapter.PageWorkspace.RunBoxAgainRequested 100%
Orihon.BlazorAdapter.PageWorkspace.RunTranscriptionAgainRequested 100%
Orihon.BlazorAdapter.PageWorkspace.SavePageSummaryRequested 100%
Orihon.BlazorAdapter.PageWorkspace.SaveRegionRequested 100%
Orihon.BlazorAdapter.PageWorkspace.SetPageMetaRequested 100%
Orihon.BlazorAdapter.PageWorkspace.TextReviewNoteLoaded 100%
Orihon.BlazorAdapter.PageWorkspace.TranscriptionSendBackRefused 100%
Orihon.BlazorAdapter.Projects.CreateProjectRequested 100%
Orihon.BlazorAdapter.Projects.DecideSetupContinuation 100%
Orihon.BlazorAdapter.Projects.DeleteProjectRequested 100%
Orihon.BlazorAdapter.Projects.FinishSetupRequested 100%
Orihon.BlazorAdapter.Projects.ImportPagesRequested 100%
Orihon.BlazorAdapter.Projects.LoadWizard 100%
Orihon.BlazorAdapter.Projects.PageOrganizer 96% 95%
Orihon.BlazorAdapter.Projects.PagesImported 100%
Orihon.BlazorAdapter.Projects.ProjectDeleteFailed 100%
Orihon.BlazorAdapter.Projects.ProjectListEffects 100% 100%
Orihon.BlazorAdapter.Projects.ProjectListPage 89.7% 91.6%
Orihon.BlazorAdapter.Projects.ProjectListReducers 100%
Orihon.BlazorAdapter.Projects.ProjectListState 100%
Orihon.BlazorAdapter.Projects.ProjectsLoaded 100%
Orihon.BlazorAdapter.Projects.ProjectWizardEffects 93.8% 90%
Orihon.BlazorAdapter.Projects.ProjectWizardPage 95.3% 84.1%
Orihon.BlazorAdapter.Projects.ProjectWizardReducers 100%
Orihon.BlazorAdapter.Projects.ProjectWizardState 100%
Orihon.BlazorAdapter.Projects.SetupChat 93.5% 100%
Orihon.BlazorAdapter.Projects.SetupChatEffects 100% 100%
Orihon.BlazorAdapter.Projects.SetupChatFailed 100%
Orihon.BlazorAdapter.Projects.SetupChatReducers 100%
Orihon.BlazorAdapter.Projects.SetupChatState 100%
Orihon.BlazorAdapter.Projects.SetupChatUpdated 100%
Orihon.BlazorAdapter.Projects.StartSetupChat 100%
Orihon.BlazorAdapter.Projects.SubmitSetupAnswer 100%
Orihon.BlazorAdapter.Projects.WizardDeletePagesRequested 100%
Orihon.BlazorAdapter.Projects.WizardLoaded 100%
Orihon.BlazorAdapter.Projects.WizardMovePagesRequested 100%
Orihon.BlazorAdapter.Projects.WizardMovePagesToNewChapterRequested 100%
Orihon.BlazorAdapter.Projects.WizardReorderPagesRequested 100%
Orihon.BlazorAdapter.Projects.WizardWriteFailed 100%
Orihon.BlazorAdapter.Rulings.AcceptProposalRequested 100%
Orihon.BlazorAdapter.Rulings.AnsweredRuling 100%
Orihon.BlazorAdapter.Rulings.AnswerRulingRequested 100%
Orihon.BlazorAdapter.Rulings.DeclineProposalRequested 100%
Orihon.BlazorAdapter.Rulings.DismissRulingRequested 100%
Orihon.BlazorAdapter.Rulings.RulingBar 100% 96.4%
Orihon.BlazorAdapter.Rulings.RulingDeskBridge 94.2% 91.6%
Orihon.BlazorAdapter.Rulings.RulingsEffects 95.4% 83.3%
Orihon.BlazorAdapter.Rulings.RulingsLoaded 100%
Orihon.BlazorAdapter.Rulings.RulingsReducers 100%
Orihon.BlazorAdapter.Rulings.RulingsState 100%
Orihon.BlazorAdapter.Rulings.RulingWriteFailed 100%
Orihon.BlazorAdapter.Rulings.SaveAnswerAsHouseRuleRequested 100%
Orihon.BlazorAdapter.Runs.CancelMonitorRun 100%
Orihon.BlazorAdapter.Runs.MonitorPageRef 100%
Orihon.BlazorAdapter.Runs.MonitorRunLoaded 100%
Orihon.BlazorAdapter.Runs.RetryMonitorExecution 100%
Orihon.BlazorAdapter.Runs.RunChangedBridge 95% 92.8%
Orihon.BlazorAdapter.Runs.RunMonitor 98.3% 95%
Orihon.BlazorAdapter.Runs.RunMonitorEffects 100% 92.8%
Orihon.BlazorAdapter.Runs.RunMonitorReducers 100%
Orihon.BlazorAdapter.Runs.RunMonitorState 100%
Orihon.BlazorAdapter.Settings.AgentDebriefsLoaded 100%
Orihon.BlazorAdapter.Settings.AgentDebriefsLoadFailed 100%
Orihon.BlazorAdapter.Settings.AgentEffortPicked 100%
Orihon.BlazorAdapter.Settings.AgentEffortSaved 100%
Orihon.BlazorAdapter.Settings.AgentEffortSaveFailed 100%
Orihon.BlazorAdapter.Settings.AgentFeedbackLoaded 100%
Orihon.BlazorAdapter.Settings.AgentFeedbackLoadFailed 0%
Orihon.BlazorAdapter.Settings.AgentModelPicked 100%
Orihon.BlazorAdapter.Settings.AgentModelSaved 100%
Orihon.BlazorAdapter.Settings.AgentModelSaveFailed 100%
Orihon.BlazorAdapter.Settings.AgentRoutingPicked 100%
Orihon.BlazorAdapter.Settings.AgentRoutingSaved 100%
Orihon.BlazorAdapter.Settings.AgentRoutingSaveFailed 0%
Orihon.BlazorAdapter.Settings.AgentTranscriptsLoaded 100%
Orihon.BlazorAdapter.Settings.AgentTranscriptsLoadFailed 0%
Orihon.BlazorAdapter.Settings.CleaningInFlightPicked 100%
Orihon.BlazorAdapter.Settings.CleaningInFlightSaveFailed 100%
Orihon.BlazorAdapter.Settings.CleaningResumed 100%
Orihon.BlazorAdapter.Settings.CleaningRunnerLoaded 100%
Orihon.BlazorAdapter.Settings.CleaningServerChecked 100%
Orihon.BlazorAdapter.Settings.CleaningServerSaved 100%
Orihon.BlazorAdapter.Settings.CleaningServerSaveFailed 100%
Orihon.BlazorAdapter.Settings.EffortOption 100% 100%
Orihon.BlazorAdapter.Settings.KeySaved 100%
Orihon.BlazorAdapter.Settings.KeySaveFailed 100%
Orihon.BlazorAdapter.Settings.ModelOptionsLoaded 100%
Orihon.BlazorAdapter.Settings.ModelOptionsUnavailable 100%
Orihon.BlazorAdapter.Settings.ResumeCleaningFailed 100%
Orihon.BlazorAdapter.Settings.RoutingOption 100% 100%
Orihon.BlazorAdapter.Settings.RunConcurrencyPicked 100%
Orihon.BlazorAdapter.Settings.RunConcurrencySaveFailed 100%
Orihon.BlazorAdapter.Settings.SaveCleaningServerRequested 100%
Orihon.BlazorAdapter.Settings.SaveKeyRequested 100%
Orihon.BlazorAdapter.Settings.SettingsEffects 92.3% 83.3%
Orihon.BlazorAdapter.Settings.SettingsLoaded 100%
Orihon.BlazorAdapter.Settings.SettingsPage 97.7% 91.5%
Orihon.BlazorAdapter.Settings.SettingsReducers 96.1% 64.2%
Orihon.BlazorAdapter.Settings.SettingsState 100%
Orihon.BlazorAdapter.Settings.TranscriptFilterPicked 100%
Orihon.BlazorAdapter.Settings.TranscriptPagePicked 100%
Orihon.BlazorAdapter.Settings.TranscriptPicked 100%
Orihon.BlazorAdapter.Settings.TranscriptTextLoaded 100%
Orihon.BlazorAdapter.Settings.TranscriptTextLoadFailed 100%
Orihon.BlazorAdapter.Uploads.UploadTransfer 96.5% 100%
Orihon.BlazorAdapter.Uploads.UploadTransferProgress 100% 100%
Orihon.BlazorAdapter.Uploads.UploadTransferResult 100%
Orihon.BlazorAdapter.Workspace.BoxAnswered 100%
Orihon.BlazorAdapter.Workspace.CleanAnswered 100%
Orihon.BlazorAdapter.Workspace.CreateChapterRequested 100%
Orihon.BlazorAdapter.Workspace.DeleteChapterRequested 100%
Orihon.BlazorAdapter.Workspace.DeletePageRequested 100%
Orihon.BlazorAdapter.Workspace.DeleteSummaryRequested 100%
Orihon.BlazorAdapter.Workspace.LoadProjectWorkspace 100%
Orihon.BlazorAdapter.Workspace.MovePageRequested 100%
Orihon.BlazorAdapter.Workspace.ProjectMetadataCard 95.6% 92.8%
Orihon.BlazorAdapter.Workspace.ProjectMetadataSaved 100%
Orihon.BlazorAdapter.Workspace.ProjectWorkspaceEffects 100% 100%
Orihon.BlazorAdapter.Workspace.ProjectWorkspaceLoaded 100%
Orihon.BlazorAdapter.Workspace.ProjectWorkspacePage 95.8% 87.7%
Orihon.BlazorAdapter.Workspace.ProjectWorkspaceReducers 100% 62.5%
Orihon.BlazorAdapter.Workspace.ProjectWorkspaceState 100%
Orihon.BlazorAdapter.Workspace.RenameChapterRequested 100%
Orihon.BlazorAdapter.Workspace.ReorderChaptersRequested 100%
Orihon.BlazorAdapter.Workspace.ReorderPagesRequested 100%
Orihon.BlazorAdapter.Workspace.RunBibleRequested 100%
Orihon.BlazorAdapter.Workspace.RunBoxRequested 100%
Orihon.BlazorAdapter.Workspace.RunCleanRequested 100%
Orihon.BlazorAdapter.Workspace.RunTranscriptionRequested 100%
Orihon.BlazorAdapter.Workspace.RunTranslationRequested 100%
Orihon.BlazorAdapter.Workspace.SaveProjectMetadataRequested 100%
Orihon.BlazorAdapter.Workspace.SaveSummaryRequested 100%
Orihon.BlazorAdapter.Workspace.SetPageKindRequested 100%
Orihon.BlazorAdapter.Workspace.SummaryDeleted 100%
Orihon.BlazorAdapter.Workspace.SummarySaved 100%
Orihon.BlazorAdapter.Workspace.TranscribeAnswered 100%
Orihon.BlazorAdapter.Workspace.WorkspaceImportRequested 100%
Orihon.BlazorAdapter.Workspace.WorkspaceWriteFailed 100%
Orihon.Domain - 100%
Name Line Branch
Orihon.Domain 100% 100%
Orihon.Domain.Agents.AgentDebrief 100% 100%
Orihon.Domain.Agents.AgentDescriptor 100% 100%
Orihon.Domain.Agents.AgentFeedback 100% 100%
Orihon.Domain.Agents.AgentRoster 100% 100%
Orihon.Domain.Agents.InvocationBudget 100%
Orihon.Domain.Bible.Character 100% 100%
Orihon.Domain.Bible.GlossaryEntry 100% 100%
Orihon.Domain.Bible.HouseRule 100%
Orihon.Domain.Bible.LoreEntry 100% 100%
Orihon.Domain.Bible.PageSummary 100%
Orihon.Domain.Bible.StoryBeat 100%
Orihon.Domain.Bible.StoryOverview 100%
Orihon.Domain.Cleaning.AppliedResult 100%
Orihon.Domain.Cleaning.CleaningBasis 100%
Orihon.Domain.Cleaning.CleaningCall 100% 100%
Orihon.Domain.Cleaning.CleaningCallRect 100%
Orihon.Domain.Cleaning.CleaningCanvas 100%
Orihon.Domain.Cleaning.CleaningClause 100%
Orihon.Domain.Cleaning.CleaningEdit 100% 100%
Orihon.Domain.Cleaning.CleaningJudgement 100%
Orihon.Domain.Cleaning.CleaningOutput 100% 100%
Orihon.Domain.Cleaning.CleaningOverrides 100%
Orihon.Domain.Cleaning.CleaningServerIdentity 100%
Orihon.Domain.Cleaning.CleaningServerState 100% 100%
Orihon.Domain.Cleaning.CleaningVerdicts 100% 100%
Orihon.Domain.Cleaning.CleaningViewRecord 100% 100%
Orihon.Domain.Cleaning.CleaningWindow 100%
Orihon.Domain.Cleaning.EditedRegion 100%
Orihon.Domain.Cleaning.PageBox 100% 100%
Orihon.Domain.Cleaning.PageCleaning 100% 100%
Orihon.Domain.Cleaning.PlannedCleaningCall 100%
Orihon.Domain.Cleaning.RegionCleaning 100% 100%
Orihon.Domain.Cleaning.RegionShape 100%
Orihon.Domain.Cleaning.ResultSource 100% 100%
Orihon.Domain.Cleaning.ViewTile 100%
Orihon.Domain.Projects.Project 100% 100%
Orihon.Domain.Projects.ProjectProfile 100%
Orihon.Domain.Runs.AnsweredPoint 100%
Orihon.Domain.Runs.Execution 100% 100%
Orihon.Domain.Runs.RegionProblem 100%
Orihon.Domain.Runs.ReviewVerdict 100%
Orihon.Domain.Runs.Run 100%
Orihon.Domain.Settings.AppSetting 100%
Orihon.Domain.Text 100% 100%
Orihon.Domain.Translation.BoundingBox 100% 100%
Orihon.Domain.Translation.Chapter 100%
Orihon.Domain.Translation.Page 100% 100%
Orihon.Domain.Translation.Region 100% 100%
Orihon.Domain.Translation.RegionProfile 100%
Orihon.Infrastructure - 98.6%
Name Line Branch
Orihon.Infrastructure 98.6% 87.8%
Orihon.Infrastructure.Agents.EfAgentDebriefStore 100%
Orihon.Infrastructure.Agents.EfAgentFeedbackStore 100%
Orihon.Infrastructure.Bible.EfBibleStore 95.2% 92.8%
Orihon.Infrastructure.Cleaning.EfCleaningCallStore 98.8% 100%
Orihon.Infrastructure.Cleaning.EfCleaningStateStore 100% 100%
Orihon.Infrastructure.DependencyInjection 100% 100%
Orihon.Infrastructure.Gateways.AgentToolAdapter 100%
Orihon.Infrastructure.Gateways.AgentToolAdapter`1 100% 100%
Orihon.Infrastructure.Gateways.AgentTranscript 98.9% 95.2%
Orihon.Infrastructure.Gateways.Cleaning.BoxChecks 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.DerivedInk 100%
Orihon.Infrastructure.Gateways.Cleaning.EdgeMetrics 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.FillResult 100%
Orihon.Infrastructure.Gateways.Cleaning.GateStats 100%
Orihon.Infrastructure.Gateways.Cleaning.GreyRule 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.LabComposite 100% 98.2%
Orihon.Infrastructure.Gateways.Cleaning.LabFill 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.LabGeometry 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.LabInk 100% 98.3%
Orihon.Infrastructure.Gateways.Cleaning.LabMetrics 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.LabPaper 100% 97.3%
Orihon.Infrastructure.Gateways.Cleaning.LabReadings 100%
Orihon.Infrastructure.Gateways.Cleaning.LabTone 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.PageRects 100%
Orihon.Infrastructure.Gateways.Cleaning.PaperComponent 100%
Orihon.Infrastructure.Gateways.Cleaning.PatchPixels 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.RasterCleaningCompositor 100% 98%
Orihon.Infrastructure.Gateways.Cleaning.RasterCleaningImages 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.RasterCleaningMetrics 100% 97.3%
Orihon.Infrastructure.Gateways.Cleaning.RasterCleaningViews 99.4% 98.3%
Orihon.Infrastructure.Gateways.Cleaning.RasterInkAnalyzer 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.RasterPlateComposer 100% 100%
Orihon.Infrastructure.Gateways.Cleaning.Rgb 100%
Orihon.Infrastructure.Gateways.Cleaning.ToneCurve 100%
Orihon.Infrastructure.Gateways.Cleaning.ViewTiling 100% 100%
Orihon.Infrastructure.Gateways.FileSystemAgentTranscriptStore 85.2% 80.8%
Orihon.Infrastructure.Gateways.HttpWebPageFetcher 100% 88.8%
Orihon.Infrastructure.Gateways.LabelFont 100% 50%
Orihon.Infrastructure.Gateways.OpenRouterLlmGateway 90.4% 82.1%
Orihon.Infrastructure.Gateways.QwenImageServerGateway 96.7% 90%
Orihon.Infrastructure.Gateways.QwenImageServerJson 96% 72.3%
Orihon.Infrastructure.Gateways.Raster.FloatImage 77.7% 50%
Orihon.Infrastructure.Gateways.Raster.GrayImage 95.8% 75%
Orihon.Infrastructure.Gateways.Raster.Labels 100% 100%
Orihon.Infrastructure.Gateways.Raster.Mask 99.1% 98.5%
Orihon.Infrastructure.Gateways.Raster.NumpyMath 95.1% 95%
Orihon.Infrastructure.Gateways.Raster.PillowBlur 98.4% 89.4%
Orihon.Infrastructure.Gateways.Raster.PillowLanczos 100% 100%
Orihon.Infrastructure.Gateways.Raster.PixelBox 100% 100%
Orihon.Infrastructure.Gateways.Raster.RgbImage 96.4% 75%
Orihon.Infrastructure.Gateways.Raster.ScipyGaussian 100% 100%
Orihon.Infrastructure.Gateways.SkiaImages 100% 100%
Orihon.Infrastructure.Gateways.SkiaPageImageRenderer 98.4% 93.3%
Orihon.Infrastructure.Gateways.SkiaPixelDigest 100% 100%
Orihon.Infrastructure.Gateways.UntaggedPng 100% 100%
Orihon.Infrastructure.Persistence.Configurations.AgentDebriefConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.AgentFeedbackConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.AppSettingConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.ChapterConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.CharacterConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.CleaningCallConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.CleaningEditConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.CleaningOutputConfiguratio
n
100%
Orihon.Infrastructure.Persistence.Configurations.CleaningServerStateConfigu
ration
100%
Orihon.Infrastructure.Persistence.Configurations.CleaningViewConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.ExecutionConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.GlossaryEntryConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.HouseRuleConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.JsonColumnMapper 100%
Orihon.Infrastructure.Persistence.Configurations.LoreEntryConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.PageCleaningConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.PageConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.PageSummaryConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.ProjectConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.RegionCleaningConfiguratio
n
100%
Orihon.Infrastructure.Persistence.Configurations.RegionConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.RunConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.StoryBeatConfiguration 100%
Orihon.Infrastructure.Persistence.Configurations.StoryOverviewConfiguration 100%
Orihon.Infrastructure.Persistence.Converters.UtcTicksConverter 100%
Orihon.Infrastructure.Persistence.Migrations.AddAgentDebriefs 99.5%
Orihon.Infrastructure.Persistence.Migrations.AddAgentFeedback 99.5%
Orihon.Infrastructure.Persistence.Migrations.AddAppSettings 99.3%
Orihon.Infrastructure.Persistence.Migrations.AddCleaningCallAttempt 99.6%
Orihon.Infrastructure.Persistence.Migrations.AddCleaningCallCanvasMode 99.6%
Orihon.Infrastructure.Persistence.Migrations.AddCleaningCallRunner 99.3%
Orihon.Infrastructure.Persistence.Migrations.AddCleaningStageFacts 99.1%
Orihon.Infrastructure.Persistence.Migrations.AddCleaningState 99.1%
Orihon.Infrastructure.Persistence.Migrations.AddExecutionAnswer 100%
Orihon.Infrastructure.Persistence.Migrations.AddExecutionFeedbackRegions 99.3%
Orihon.Infrastructure.Persistence.Migrations.AddExecutionSentBackBy 99.6%
Orihon.Infrastructure.Persistence.Migrations.AddExecutionVerdict 100%
Orihon.Infrastructure.Persistence.Migrations.AddHouseRules 99.6%
Orihon.Infrastructure.Persistence.Migrations.AddPagePassFacts 99%
Orihon.Infrastructure.Persistence.Migrations.AddProjectSourceLanguage 99.3%
Orihon.Infrastructure.Persistence.Migrations.AddRegionBoxApproved 99.6%
Orihon.Infrastructure.Persistence.Migrations.AddRegionFitBoxDropFillHints 98.1%
Orihon.Infrastructure.Persistence.Migrations.AddRegionForm 99.4%
Orihon.Infrastructure.Persistence.Migrations.AddRegionInk 99.4%
Orihon.Infrastructure.Persistence.Migrations.AddRegionSourceBox 99.6%
Orihon.Infrastructure.Persistence.Migrations.AddRuns 99.1%
Orihon.Infrastructure.Persistence.Migrations.AddStoryOverview 99.5%
Orihon.Infrastructure.Persistence.Migrations.AddTextDoneAndReviewNote 99.2%
Orihon.Infrastructure.Persistence.Migrations.DropRegionContainer 99.1%
Orihon.Infrastructure.Persistence.Migrations.DropRegionInk 99.5%
Orihon.Infrastructure.Persistence.Migrations.DropRegionType 99%
Orihon.Infrastructure.Persistence.Migrations.DropRegionTypeset 99.4%
Orihon.Infrastructure.Persistence.Migrations.InitialTranslationDomain 97.3%
Orihon.Infrastructure.Persistence.Migrations.OneNoteEntryPerLine 100%
Orihon.Infrastructure.Persistence.Migrations.OrihonDbContextModelSnapshot 100%
Orihon.Infrastructure.Persistence.Migrations.RenameSourceTargetColumns 97.2%
Orihon.Infrastructure.Persistence.Migrations.ReplaceFitBoxWithContainerSeed 99.2%
Orihon.Infrastructure.Persistence.Migrations.RetireFloatingPassAndAddBoxesD
one
98.1% 100%
Orihon.Infrastructure.Persistence.Migrations.SplitRegionNotesIntoStages 100%
Orihon.Infrastructure.Persistence.OrihonDbContext 100%
Orihon.Infrastructure.Persistence.OrihonDbContextFactory 100%
Orihon.Infrastructure.Projects.EfProjectStore 100% 100%
Orihon.Infrastructure.Projects.FileSystemPageImageStore 100% 100%
Orihon.Infrastructure.Runs.EfRunStore 100% 100%
Orihon.Infrastructure.Settings.EfAppSettingsStore 100% 100%
Orihon.Infrastructure.Translation.EfChapterStore 100% 100%
Orihon.Infrastructure.Translation.EfPageStore 100% 100%
Orihon.Infrastructure.Translation.EfRegionStore 100% 100%
Orihon.Infrastructure.Translation.Ordering 100% 100%
System.Text.RegularExpressions.Generated 71.1% 54.2%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7FCA343D2B99030
A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__BlankLines_4
79.5% 80%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7FCA343D2B99030
A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__BlockBreaks_1
59% 42.5%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7FCA343D2B99030
A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__SpaceRuns_3
89.4% 75%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7FCA343D2B99030
A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__Tags_2
83.7% 62.5%
Orihon.Kernel - 90.9%
Name Line Branch
Orihon.Kernel 90.9% 75%
Orihon.Kernel.Err`1 100%
Orihon.Kernel.Ok`1 100%
Orihon.Kernel.Result`1 88.8% 75%
Orihon.Server - 95.2%
Name Line Branch
Orihon.Server 95.2% 79.4%
Orihon.Server.CleaningCallRunnerBootstrap 100%
Orihon.Server.Components.App 100%
Orihon.Server.Components.Layout.AppHeader 100% 78.5%
Orihon.Server.Components.Layout.MainLayout 100%
Orihon.Server.Components.Pages.Gate 64.2% 66.6%
Orihon.Server.Diagnostics.FakeCleaningServer 94.6% 80.7%
Orihon.Server.RunEngineBootstrap 100%
Orihon.Server.Security.AccessGate 91.8% 41.6%
Orihon.Server.Security.AccessSecret 100% 50%
Orihon.Server.VolumeStartupValidator 100% 100%
Program 96.7% 85.7%
Orihon.UseCases - 94.6%
Name Line Branch
Orihon.UseCases 94.6% 89.2%
Orihon.UseCases.Agents.AgentAttemptPreparation 100%
Orihon.UseCases.Agents.AgentAttemptSupport 98.7% 98.9%
Orihon.UseCases.Agents.AgentBlueprint 100%
Orihon.UseCases.Agents.AgentCapDebrief 100%
Orihon.UseCases.Agents.AgentGlossary 100%
Orihon.UseCases.Agents.AgentInvocation 100%
Orihon.UseCases.Agents.AgentOutcome 100%
Orihon.UseCases.Agents.AgentTexts 100% 100%
Orihon.UseCases.Agents.AgentTool`1 100% 100%
Orihon.UseCases.Agents.AgentToolImage 100%
Orihon.UseCases.Agents.AgentToolResult 100%
Orihon.UseCases.Agents.Annotation.AddRegionParams 100%
Orihon.UseCases.Agents.Annotation.AddRegionTool 100% 100%
Orihon.UseCases.Agents.Annotation.AnnotationBlueprints 100% 100%
Orihon.UseCases.Agents.Annotation.AnnotationStage 100% 90%
Orihon.UseCases.Agents.Annotation.AnsweredPointParams 100%
Orihon.UseCases.Agents.Annotation.AnswerFeedbackParams 100%
Orihon.UseCases.Agents.Annotation.AnswerFeedbackTool 100% 100%
Orihon.UseCases.Agents.Annotation.BoundBoxParams 100%
Orihon.UseCases.Agents.Annotation.BoundContactSheetTool 95.6% 87.5%
Orihon.UseCases.Agents.Annotation.BoundCropParams 100%
Orihon.UseCases.Agents.Annotation.BoundCropTool 100%
Orihon.UseCases.Agents.Annotation.BoundDeleteParams 100%
Orihon.UseCases.Agents.Annotation.BoundViewPageTool 96% 90%
Orihon.UseCases.Agents.Annotation.BoundViewParams 100%
Orihon.UseCases.Agents.Annotation.BoxCreationExecutor 100% 92.8%
Orihon.UseCases.Agents.Annotation.BoxQaExecutor 98.3% 93.7%
Orihon.UseCases.Agents.Annotation.BoxRefinementExecutor 96.8% 93.7%
Orihon.UseCases.Agents.Annotation.ClassifyRegionParams 100%
Orihon.UseCases.Agents.Annotation.ClassifyRegionTool 100% 100%
Orihon.UseCases.Agents.Annotation.DeleteBoundRegionTool 100% 100%
Orihon.UseCases.Agents.Annotation.DeleteRegionParams 100%
Orihon.UseCases.Agents.Annotation.DeleteRegionTool 100% 100%
Orihon.UseCases.Agents.Annotation.FeedbackAnswerSink 100%
Orihon.UseCases.Agents.Annotation.FindGlossaryParams 100%
Orihon.UseCases.Agents.Annotation.FindGlossaryTool 94.4% 87.5%
Orihon.UseCases.Agents.Annotation.ListRegionsTool 96.4% 95.8%
Orihon.UseCases.Agents.Annotation.MoveResizeBoundTool 100% 100%
Orihon.UseCases.Agents.Annotation.MoveResizeRegionParams 100%
Orihon.UseCases.Agents.Annotation.MoveResizeRegionTool 95.6% 75%
Orihon.UseCases.Agents.Annotation.NoteRegionParams 100%
Orihon.UseCases.Agents.Annotation.NoteRegionTool 100% 100%
Orihon.UseCases.Agents.Annotation.QaReportSink 100% 100%
Orihon.UseCases.Agents.Annotation.RegionAuthoringAccess 91.3% 84.6%
Orihon.UseCases.Agents.Annotation.RegionBriefing 100% 100%
Orihon.UseCases.Agents.Annotation.RegionCropParams 100%
Orihon.UseCases.Agents.Annotation.RegionCropTool 100% 100%
Orihon.UseCases.Agents.Annotation.RegionForms 100% 100%
Orihon.UseCases.Agents.Annotation.RegionProblemParams 100%
Orihon.UseCases.Agents.Annotation.RegionWindow 100% 100%
Orihon.UseCases.Agents.Annotation.RejectRegionParams 100%
Orihon.UseCases.Agents.Annotation.RejectRegionTool 100% 100%
Orihon.UseCases.Agents.Annotation.ReorderRegionParams 100%
Orihon.UseCases.Agents.Annotation.ReorderRegionTool 96.2% 90%
Orihon.UseCases.Agents.Annotation.ReportQaParams 100% 100%
Orihon.UseCases.Agents.Annotation.ReportQaTool 100% 100%
Orihon.UseCases.Agents.Annotation.SetPageMetaParams 100%
Orihon.UseCases.Agents.Annotation.SetPageMetaTool 100% 90%
Orihon.UseCases.Agents.Annotation.SetTranscriptionParams 100%
Orihon.UseCases.Agents.Annotation.SetTranscriptionTool 100% 100%
Orihon.UseCases.Agents.Annotation.TextProblemParams 100%
Orihon.UseCases.Agents.Annotation.TextReportQaParams 100% 100%
Orihon.UseCases.Agents.Annotation.TextReportQaTool 100% 100%
Orihon.UseCases.Agents.Annotation.TranscriptionExecutor 96.8% 91.6%
Orihon.UseCases.Agents.Annotation.TranscriptionQaExecutor 97.5% 86.3%
Orihon.UseCases.Agents.Annotation.VerdictTool`1 97% 90%
Orihon.UseCases.Agents.AssistantSpoke 100%
Orihon.UseCases.Agents.AvoidedWord 100%
Orihon.UseCases.Agents.BibleBuilding.BibleBuildingBlueprint 100%
Orihon.UseCases.Agents.BibleBuilding.BibleBuildingExecutor 96.9% 75%
Orihon.UseCases.Agents.BibleBuilding.GetRegionParams 100%
Orihon.UseCases.Agents.BibleBuilding.GetRegionTool 100% 83.3%
Orihon.UseCases.Agents.BibleBuilding.ListProjectRegionsTool 96.2% 90%
Orihon.UseCases.Agents.BibleBuilding.ListRegionsParams 100%
Orihon.UseCases.Agents.Cleaning.AcceptEntryParams 100%
Orihon.UseCases.Agents.Cleaning.AcceptParams 100%
Orihon.UseCases.Agents.Cleaning.AcceptTool 100% 100%
Orihon.UseCases.Agents.Cleaning.AddMissedRegionParams 100%
Orihon.UseCases.Agents.Cleaning.AddMissedRegionTool 100% 100%
Orihon.UseCases.Agents.Cleaning.CheckCompareParams 100%
Orihon.UseCases.Agents.Cleaning.CheckCompareTool 100% 90%
Orihon.UseCases.Agents.Cleaning.CheckPageParams 100%
Orihon.UseCases.Agents.Cleaning.CheckViewPageTool 100%
Orihon.UseCases.Agents.Cleaning.CleaningBlueprints 100% 100%
Orihon.UseCases.Agents.Cleaning.CleaningBriefing 100% 96.9%
Orihon.UseCases.Agents.Cleaning.CleaningClassifyParams 100%
Orihon.UseCases.Agents.Cleaning.CleaningClassifyRegionTool 100% 100%
Orihon.UseCases.Agents.Cleaning.CleaningCropParams 100%
Orihon.UseCases.Agents.Cleaning.CleaningCropTool 100% 100%
Orihon.UseCases.Agents.Cleaning.CleaningExecutor 99.1% 99%
Orihon.UseCases.Agents.Cleaning.CleaningFinish 100% 100%
Orihon.UseCases.Agents.Cleaning.CleaningListRegionsTool 100% 100%
Orihon.UseCases.Agents.Cleaning.CleaningLooksAt 100% 100%
Orihon.UseCases.Agents.Cleaning.CleaningMoveParams 100%
Orihon.UseCases.Agents.Cleaning.CleaningMoveRegionTool 100% 100%
Orihon.UseCases.Agents.Cleaning.CleaningPageParams 100%
Orihon.UseCases.Agents.Cleaning.CleaningRegionParams 100%
Orihon.UseCases.Agents.Cleaning.CleaningStatusTool 100% 100%
Orihon.UseCases.Agents.Cleaning.CleaningToolAccess 96.5% 96.1%
Orihon.UseCases.Agents.Cleaning.CleaningWords 100% 100%
Orihon.UseCases.Agents.Cleaning.CleanParams 100%
Orihon.UseCases.Agents.Cleaning.CleanRegionParams 100%
Orihon.UseCases.Agents.Cleaning.CleanTool 98.3% 95.4%
Orihon.UseCases.Agents.Cleaning.EscalateParams 100%
Orihon.UseCases.Agents.Cleaning.EscalateTool 100% 100%
Orihon.UseCases.Agents.Cleaning.FillParams 100%
Orihon.UseCases.Agents.Cleaning.FillTool 100% 100%
Orihon.UseCases.Agents.Cleaning.FinalizeTool 100% 100%
Orihon.UseCases.Agents.Cleaning.FinishPageParams 100%
Orihon.UseCases.Agents.Cleaning.FinishPageTool 100% 100%
Orihon.UseCases.Agents.Cleaning.FinishSurveyTool 100% 100%
Orihon.UseCases.Agents.Cleaning.GroupCompareParams 100%
Orihon.UseCases.Agents.Cleaning.GroupCompareTool 100% 100%
Orihon.UseCases.Agents.Cleaning.GroupMeasureInkParams 100%
Orihon.UseCases.Agents.Cleaning.GroupMeasureInkTool 100%
Orihon.UseCases.Agents.Cleaning.InkReading 100% 100%
Orihon.UseCases.Agents.Cleaning.MeasureInkParams 100%
Orihon.UseCases.Agents.Cleaning.MeasureInkTool 100%
Orihon.UseCases.Agents.Cleaning.ModelCompareParams 100%
Orihon.UseCases.Agents.Cleaning.ModelCompareTool 100%
Orihon.UseCases.Agents.Cleaning.ModelWords 100% 90%
Orihon.UseCases.Agents.Cleaning.RecompositeParams 100%
Orihon.UseCases.Agents.Cleaning.RecompositeTool 100% 100%
Orihon.UseCases.Agents.Cleaning.RejectParams 100%
Orihon.UseCases.Agents.Cleaning.RejectTool 100% 100%
Orihon.UseCases.Agents.Cleaning.Rubric 100% 100%
Orihon.UseCases.Agents.Cleaning.SplitRegionParams 100%
Orihon.UseCases.Agents.Cleaning.SplitRegionTool 100% 100%
Orihon.UseCases.Agents.Cleaning.SurveyViewPageTool 100%
Orihon.UseCases.Agents.Cleaning.UndoTool 100% 100%
Orihon.UseCases.Agents.GlossaryTerm 100%
Orihon.UseCases.Agents.Inspection.PageImageAccess 93.2% 83.3%
Orihon.UseCases.Agents.Inspection.ViewAccount 100% 100%
Orihon.UseCases.Agents.Inspection.ViewTexts 100%
Orihon.UseCases.Agents.ReportFrictionParams 100%
Orihon.UseCases.Agents.ReportFrictionTool 100% 92.8%
Orihon.UseCases.Agents.ResearchSetup.AddStoryBeatParams 100%
Orihon.UseCases.Agents.ResearchSetup.AddStoryBeatTool 100% 75%
Orihon.UseCases.Agents.ResearchSetup.AskUserParams 100%
Orihon.UseCases.Agents.ResearchSetup.AskUserTool 100% 100%
Orihon.UseCases.Agents.ResearchSetup.DeleteStoryBeatParams 100%
Orihon.UseCases.Agents.ResearchSetup.DeleteStoryBeatTool 100% 100%
Orihon.UseCases.Agents.ResearchSetup.FetchUrlParams 100%
Orihon.UseCases.Agents.ResearchSetup.FetchUrlTool 100% 100%
Orihon.UseCases.Agents.ResearchSetup.ListBibleTool 90.3% 66.6%
Orihon.UseCases.Agents.ResearchSetup.ListPagesTool 97% 83.3%
Orihon.UseCases.Agents.ResearchSetup.LocatedPage 100%
Orihon.UseCases.Agents.ResearchSetup.PageByNumber 94.8% 87.5%
Orihon.UseCases.Agents.ResearchSetup.ResearchSetupBlueprint 100%
Orihon.UseCases.Agents.ResearchSetup.SetPageMetaParams 100%
Orihon.UseCases.Agents.ResearchSetup.SetPageMetaTool 95.4% 80%
Orihon.UseCases.Agents.ResearchSetup.SetPageSummaryParams 100%
Orihon.UseCases.Agents.ResearchSetup.SetPageSummaryTool 96% 75%
Orihon.UseCases.Agents.ResearchSetup.SetProjectMetadataParams 100%
Orihon.UseCases.Agents.ResearchSetup.SetProjectMetadataTool 96.4% 95.8%
Orihon.UseCases.Agents.ResearchSetup.SetStoryOverviewParams 100%
Orihon.UseCases.Agents.ResearchSetup.SetStoryOverviewTool 100% 100%
Orihon.UseCases.Agents.ResearchSetup.StoryBeatByNumber 100% 100%
Orihon.UseCases.Agents.ResearchSetup.UpdateStoryBeatParams 100%
Orihon.UseCases.Agents.ResearchSetup.UpdateStoryBeatTool 100% 75%
Orihon.UseCases.Agents.ResearchSetup.UpsertCharacterParams 100%
Orihon.UseCases.Agents.ResearchSetup.UpsertCharacterTool 96.1% 78.5%
Orihon.UseCases.Agents.ResearchSetup.UpsertGlossaryParams 100%
Orihon.UseCases.Agents.ResearchSetup.UpsertGlossaryTool 97.6% 95%
Orihon.UseCases.Agents.ResearchSetup.UpsertLoreParams 100%
Orihon.UseCases.Agents.ResearchSetup.UpsertLoreTool 96.1% 78.5%
Orihon.UseCases.Agents.ResearchSetup.ViewPageParams 100%
Orihon.UseCases.Agents.ResearchSetup.ViewPageTool 100% 100%
Orihon.UseCases.Agents.RoundStarted 100%
Orihon.UseCases.Agents.Rulings.AnswerRuling 100%
Orihon.UseCases.Agents.Rulings.DismissRuling 100%
Orihon.UseCases.Agents.Rulings.HouseRuleProposal 100%
Orihon.UseCases.Agents.Rulings.ListPendingRulings 100%
Orihon.UseCases.Agents.Rulings.ListRuleProposals 100%
Orihon.UseCases.Agents.Rulings.PendingRuling 100%
Orihon.UseCases.Agents.Rulings.ProposeHouseRuleParams 100%
Orihon.UseCases.Agents.Rulings.ProposeHouseRuleTool 100% 100%
Orihon.UseCases.Agents.Rulings.RequestRulingParams 100%
Orihon.UseCases.Agents.Rulings.RequestRulingTool 100% 81.2%
Orihon.UseCases.Agents.Rulings.RulingAnswer 100%
Orihon.UseCases.Agents.Rulings.RulingDesk 97.8% 80%
Orihon.UseCases.Agents.Rulings.RulingOption 100%
Orihon.UseCases.Agents.Rulings.RulingOptionParams 100%
Orihon.UseCases.Agents.Rulings.SettledRuling 100%
Orihon.UseCases.Agents.Rulings.WithdrawRuleProposal 100%
Orihon.UseCases.Agents.Setup.ResearchSetupExecutor 98.4% 91.6%
Orihon.UseCases.Agents.Setup.SetupChatEntry 100%
Orihon.UseCases.Agents.Setup.SetupConversation 100% 90.6%
Orihon.UseCases.Agents.Setup.SetupConversationRegistry 100%
Orihon.UseCases.Agents.ToolCalled 100%
Orihon.UseCases.Agents.ToolCompleted 100%
Orihon.UseCases.Agents.TranscriptLabel 100% 100%
Orihon.UseCases.Agents.Translation.GetPageSummaryParams 100%
Orihon.UseCases.Agents.Translation.GetPageSummaryTool 90.4% 66.6%
Orihon.UseCases.Agents.Translation.NoteTranslationParams 100%
Orihon.UseCases.Agents.Translation.NoteTranslationTool 100% 100%
Orihon.UseCases.Agents.Translation.SetTranslationParams 100%
Orihon.UseCases.Agents.Translation.SetTranslationTool 100% 100%
Orihon.UseCases.Agents.Translation.TranslationBlueprint 100%
Orihon.UseCases.Agents.Translation.TranslationExecutor 93.8% 71.4%
Orihon.UseCases.Agents.Translation.UpdateGlossaryEnParams 100%
Orihon.UseCases.Agents.Translation.UpdateGlossaryEnTool 95.8% 80%
Orihon.UseCases.Bible.AddCharacter 100% 100%
Orihon.UseCases.Bible.AddGlossaryEntry 100% 100%
Orihon.UseCases.Bible.AddHouseRule 100% 100%
Orihon.UseCases.Bible.AddLoreEntry 100% 100%
Orihon.UseCases.Bible.AddStoryBeat 100% 100%
Orihon.UseCases.Bible.BibleDto 100%
Orihon.UseCases.Bible.CharacterDto 100%
Orihon.UseCases.Bible.DeleteCharacter 100% 100%
Orihon.UseCases.Bible.DeleteGlossaryEntry 100% 100%
Orihon.UseCases.Bible.DeleteHouseRule 100% 100%
Orihon.UseCases.Bible.DeleteLoreEntry 100% 100%
Orihon.UseCases.Bible.DeletePageSummary 100% 100%
Orihon.UseCases.Bible.DeleteStoryBeat 100% 100%
Orihon.UseCases.Bible.GetBible 100% 100%
Orihon.UseCases.Bible.GlossaryEntryDto 100%
Orihon.UseCases.Bible.HouseRuleDto 100%
Orihon.UseCases.Bible.LoreEntryDto 100%
Orihon.UseCases.Bible.PageSummaryDto 100%
Orihon.UseCases.Bible.ReorderStoryBeats 100%
Orihon.UseCases.Bible.SetPageSummary 100% 100%
Orihon.UseCases.Bible.SetStoryOverview 100% 100%
Orihon.UseCases.Bible.StoryBeatDto 100%
Orihon.UseCases.Bible.StoryOverviewDto 100%
Orihon.UseCases.Bible.UpdateCharacter 100% 100%
Orihon.UseCases.Bible.UpdateGlossaryEntry 100% 100%
Orihon.UseCases.Bible.UpdateHouseRule 100% 100%
Orihon.UseCases.Bible.UpdateLoreEntry 100% 100%
Orihon.UseCases.Bible.UpdateStoryBeat 100% 100%
Orihon.UseCases.Chapters.ChapterDto 100%
Orihon.UseCases.Chapters.CreateChapter 100% 100%
Orihon.UseCases.Chapters.DeleteChapter 100% 100%
Orihon.UseCases.Chapters.RenameChapter 100% 100%
Orihon.UseCases.Chapters.ReorderChapters 100%
Orihon.UseCases.Cleaning.AcceptCleaning 100% 98.3%
Orihon.UseCases.Cleaning.AcceptEntry 100%
Orihon.UseCases.Cleaning.AddMissedRegion 100% 100%
Orihon.UseCases.Cleaning.CallFrame 100% 100%
Orihon.UseCases.Cleaning.CallFrames 100% 100%
Orihon.UseCases.Cleaning.CallMember 100%
Orihon.UseCases.Cleaning.CallNote 100%
Orihon.UseCases.Cleaning.CanaryShape 100% 50%
Orihon.UseCases.Cleaning.CandidatePick 100%
Orihon.UseCases.Cleaning.CandidatePickDto 100%
Orihon.UseCases.Cleaning.CandidateReading 100%
Orihon.UseCases.Cleaning.CanvasChoice 100%
Orihon.UseCases.Cleaning.ClassifyCleaningRegion 100% 100%
Orihon.UseCases.Cleaning.CleanAnswer 100%
Orihon.UseCases.Cleaning.CleanAsk 100%
Orihon.UseCases.Cleaning.CleanAsked 100%
Orihon.UseCases.Cleaning.CleanCandidate 100%
Orihon.UseCases.Cleaning.CleanedRegionDto 96.2% 100%
Orihon.UseCases.Cleaning.CleanedResultDto 100%
Orihon.UseCases.Cleaning.CleanedViewDto 100%
Orihon.UseCases.Cleaning.CleanFailed 100%
Orihon.UseCases.Cleaning.CleanHalted 100%
Orihon.UseCases.Cleaning.CleaningAccepted 100%
Orihon.UseCases.Cleaning.CleaningAssessment 100% 100%
Orihon.UseCases.Cleaning.CleaningCacheKey 100% 100%
Orihon.UseCases.Cleaning.CleaningCallDto 100%
Orihon.UseCases.Cleaning.CleaningCallFailed 100%
Orihon.UseCases.Cleaning.CleaningCallFile 100%
Orihon.UseCases.Cleaning.CleaningCallHalted 100%
Orihon.UseCases.Cleaning.CleaningCallRequest 100%
Orihon.UseCases.Cleaning.CleaningCallReturned 100%
Orihon.UseCases.Cleaning.CleaningCallRunner 97.6% 95.2%
Orihon.UseCases.Cleaning.CleaningCanary 100%
Orihon.UseCases.Cleaning.CleaningCandidate 80%
Orihon.UseCases.Cleaning.CleaningCandidateDto 100%
Orihon.UseCases.Cleaning.CleaningCandidates 100% 97%
Orihon.UseCases.Cleaning.CleaningComposites 100% 97.8%
Orihon.UseCases.Cleaning.CleaningCoverage 100% 100%
Orihon.UseCases.Cleaning.CleaningEditDto 77.7%
Orihon.UseCases.Cleaning.CleaningEdits 100% 100%
Orihon.UseCases.Cleaning.CleaningEligibility 100% 100%
Orihon.UseCases.Cleaning.CleaningFailure 100%
Orihon.UseCases.Cleaning.CleaningFailures 100% 97.6%
Orihon.UseCases.Cleaning.CleaningFrames 100% 100%
Orihon.UseCases.Cleaning.CleaningGpuTime 100%
Orihon.UseCases.Cleaning.CleaningGroupBinding 100% 100%
Orihon.UseCases.Cleaning.CleaningHealth 100% 100%
Orihon.UseCases.Cleaning.CleaningIdentity 100% 89.7%
Orihon.UseCases.Cleaning.CleaningInvocation 100% 100%
Orihon.UseCases.Cleaning.CleaningInvocationOptions 100%
Orihon.UseCases.Cleaning.CleaningJudgementDto 100%
Orihon.UseCases.Cleaning.CleaningLabels 100% 100%
Orihon.UseCases.Cleaning.CleaningLooks 100% 100%
Orihon.UseCases.Cleaning.CleaningModelCalls 100% 100%
Orihon.UseCases.Cleaning.CleaningPage 100%
Orihon.UseCases.Cleaning.CleaningPageGuard 100% 100%
Orihon.UseCases.Cleaning.CleaningPageLocks 100% 100%
Orihon.UseCases.Cleaning.CleaningPatchLanding 100% 100%
Orihon.UseCases.Cleaning.CleaningPlan 100%
Orihon.UseCases.Cleaning.CleaningPlanner 100% 100%
Orihon.UseCases.Cleaning.CleaningPlanOptions 100%
Orihon.UseCases.Cleaning.CleaningRecipe 100%
Orihon.UseCases.Cleaning.CleaningRegionEdited 100%
Orihon.UseCases.Cleaning.CleaningRegions 100% 100%
Orihon.UseCases.Cleaning.CleaningRegionUpkeep 100% 97.2%
Orihon.UseCases.Cleaning.CleaningRejected 100%
Orihon.UseCases.Cleaning.CleaningRowNotes 100% 100%
Orihon.UseCases.Cleaning.CleaningRowWords 100%
Orihon.UseCases.Cleaning.CleaningRunnerOptions 100%
Orihon.UseCases.Cleaning.CleaningRunnerStatus 100%
Orihon.UseCases.Cleaning.CleaningSeeds 100% 100%
Orihon.UseCases.Cleaning.CleaningStatusRead 100%
Orihon.UseCases.Cleaning.CleaningTouchUp 100% 100%
Orihon.UseCases.Cleaning.CleaningUndone 100%
Orihon.UseCases.Cleaning.CleaningViewDto 100%
Orihon.UseCases.Cleaning.CleaningViewOptions 100%
Orihon.UseCases.Cleaning.CleaningWork 100% 100%
Orihon.UseCases.Cleaning.CleanMember 100%
Orihon.UseCases.Cleaning.CleanRegions 99.2% 96.8%
Orihon.UseCases.Cleaning.CleanReturned 100%
Orihon.UseCases.Cleaning.CompareAsk 100%
Orihon.UseCases.Cleaning.CompareCleaningView 100% 96.9%
Orihon.UseCases.Cleaning.CompareSourceAsk 100%
Orihon.UseCases.Cleaning.ComposedCandidate 100% 100%
Orihon.UseCases.Cleaning.CompositeWarning 100%
Orihon.UseCases.Cleaning.CompositeWarnings 100% 100%
Orihon.UseCases.Cleaning.ComputedFill 100%
Orihon.UseCases.Cleaning.CropAsk 100%
Orihon.UseCases.Cleaning.CropCleaningView 100% 100%
Orihon.UseCases.Cleaning.EscalateCleaning 100% 100%
Orihon.UseCases.Cleaning.FillRegion 100% 100%
Orihon.UseCases.Cleaning.FillShown 100%
Orihon.UseCases.Cleaning.FinalizeGroup 100% 100%
Orihon.UseCases.Cleaning.FinishPageCheck 100% 100%
Orihon.UseCases.Cleaning.FinishSurvey 100% 100%
Orihon.UseCases.Cleaning.GetCleanedView 99.3% 94.9%
Orihon.UseCases.Cleaning.GetCleaningRunnerStatus 100%
Orihon.UseCases.Cleaning.GetCleaningStatus 100% 100%
Orihon.UseCases.Cleaning.GpuWait 100%
Orihon.UseCases.Cleaning.GroupBinding 100%
Orihon.UseCases.Cleaning.GroupFinalized 100%
Orihon.UseCases.Cleaning.InkHints 100% 100%
Orihon.UseCases.Cleaning.InkMeasured 100%
Orihon.UseCases.Cleaning.JobClock 100% 100%
Orihon.UseCases.Cleaning.JobIdentity 100%
Orihon.UseCases.Cleaning.LabelProblem 100%
Orihon.UseCases.Cleaning.LoadedCandidate 100%
Orihon.UseCases.Cleaning.MagnifiedCanvas 100%
Orihon.UseCases.Cleaning.MeasureCleaningInk 100% 100%
Orihon.UseCases.Cleaning.ModelSource 100%
Orihon.UseCases.Cleaning.MoveCleaningRegion 100% 100%
Orihon.UseCases.Cleaning.OwedRegion 100%
Orihon.UseCases.Cleaning.OweFreshAttempts 100% 100%
Orihon.UseCases.Cleaning.OwnWindowFrame 100%
Orihon.UseCases.Cleaning.PageChecked 100%
Orihon.UseCases.Cleaning.PageLook 100%
Orihon.UseCases.Cleaning.PagePlan 100%
Orihon.UseCases.Cleaning.PageWork 100% 100%
Orihon.UseCases.Cleaning.PickCleaningCandidate 100% 96.9%
Orihon.UseCases.Cleaning.PlanCleaning 100% 100%
Orihon.UseCases.Cleaning.PlannedCall 100%
Orihon.UseCases.Cleaning.PlanSurvey 100% 100%
Orihon.UseCases.Cleaning.PlateRebuilt 100%
Orihon.UseCases.Cleaning.RebuildPlate 100% 100%
Orihon.UseCases.Cleaning.RecompositeAsk 100%
Orihon.UseCases.Cleaning.RecompositeCandidate 100% 97.8%
Orihon.UseCases.Cleaning.Recomposited 100%
Orihon.UseCases.Cleaning.RecordedView 100%
Orihon.UseCases.Cleaning.RecordPageCheck 100% 75%
Orihon.UseCases.Cleaning.RectFrame 100%
Orihon.UseCases.Cleaning.RegionCleaningRead 100%
Orihon.UseCases.Cleaning.RegionFrame 100%
Orihon.UseCases.Cleaning.RegionStanding 100% 100%
Orihon.UseCases.Cleaning.RejectCleaning 100% 97.6%
Orihon.UseCases.Cleaning.RejectEntry 100%
Orihon.UseCases.Cleaning.ReprocessCleaning 100% 100%
Orihon.UseCases.Cleaning.ResumeCleaning 100% 100%
Orihon.UseCases.Cleaning.SplitCleaningRegion 100% 100%
Orihon.UseCases.Cleaning.StartCleaningRun 100% 98%
Orihon.UseCases.Cleaning.SurveyBatch 100%
Orihon.UseCases.Cleaning.SurveyCoverage 100% 100%
Orihon.UseCases.Cleaning.SurveyFinished 100%
Orihon.UseCases.Cleaning.SurveyTarget 100%
Orihon.UseCases.Cleaning.UndoCleaning 100% 94.4%
Orihon.UseCases.Cleaning.UploadNotes 100%
Orihon.UseCases.Cleaning.ViewCleaningPage 100% 100%
Orihon.UseCases.Cleaning.ViewColour 100%
Orihon.UseCases.Debriefs.AgentDebriefDto 90.9%
Orihon.UseCases.Debriefs.AgentFeedbackDto 83.3%
Orihon.UseCases.Debriefs.ClearAgentDebriefs 100%
Orihon.UseCases.Debriefs.ClearAgentFeedback 100%
Orihon.UseCases.Debriefs.ListAgentDebriefs 100% 100%
Orihon.UseCases.Debriefs.ListAgentFeedback 100% 75%
Orihon.UseCases.DependencyInjection 100%
Orihon.UseCases.Diagnostics.FakeCleaningServerAddress 100%
Orihon.UseCases.Diagnostics.SeedCleaning 89.1% 57.3%
Orihon.UseCases.Diagnostics.SeedDevData 99.2% 80.7%
Orihon.UseCases.Gateways.AppliedComposite 100%
Orihon.UseCases.Gateways.BoxFlag 100%
Orihon.UseCases.Gateways.CallComposite 100%
Orihon.UseCases.Gateways.CleaningOverlays 100%
Orihon.UseCases.Gateways.CleaningSource 100%
Orihon.UseCases.Gateways.CleaningView 100% 100%
Orihon.UseCases.Gateways.CleaningViewImage 100%
Orihon.UseCases.Gateways.CleaningViewTile 100%
Orihon.UseCases.Gateways.ClosedBalloon 100%
Orihon.UseCases.Gateways.CompareRequest 100%
Orihon.UseCases.Gateways.CompositeMember 100%
Orihon.UseCases.Gateways.CompositeRequest 100%
Orihon.UseCases.Gateways.CompositeSettings 100%
Orihon.UseCases.Gateways.CropRequest 100%
Orihon.UseCases.Gateways.EditBackendError 100%
Orihon.UseCases.Gateways.EditBackendIdentity 100%
Orihon.UseCases.Gateways.EditJob 100%
Orihon.UseCases.Gateways.EditJobAccepted 100%
Orihon.UseCases.Gateways.EditJobRejected 100%
Orihon.UseCases.Gateways.EditJobRequest 86.6% 66.6%
Orihon.UseCases.Gateways.EditJobRun 100%
Orihon.UseCases.Gateways.EditModels 100%
Orihon.UseCases.Gateways.EditModelWeight 100%
Orihon.UseCases.Gateways.EditOutputImage 100%
Orihon.UseCases.Gateways.EditOutputWithheld 100%
Orihon.UseCases.Gateways.EditRect 100% 100%
Orihon.UseCases.Gateways.EditRunOutput 100%
Orihon.UseCases.Gateways.EditServerAnswered`1 100%
Orihon.UseCases.Gateways.EditServerBuild 100%
Orihon.UseCases.Gateways.EditServerHealth 100%
Orihon.UseCases.Gateways.EditServerSilent`1 100%
Orihon.UseCases.Gateways.FillRefusal 100%
Orihon.UseCases.Gateways.FillReport 100%
Orihon.UseCases.Gateways.GlyphFill 100%
Orihon.UseCases.Gateways.GridAxis 100%
Orihon.UseCases.Gateways.GridSteps 100%
Orihon.UseCases.Gateways.InkFacts 100%
Orihon.UseCases.Gateways.InkHint 100%
Orihon.UseCases.Gateways.InkMeasure 100%
Orihon.UseCases.Gateways.InkReadings 100%
Orihon.UseCases.Gateways.InkRegion 100%
Orihon.UseCases.Gateways.LabeledBox 100%
Orihon.UseCases.Gateways.LevelRange 100%
Orihon.UseCases.Gateways.LlmKeyInfo 100%
Orihon.UseCases.Gateways.LlmModel 100%
Orihon.UseCases.Gateways.LlmReasoning 100% 100%
Orihon.UseCases.Gateways.MeasureBlend 100%
Orihon.UseCases.Gateways.MeasureRaw 100%
Orihon.UseCases.Gateways.MeasureRegion 100%
Orihon.UseCases.Gateways.MeasureRequest 100%
Orihon.UseCases.Gateways.MemberComposite 100%
Orihon.UseCases.Gateways.PagePatch 100%
Orihon.UseCases.Gateways.PageTone 100%
Orihon.UseCases.Gateways.PaperColor 100%
Orihon.UseCases.Gateways.PixelAlpha 100%
Orihon.UseCases.Gateways.PixelDigest 100%
Orihon.UseCases.Gateways.PixelMask 100%
Orihon.UseCases.Gateways.PixelRect 100%
Orihon.UseCases.Gateways.PixelWindow 100%
Orihon.UseCases.Gateways.PlateBuild 100%
Orihon.UseCases.Gateways.RegionGeometry 100%
Orihon.UseCases.Gateways.RegionPlanFacts 100%
Orihon.UseCases.Gateways.RegistrationField 100%
Orihon.UseCases.Gateways.RenderedView 100%
Orihon.UseCases.Gateways.StoredPatch 100%
Orihon.UseCases.Gateways.StoredTranscript 100%
Orihon.UseCases.Gateways.StoredTranscriptPage 100%
Orihon.UseCases.Gateways.ToneFit 100%
Orihon.UseCases.Gateways.TranscriptHeader 97.3% 90.9%
Orihon.UseCases.Gateways.TranscriptListingFacets 100%
Orihon.UseCases.Gateways.TranscriptSummary 100%
Orihon.UseCases.Gateways.WindowUpload 100%
Orihon.UseCases.NextOrder 100%
Orihon.UseCases.Pages.DeletePage 100% 100%
Orihon.UseCases.Pages.DeletePages 100% 100%
Orihon.UseCases.Pages.GetPage 100% 100%
Orihon.UseCases.Pages.GetPageSteps 100% 100%
Orihon.UseCases.Pages.GetProjectWorkspace 100% 100%
Orihon.UseCases.Pages.GetReadingOrder 100% 100%
Orihon.UseCases.Pages.ImportPages 100% 100%
Orihon.UseCases.Pages.ImportPagesResult 100%
Orihon.UseCases.Pages.MarkPageBoxesDone 100% 100%
Orihon.UseCases.Pages.MarkPageTextDone 100% 100%
Orihon.UseCases.Pages.MovePage 100% 93.7%
Orihon.UseCases.Pages.MovePages 100% 100%
Orihon.UseCases.Pages.PageCleaningSummary 100%
Orihon.UseCases.Pages.PageDetailDto 100% 100%
Orihon.UseCases.Pages.PageDto 100%
Orihon.UseCases.Pages.PageStepsDto 100%
Orihon.UseCases.Pages.PageUpload 100%
Orihon.UseCases.Pages.ProjectWorkspaceDto 100%
Orihon.UseCases.Pages.ReorderPages 100%
Orihon.UseCases.Pages.SetPageMeta 100% 100%
Orihon.UseCases.Pages.WorkspaceChapterDto 100%
Orihon.UseCases.Projects.BoxAnswer 100%
Orihon.UseCases.Projects.CompleteProjectSetup 100% 93.7%
Orihon.UseCases.Projects.CreateProject 100% 100%
Orihon.UseCases.Projects.DeleteProject 100% 100%
Orihon.UseCases.Projects.GetProject 100% 100%
Orihon.UseCases.Projects.ListProjects 100%
Orihon.UseCases.Projects.PageMention 100%
Orihon.UseCases.Projects.ProjectDto 96.1%
Orihon.UseCases.Projects.StartBibleRun 92.3% 83.3%
Orihon.UseCases.Projects.StartBoxRun 100% 100%
Orihon.UseCases.Projects.StartSetupRun 100% 100%
Orihon.UseCases.Projects.StartTranscriptionRun 100% 95.4%
Orihon.UseCases.Projects.StartTranslationRun 92.3% 83.3%
Orihon.UseCases.Projects.StoredPageImage 100%
Orihon.UseCases.Projects.TranscribeAnswer 100%
Orihon.UseCases.Projects.UpdateProjectMetadata 100% 100%
Orihon.UseCases.Regions.ApproveBoxes 100%
Orihon.UseCases.Regions.CreateRegion 100% 100%
Orihon.UseCases.Regions.DeleteRegion 100% 100%
Orihon.UseCases.Regions.MatchSourceToBox 100% 100%
Orihon.UseCases.Regions.RegionDto 100%
Orihon.UseCases.Regions.RegionNotes 100% 100%
Orihon.UseCases.Regions.RegionWrite 100% 100%
Orihon.UseCases.Regions.RegionWriteResult 100%
Orihon.UseCases.Regions.RegionWrites 100% 100%
Orihon.UseCases.Regions.ReorderRegions 100%
Orihon.UseCases.Regions.SplitRegion 97.4% 84.6%
Orihon.UseCases.Regions.UpdateRegion 100% 96.4%
Orihon.UseCases.Runs.AnnotationPipeline 100% 100%
Orihon.UseCases.Runs.AttemptLedger 100% 100%
Orihon.UseCases.Runs.ExecutionDto 94.4%
Orihon.UseCases.Runs.ExecutionProgress 100%
Orihon.UseCases.Runs.ExecutionProgressRegistry 100% 100%
Orihon.UseCases.Runs.ExecutionPulseRelay 100% 100%
Orihon.UseCases.Runs.ExecutionSendBack 100%
Orihon.UseCases.Runs.GetTextReviewNote 100% 100%
Orihon.UseCases.Runs.NamedProblems 100% 100%
Orihon.UseCases.Runs.PlannedExecution 100%
Orihon.UseCases.Runs.PulseTarget 100%
Orihon.UseCases.Runs.ReprocessPage 100% 100%
Orihon.UseCases.Runs.ReprocessTranscription 100% 100%
Orihon.UseCases.Runs.ReprocessTranslation 88.8% 83.3%
Orihon.UseCases.Runs.RunDto 93.3% 90%
Orihon.UseCases.Runs.RunEngine 96.1% 94.2%
Orihon.UseCases.Runs.RunEngineOptions 100% 100%
Orihon.UseCases.Runs.RunPhase 94.7% 100%
Orihon.UseCases.Runs.RunStart 100%
Orihon.UseCases.Runs.StageContext 100% 100%
Orihon.UseCases.Runs.StageHaltedException 100%
Orihon.UseCases.Runs.WorkStates 100% 83.3%
Orihon.UseCases.Settings.AgentSettingDto 100% 100%
Orihon.UseCases.Settings.CheckCleaningServer 87.5% 60%
Orihon.UseCases.Settings.CleaningInFlightSetting 100% 100%
Orihon.UseCases.Settings.CleaningServerSetting 100% 100%
Orihon.UseCases.Settings.CleaningServerStatusDto 100% 100%
Orihon.UseCases.Settings.ConcurrencySetting 100% 100%
Orihon.UseCases.Settings.EffortSetting 100% 100%
Orihon.UseCases.Settings.GetSettings 100% 100%
Orihon.UseCases.Settings.ListModelOptions 100% 100%
Orihon.UseCases.Settings.RoutingSetting 100% 100%
Orihon.UseCases.Settings.SaveAgentEffort 100% 100%
Orihon.UseCases.Settings.SaveAgentModel 100% 100%
Orihon.UseCases.Settings.SaveAgentRouting 100% 100%
Orihon.UseCases.Settings.SaveCleaningInFlight 100% 100%
Orihon.UseCases.Settings.SaveCleaningServer 95.2% 85.7%
Orihon.UseCases.Settings.SaveOpenRouterKey 100% 100%
Orihon.UseCases.Settings.SaveRunConcurrency 100% 100%
Orihon.UseCases.Settings.SettingKeys 100% 100%
Orihon.UseCases.Settings.SettingsDto 100% 100%
Orihon.UseCases.Transcripts.AgentTranscriptDto 100%
Orihon.UseCases.Transcripts.AgentTranscriptListDto 100%
Orihon.UseCases.Transcripts.AgentTranscriptPageDto 100%
Orihon.UseCases.Transcripts.AgentTranscriptTextDto 100%
Orihon.UseCases.Transcripts.ClearAgentTranscripts 100% 100%
Orihon.UseCases.Transcripts.ListAgentTranscripts 100% 100%
Orihon.UseCases.Transcripts.ReadAgentTranscript 100% 100%
System.Text.RegularExpressions.Generated 76.6% 70.9%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__BalloonWords_7
70.7% 57.8%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__Capital_0
90.1% 77.2%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__CoordinateWords_1
81.8% 81.8%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__JustBefore_4
80.9% 71.1%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__KindWords_5
78.6% 63.7%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__Label_9
88.4% 79.5%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__OutlineWords_6
65.1% 53.5%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__PositionalProse_2
71.9% 71.3%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__SideOfTheBox_3
83% 80.4%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__Spaces_8
89.4% 77.7%
<!-- coverage-comment --> > 🔄 **Auto-updating coverage report** — this comment is regenerated on every push, so the numbers below always reflect the commit shown here, not the branch tip. > > **Commit:** `e198649` · **Generated:** 2026-10-17 16:31:20 UTC · **Revision:** #3 # Summary <details open><summary>Summary</summary> ||| |:---|:---| | Generated on: | 10/17/2026 - 16:31:20 | | Coverage date: | 10/17/2026 - 16:29:08 - 10/17/2026 - 16:31:16 | | Parser: | MultiReport (4x Cobertura) | | Assemblies: | 6 | | Classes: | 957 | | Files: | 433 | | **Line coverage:** | 97.5% (56055 of 57480) | | Covered lines: | 56055 | | Uncovered lines: | 1425 | | Coverable lines: | 57480 | | Total lines: | 85815 | | **Branch coverage:** | 89.2% (10500 of 11770) | | Covered branches: | 10500 | | Total branches: | 11770 | | **Method coverage:** | [Feature is only available for sponsors](https://reportgenerator.io/pro) | </details> ## Coverage <details><summary>Orihon.BlazorAdapter - 96.6%</summary> |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Orihon.BlazorAdapter**|**96.6%**|**91.3%**| |Orihon.BlazorAdapter.Bible.AddBeatRowRequested|100%|| |Orihon.BlazorAdapter.Bible.AddCharacterRowRequested|100%|| |Orihon.BlazorAdapter.Bible.AddGlossaryRowRequested|100%|| |Orihon.BlazorAdapter.Bible.AddHouseRuleRowRequested|100%|| |Orihon.BlazorAdapter.Bible.AddLoreRowRequested|100%|| |Orihon.BlazorAdapter.Bible.BibleEffects|89.8%|76.9%| |Orihon.BlazorAdapter.Bible.BibleLoaded|100%|| |Orihon.BlazorAdapter.Bible.BiblePage|92.3%|80.5%| |Orihon.BlazorAdapter.Bible.BibleReducers|90.6%|| |Orihon.BlazorAdapter.Bible.BibleState|100%|| |Orihon.BlazorAdapter.Bible.BibleWriteFailed|100%|| |Orihon.BlazorAdapter.Bible.DeleteBeatRowRequested|100%|| |Orihon.BlazorAdapter.Bible.DeleteCharacterRowRequested|100%|| |Orihon.BlazorAdapter.Bible.DeleteGlossaryRowRequested|100%|| |Orihon.BlazorAdapter.Bible.DeleteHouseRuleRowRequested|0%|| |Orihon.BlazorAdapter.Bible.DeleteLoreRowRequested|0%|| |Orihon.BlazorAdapter.Bible.LoadBible|100%|| |Orihon.BlazorAdapter.Bible.ReorderBeatsRequested|0%|| |Orihon.BlazorAdapter.Bible.SaveOverviewRequested|100%|| |Orihon.BlazorAdapter.Bible.SaveSummaryRequested|100%|| |Orihon.BlazorAdapter.Bible.UpdateBeatRowRequested|100%|| |Orihon.BlazorAdapter.Bible.UpdateCharacterRowRequested|100%|| |Orihon.BlazorAdapter.Bible.UpdateGlossaryRowRequested|100%|| |Orihon.BlazorAdapter.Bible.UpdateHouseRuleRowRequested|100%|| |Orihon.BlazorAdapter.Bible.UpdateLoreRowRequested|100%|| |Orihon.BlazorAdapter.BlazorAdapterAssembly|100%|| |Orihon.BlazorAdapter.PageWorkspace.BoxSendBackRefused|100%|| |Orihon.BlazorAdapter.PageWorkspace.CleanedDraft|100%|| |Orihon.BlazorAdapter.PageWorkspace.CleanedView|100%|100%| |Orihon.BlazorAdapter.PageWorkspace.CleaningReprocessSent|100%|| |Orihon.BlazorAdapter.PageWorkspace.CreateRegionRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.DeletePageSummaryRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.DeleteRegionRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.LoadPageCleaning|100%|| |Orihon.BlazorAdapter.PageWorkspace.LoadPageWorkspace|100%|| |Orihon.BlazorAdapter.PageWorkspace.MatchSourceToBoxRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.PageCleaningLoaded|100%|| |Orihon.BlazorAdapter.PageWorkspace.PageStepsLoaded|100%|| |Orihon.BlazorAdapter.PageWorkspace.PageSummarySaved|100%|| |Orihon.BlazorAdapter.PageWorkspace.PageViewport|100%|100%| |Orihon.BlazorAdapter.PageWorkspace.PageWorkspaceEffects|100%|100%| |Orihon.BlazorAdapter.PageWorkspace.PageWorkspaceLoaded|100%|| |Orihon.BlazorAdapter.PageWorkspace.PageWorkspacePage|96.3%|92.4%| |Orihon.BlazorAdapter.PageWorkspace.PageWorkspaceReducers|100%|68.7%| |Orihon.BlazorAdapter.PageWorkspace.PageWorkspaceState|100%|| |Orihon.BlazorAdapter.PageWorkspace.PageWriteFailed|100%|| |Orihon.BlazorAdapter.PageWorkspace.PickCandidateRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.RegionCreated|100%|| |Orihon.BlazorAdapter.PageWorkspace.RegionSaved|100%|| |Orihon.BlazorAdapter.PageWorkspace.ReorderRegionsRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.ReprocessCleaningRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.ReprocessPageRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.ReprocessTranscriptionRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.ReprocessTranslationRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.RunBoxAgainRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.RunTranscriptionAgainRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.SavePageSummaryRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.SaveRegionRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.SetPageMetaRequested|100%|| |Orihon.BlazorAdapter.PageWorkspace.TextReviewNoteLoaded|100%|| |Orihon.BlazorAdapter.PageWorkspace.TranscriptionSendBackRefused|100%|| |Orihon.BlazorAdapter.Projects.CreateProjectRequested|100%|| |Orihon.BlazorAdapter.Projects.DecideSetupContinuation|100%|| |Orihon.BlazorAdapter.Projects.DeleteProjectRequested|100%|| |Orihon.BlazorAdapter.Projects.FinishSetupRequested|100%|| |Orihon.BlazorAdapter.Projects.ImportPagesRequested|100%|| |Orihon.BlazorAdapter.Projects.LoadWizard|100%|| |Orihon.BlazorAdapter.Projects.PageOrganizer|96%|95%| |Orihon.BlazorAdapter.Projects.PagesImported|100%|| |Orihon.BlazorAdapter.Projects.ProjectDeleteFailed|100%|| |Orihon.BlazorAdapter.Projects.ProjectListEffects|100%|100%| |Orihon.BlazorAdapter.Projects.ProjectListPage|89.7%|91.6%| |Orihon.BlazorAdapter.Projects.ProjectListReducers|100%|| |Orihon.BlazorAdapter.Projects.ProjectListState|100%|| |Orihon.BlazorAdapter.Projects.ProjectsLoaded|100%|| |Orihon.BlazorAdapter.Projects.ProjectWizardEffects|93.8%|90%| |Orihon.BlazorAdapter.Projects.ProjectWizardPage|95.3%|84.1%| |Orihon.BlazorAdapter.Projects.ProjectWizardReducers|100%|| |Orihon.BlazorAdapter.Projects.ProjectWizardState|100%|| |Orihon.BlazorAdapter.Projects.SetupChat|93.5%|100%| |Orihon.BlazorAdapter.Projects.SetupChatEffects|100%|100%| |Orihon.BlazorAdapter.Projects.SetupChatFailed|100%|| |Orihon.BlazorAdapter.Projects.SetupChatReducers|100%|| |Orihon.BlazorAdapter.Projects.SetupChatState|100%|| |Orihon.BlazorAdapter.Projects.SetupChatUpdated|100%|| |Orihon.BlazorAdapter.Projects.StartSetupChat|100%|| |Orihon.BlazorAdapter.Projects.SubmitSetupAnswer|100%|| |Orihon.BlazorAdapter.Projects.WizardDeletePagesRequested|100%|| |Orihon.BlazorAdapter.Projects.WizardLoaded|100%|| |Orihon.BlazorAdapter.Projects.WizardMovePagesRequested|100%|| |Orihon.BlazorAdapter.Projects.WizardMovePagesToNewChapterRequested|100%|| |Orihon.BlazorAdapter.Projects.WizardReorderPagesRequested|100%|| |Orihon.BlazorAdapter.Projects.WizardWriteFailed|100%|| |Orihon.BlazorAdapter.Rulings.AcceptProposalRequested|100%|| |Orihon.BlazorAdapter.Rulings.AnsweredRuling|100%|| |Orihon.BlazorAdapter.Rulings.AnswerRulingRequested|100%|| |Orihon.BlazorAdapter.Rulings.DeclineProposalRequested|100%|| |Orihon.BlazorAdapter.Rulings.DismissRulingRequested|100%|| |Orihon.BlazorAdapter.Rulings.RulingBar|100%|96.4%| |Orihon.BlazorAdapter.Rulings.RulingDeskBridge|94.2%|91.6%| |Orihon.BlazorAdapter.Rulings.RulingsEffects|95.4%|83.3%| |Orihon.BlazorAdapter.Rulings.RulingsLoaded|100%|| |Orihon.BlazorAdapter.Rulings.RulingsReducers|100%|| |Orihon.BlazorAdapter.Rulings.RulingsState|100%|| |Orihon.BlazorAdapter.Rulings.RulingWriteFailed|100%|| |Orihon.BlazorAdapter.Rulings.SaveAnswerAsHouseRuleRequested|100%|| |Orihon.BlazorAdapter.Runs.CancelMonitorRun|100%|| |Orihon.BlazorAdapter.Runs.MonitorPageRef|100%|| |Orihon.BlazorAdapter.Runs.MonitorRunLoaded|100%|| |Orihon.BlazorAdapter.Runs.RetryMonitorExecution|100%|| |Orihon.BlazorAdapter.Runs.RunChangedBridge|95%|92.8%| |Orihon.BlazorAdapter.Runs.RunMonitor|98.3%|95%| |Orihon.BlazorAdapter.Runs.RunMonitorEffects|100%|92.8%| |Orihon.BlazorAdapter.Runs.RunMonitorReducers|100%|| |Orihon.BlazorAdapter.Runs.RunMonitorState|100%|| |Orihon.BlazorAdapter.Settings.AgentDebriefsLoaded|100%|| |Orihon.BlazorAdapter.Settings.AgentDebriefsLoadFailed|100%|| |Orihon.BlazorAdapter.Settings.AgentEffortPicked|100%|| |Orihon.BlazorAdapter.Settings.AgentEffortSaved|100%|| |Orihon.BlazorAdapter.Settings.AgentEffortSaveFailed|100%|| |Orihon.BlazorAdapter.Settings.AgentFeedbackLoaded|100%|| |Orihon.BlazorAdapter.Settings.AgentFeedbackLoadFailed|0%|| |Orihon.BlazorAdapter.Settings.AgentModelPicked|100%|| |Orihon.BlazorAdapter.Settings.AgentModelSaved|100%|| |Orihon.BlazorAdapter.Settings.AgentModelSaveFailed|100%|| |Orihon.BlazorAdapter.Settings.AgentRoutingPicked|100%|| |Orihon.BlazorAdapter.Settings.AgentRoutingSaved|100%|| |Orihon.BlazorAdapter.Settings.AgentRoutingSaveFailed|0%|| |Orihon.BlazorAdapter.Settings.AgentTranscriptsLoaded|100%|| |Orihon.BlazorAdapter.Settings.AgentTranscriptsLoadFailed|0%|| |Orihon.BlazorAdapter.Settings.CleaningInFlightPicked|100%|| |Orihon.BlazorAdapter.Settings.CleaningInFlightSaveFailed|100%|| |Orihon.BlazorAdapter.Settings.CleaningResumed|100%|| |Orihon.BlazorAdapter.Settings.CleaningRunnerLoaded|100%|| |Orihon.BlazorAdapter.Settings.CleaningServerChecked|100%|| |Orihon.BlazorAdapter.Settings.CleaningServerSaved|100%|| |Orihon.BlazorAdapter.Settings.CleaningServerSaveFailed|100%|| |Orihon.BlazorAdapter.Settings.EffortOption|100%|100%| |Orihon.BlazorAdapter.Settings.KeySaved|100%|| |Orihon.BlazorAdapter.Settings.KeySaveFailed|100%|| |Orihon.BlazorAdapter.Settings.ModelOptionsLoaded|100%|| |Orihon.BlazorAdapter.Settings.ModelOptionsUnavailable|100%|| |Orihon.BlazorAdapter.Settings.ResumeCleaningFailed|100%|| |Orihon.BlazorAdapter.Settings.RoutingOption|100%|100%| |Orihon.BlazorAdapter.Settings.RunConcurrencyPicked|100%|| |Orihon.BlazorAdapter.Settings.RunConcurrencySaveFailed|100%|| |Orihon.BlazorAdapter.Settings.SaveCleaningServerRequested|100%|| |Orihon.BlazorAdapter.Settings.SaveKeyRequested|100%|| |Orihon.BlazorAdapter.Settings.SettingsEffects|92.3%|83.3%| |Orihon.BlazorAdapter.Settings.SettingsLoaded|100%|| |Orihon.BlazorAdapter.Settings.SettingsPage|97.7%|91.5%| |Orihon.BlazorAdapter.Settings.SettingsReducers|96.1%|64.2%| |Orihon.BlazorAdapter.Settings.SettingsState|100%|| |Orihon.BlazorAdapter.Settings.TranscriptFilterPicked|100%|| |Orihon.BlazorAdapter.Settings.TranscriptPagePicked|100%|| |Orihon.BlazorAdapter.Settings.TranscriptPicked|100%|| |Orihon.BlazorAdapter.Settings.TranscriptTextLoaded|100%|| |Orihon.BlazorAdapter.Settings.TranscriptTextLoadFailed|100%|| |Orihon.BlazorAdapter.Uploads.UploadTransfer|96.5%|100%| |Orihon.BlazorAdapter.Uploads.UploadTransferProgress|100%|100%| |Orihon.BlazorAdapter.Uploads.UploadTransferResult|100%|| |Orihon.BlazorAdapter.Workspace.BoxAnswered|100%|| |Orihon.BlazorAdapter.Workspace.CleanAnswered|100%|| |Orihon.BlazorAdapter.Workspace.CreateChapterRequested|100%|| |Orihon.BlazorAdapter.Workspace.DeleteChapterRequested|100%|| |Orihon.BlazorAdapter.Workspace.DeletePageRequested|100%|| |Orihon.BlazorAdapter.Workspace.DeleteSummaryRequested|100%|| |Orihon.BlazorAdapter.Workspace.LoadProjectWorkspace|100%|| |Orihon.BlazorAdapter.Workspace.MovePageRequested|100%|| |Orihon.BlazorAdapter.Workspace.ProjectMetadataCard|95.6%|92.8%| |Orihon.BlazorAdapter.Workspace.ProjectMetadataSaved|100%|| |Orihon.BlazorAdapter.Workspace.ProjectWorkspaceEffects|100%|100%| |Orihon.BlazorAdapter.Workspace.ProjectWorkspaceLoaded|100%|| |Orihon.BlazorAdapter.Workspace.ProjectWorkspacePage|95.8%|87.7%| |Orihon.BlazorAdapter.Workspace.ProjectWorkspaceReducers|100%|62.5%| |Orihon.BlazorAdapter.Workspace.ProjectWorkspaceState|100%|| |Orihon.BlazorAdapter.Workspace.RenameChapterRequested|100%|| |Orihon.BlazorAdapter.Workspace.ReorderChaptersRequested|100%|| |Orihon.BlazorAdapter.Workspace.ReorderPagesRequested|100%|| |Orihon.BlazorAdapter.Workspace.RunBibleRequested|100%|| |Orihon.BlazorAdapter.Workspace.RunBoxRequested|100%|| |Orihon.BlazorAdapter.Workspace.RunCleanRequested|100%|| |Orihon.BlazorAdapter.Workspace.RunTranscriptionRequested|100%|| |Orihon.BlazorAdapter.Workspace.RunTranslationRequested|100%|| |Orihon.BlazorAdapter.Workspace.SaveProjectMetadataRequested|100%|| |Orihon.BlazorAdapter.Workspace.SaveSummaryRequested|100%|| |Orihon.BlazorAdapter.Workspace.SetPageKindRequested|100%|| |Orihon.BlazorAdapter.Workspace.SummaryDeleted|100%|| |Orihon.BlazorAdapter.Workspace.SummarySaved|100%|| |Orihon.BlazorAdapter.Workspace.TranscribeAnswered|100%|| |Orihon.BlazorAdapter.Workspace.WorkspaceImportRequested|100%|| |Orihon.BlazorAdapter.Workspace.WorkspaceWriteFailed|100%|| </details> <details><summary>Orihon.Domain - 100%</summary> |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Orihon.Domain**|**100%**|**100%**| |Orihon.Domain.Agents.AgentDebrief|100%|100%| |Orihon.Domain.Agents.AgentDescriptor|100%|100%| |Orihon.Domain.Agents.AgentFeedback|100%|100%| |Orihon.Domain.Agents.AgentRoster|100%|100%| |Orihon.Domain.Agents.InvocationBudget|100%|| |Orihon.Domain.Bible.Character|100%|100%| |Orihon.Domain.Bible.GlossaryEntry|100%|100%| |Orihon.Domain.Bible.HouseRule|100%|| |Orihon.Domain.Bible.LoreEntry|100%|100%| |Orihon.Domain.Bible.PageSummary|100%|| |Orihon.Domain.Bible.StoryBeat|100%|| |Orihon.Domain.Bible.StoryOverview|100%|| |Orihon.Domain.Cleaning.AppliedResult|100%|| |Orihon.Domain.Cleaning.CleaningBasis|100%|| |Orihon.Domain.Cleaning.CleaningCall|100%|100%| |Orihon.Domain.Cleaning.CleaningCallRect|100%|| |Orihon.Domain.Cleaning.CleaningCanvas|100%|| |Orihon.Domain.Cleaning.CleaningClause|100%|| |Orihon.Domain.Cleaning.CleaningEdit|100%|100%| |Orihon.Domain.Cleaning.CleaningJudgement|100%|| |Orihon.Domain.Cleaning.CleaningOutput|100%|100%| |Orihon.Domain.Cleaning.CleaningOverrides|100%|| |Orihon.Domain.Cleaning.CleaningServerIdentity|100%|| |Orihon.Domain.Cleaning.CleaningServerState|100%|100%| |Orihon.Domain.Cleaning.CleaningVerdicts|100%|100%| |Orihon.Domain.Cleaning.CleaningViewRecord|100%|100%| |Orihon.Domain.Cleaning.CleaningWindow|100%|| |Orihon.Domain.Cleaning.EditedRegion|100%|| |Orihon.Domain.Cleaning.PageBox|100%|100%| |Orihon.Domain.Cleaning.PageCleaning|100%|100%| |Orihon.Domain.Cleaning.PlannedCleaningCall|100%|| |Orihon.Domain.Cleaning.RegionCleaning|100%|100%| |Orihon.Domain.Cleaning.RegionShape|100%|| |Orihon.Domain.Cleaning.ResultSource|100%|100%| |Orihon.Domain.Cleaning.ViewTile|100%|| |Orihon.Domain.Projects.Project|100%|100%| |Orihon.Domain.Projects.ProjectProfile|100%|| |Orihon.Domain.Runs.AnsweredPoint|100%|| |Orihon.Domain.Runs.Execution|100%|100%| |Orihon.Domain.Runs.RegionProblem|100%|| |Orihon.Domain.Runs.ReviewVerdict|100%|| |Orihon.Domain.Runs.Run|100%|| |Orihon.Domain.Settings.AppSetting|100%|| |Orihon.Domain.Text|100%|100%| |Orihon.Domain.Translation.BoundingBox|100%|100%| |Orihon.Domain.Translation.Chapter|100%|| |Orihon.Domain.Translation.Page|100%|100%| |Orihon.Domain.Translation.Region|100%|100%| |Orihon.Domain.Translation.RegionProfile|100%|| </details> <details><summary>Orihon.Infrastructure - 98.6%</summary> |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Orihon.Infrastructure**|**98.6%**|**87.8%**| |Orihon.Infrastructure.Agents.EfAgentDebriefStore|100%|| |Orihon.Infrastructure.Agents.EfAgentFeedbackStore|100%|| |Orihon.Infrastructure.Bible.EfBibleStore|95.2%|92.8%| |Orihon.Infrastructure.Cleaning.EfCleaningCallStore|98.8%|100%| |Orihon.Infrastructure.Cleaning.EfCleaningStateStore|100%|100%| |Orihon.Infrastructure.DependencyInjection|100%|100%| |Orihon.Infrastructure.Gateways.AgentToolAdapter|100%|| |Orihon.Infrastructure.Gateways.AgentToolAdapter`1|100%|100%| |Orihon.Infrastructure.Gateways.AgentTranscript|98.9%|95.2%| |Orihon.Infrastructure.Gateways.Cleaning.BoxChecks|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.DerivedInk|100%|| |Orihon.Infrastructure.Gateways.Cleaning.EdgeMetrics|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.FillResult|100%|| |Orihon.Infrastructure.Gateways.Cleaning.GateStats|100%|| |Orihon.Infrastructure.Gateways.Cleaning.GreyRule|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.LabComposite|100%|98.2%| |Orihon.Infrastructure.Gateways.Cleaning.LabFill|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.LabGeometry|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.LabInk|100%|98.3%| |Orihon.Infrastructure.Gateways.Cleaning.LabMetrics|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.LabPaper|100%|97.3%| |Orihon.Infrastructure.Gateways.Cleaning.LabReadings|100%|| |Orihon.Infrastructure.Gateways.Cleaning.LabTone|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.PageRects|100%|| |Orihon.Infrastructure.Gateways.Cleaning.PaperComponent|100%|| |Orihon.Infrastructure.Gateways.Cleaning.PatchPixels|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.RasterCleaningCompositor|100%|98%| |Orihon.Infrastructure.Gateways.Cleaning.RasterCleaningImages|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.RasterCleaningMetrics|100%|97.3%| |Orihon.Infrastructure.Gateways.Cleaning.RasterCleaningViews|99.4%|98.3%| |Orihon.Infrastructure.Gateways.Cleaning.RasterInkAnalyzer|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.RasterPlateComposer|100%|100%| |Orihon.Infrastructure.Gateways.Cleaning.Rgb|100%|| |Orihon.Infrastructure.Gateways.Cleaning.ToneCurve|100%|| |Orihon.Infrastructure.Gateways.Cleaning.ViewTiling|100%|100%| |Orihon.Infrastructure.Gateways.FileSystemAgentTranscriptStore|85.2%|80.8%| |Orihon.Infrastructure.Gateways.HttpWebPageFetcher|100%|88.8%| |Orihon.Infrastructure.Gateways.LabelFont|100%|50%| |Orihon.Infrastructure.Gateways.OpenRouterLlmGateway|90.4%|82.1%| |Orihon.Infrastructure.Gateways.QwenImageServerGateway|96.7%|90%| |Orihon.Infrastructure.Gateways.QwenImageServerJson|96%|72.3%| |Orihon.Infrastructure.Gateways.Raster.FloatImage|77.7%|50%| |Orihon.Infrastructure.Gateways.Raster.GrayImage|95.8%|75%| |Orihon.Infrastructure.Gateways.Raster.Labels|100%|100%| |Orihon.Infrastructure.Gateways.Raster.Mask|99.1%|98.5%| |Orihon.Infrastructure.Gateways.Raster.NumpyMath|95.1%|95%| |Orihon.Infrastructure.Gateways.Raster.PillowBlur|98.4%|89.4%| |Orihon.Infrastructure.Gateways.Raster.PillowLanczos|100%|100%| |Orihon.Infrastructure.Gateways.Raster.PixelBox|100%|100%| |Orihon.Infrastructure.Gateways.Raster.RgbImage|96.4%|75%| |Orihon.Infrastructure.Gateways.Raster.ScipyGaussian|100%|100%| |Orihon.Infrastructure.Gateways.SkiaImages|100%|100%| |Orihon.Infrastructure.Gateways.SkiaPageImageRenderer|98.4%|93.3%| |Orihon.Infrastructure.Gateways.SkiaPixelDigest|100%|100%| |Orihon.Infrastructure.Gateways.UntaggedPng|100%|100%| |Orihon.Infrastructure.Persistence.Configurations.AgentDebriefConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.AgentFeedbackConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.AppSettingConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.ChapterConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.CharacterConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.CleaningCallConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.CleaningEditConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.CleaningOutputConfiguratio<br/>n|100%|| |Orihon.Infrastructure.Persistence.Configurations.CleaningServerStateConfigu<br/>ration|100%|| |Orihon.Infrastructure.Persistence.Configurations.CleaningViewConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.ExecutionConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.GlossaryEntryConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.HouseRuleConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.JsonColumnMapper|100%|| |Orihon.Infrastructure.Persistence.Configurations.LoreEntryConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.PageCleaningConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.PageConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.PageSummaryConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.ProjectConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.RegionCleaningConfiguratio<br/>n|100%|| |Orihon.Infrastructure.Persistence.Configurations.RegionConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.RunConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.StoryBeatConfiguration|100%|| |Orihon.Infrastructure.Persistence.Configurations.StoryOverviewConfiguration|100%|| |Orihon.Infrastructure.Persistence.Converters.UtcTicksConverter|100%|| |Orihon.Infrastructure.Persistence.Migrations.AddAgentDebriefs|99.5%|| |Orihon.Infrastructure.Persistence.Migrations.AddAgentFeedback|99.5%|| |Orihon.Infrastructure.Persistence.Migrations.AddAppSettings|99.3%|| |Orihon.Infrastructure.Persistence.Migrations.AddCleaningCallAttempt|99.6%|| |Orihon.Infrastructure.Persistence.Migrations.AddCleaningCallCanvasMode|99.6%|| |Orihon.Infrastructure.Persistence.Migrations.AddCleaningCallRunner|99.3%|| |Orihon.Infrastructure.Persistence.Migrations.AddCleaningStageFacts|99.1%|| |Orihon.Infrastructure.Persistence.Migrations.AddCleaningState|99.1%|| |Orihon.Infrastructure.Persistence.Migrations.AddExecutionAnswer|100%|| |Orihon.Infrastructure.Persistence.Migrations.AddExecutionFeedbackRegions|99.3%|| |Orihon.Infrastructure.Persistence.Migrations.AddExecutionSentBackBy|99.6%|| |Orihon.Infrastructure.Persistence.Migrations.AddExecutionVerdict|100%|| |Orihon.Infrastructure.Persistence.Migrations.AddHouseRules|99.6%|| |Orihon.Infrastructure.Persistence.Migrations.AddPagePassFacts|99%|| |Orihon.Infrastructure.Persistence.Migrations.AddProjectSourceLanguage|99.3%|| |Orihon.Infrastructure.Persistence.Migrations.AddRegionBoxApproved|99.6%|| |Orihon.Infrastructure.Persistence.Migrations.AddRegionFitBoxDropFillHints|98.1%|| |Orihon.Infrastructure.Persistence.Migrations.AddRegionForm|99.4%|| |Orihon.Infrastructure.Persistence.Migrations.AddRegionInk|99.4%|| |Orihon.Infrastructure.Persistence.Migrations.AddRegionSourceBox|99.6%|| |Orihon.Infrastructure.Persistence.Migrations.AddRuns|99.1%|| |Orihon.Infrastructure.Persistence.Migrations.AddStoryOverview|99.5%|| |Orihon.Infrastructure.Persistence.Migrations.AddTextDoneAndReviewNote|99.2%|| |Orihon.Infrastructure.Persistence.Migrations.DropRegionContainer|99.1%|| |Orihon.Infrastructure.Persistence.Migrations.DropRegionInk|99.5%|| |Orihon.Infrastructure.Persistence.Migrations.DropRegionType|99%|| |Orihon.Infrastructure.Persistence.Migrations.DropRegionTypeset|99.4%|| |Orihon.Infrastructure.Persistence.Migrations.InitialTranslationDomain|97.3%|| |Orihon.Infrastructure.Persistence.Migrations.OneNoteEntryPerLine|100%|| |Orihon.Infrastructure.Persistence.Migrations.OrihonDbContextModelSnapshot|100%|| |Orihon.Infrastructure.Persistence.Migrations.RenameSourceTargetColumns|97.2%|| |Orihon.Infrastructure.Persistence.Migrations.ReplaceFitBoxWithContainerSeed|99.2%|| |Orihon.Infrastructure.Persistence.Migrations.RetireFloatingPassAndAddBoxesD<br/>one|98.1%|100%| |Orihon.Infrastructure.Persistence.Migrations.SplitRegionNotesIntoStages|100%|| |Orihon.Infrastructure.Persistence.OrihonDbContext|100%|| |Orihon.Infrastructure.Persistence.OrihonDbContextFactory|100%|| |Orihon.Infrastructure.Projects.EfProjectStore|100%|100%| |Orihon.Infrastructure.Projects.FileSystemPageImageStore|100%|100%| |Orihon.Infrastructure.Runs.EfRunStore|100%|100%| |Orihon.Infrastructure.Settings.EfAppSettingsStore|100%|100%| |Orihon.Infrastructure.Translation.EfChapterStore|100%|100%| |Orihon.Infrastructure.Translation.EfPageStore|100%|100%| |Orihon.Infrastructure.Translation.EfRegionStore|100%|100%| |Orihon.Infrastructure.Translation.Ordering|100%|100%| |System.Text.RegularExpressions.Generated|71.1%|54.2%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7FCA343D2B99030<br/>A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__BlankLines_4|79.5%|80%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7FCA343D2B99030<br/>A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__BlockBreaks_1|59%|42.5%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7FCA343D2B99030<br/>A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__SpaceRuns_3|89.4%|75%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7FCA343D2B99030<br/>A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__Tags_2|83.7%|62.5%| </details> <details><summary>Orihon.Kernel - 90.9%</summary> |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Orihon.Kernel**|**90.9%**|**75%**| |Orihon.Kernel.Err`1|100%|| |Orihon.Kernel.Ok`1|100%|| |Orihon.Kernel.Result`1|88.8%|75%| </details> <details><summary>Orihon.Server - 95.2%</summary> |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Orihon.Server**|**95.2%**|**79.4%**| |Orihon.Server.CleaningCallRunnerBootstrap|100%|| |Orihon.Server.Components.App|100%|| |Orihon.Server.Components.Layout.AppHeader|100%|78.5%| |Orihon.Server.Components.Layout.MainLayout|100%|| |Orihon.Server.Components.Pages.Gate|64.2%|66.6%| |Orihon.Server.Diagnostics.FakeCleaningServer|94.6%|80.7%| |Orihon.Server.RunEngineBootstrap|100%|| |Orihon.Server.Security.AccessGate|91.8%|41.6%| |Orihon.Server.Security.AccessSecret|100%|50%| |Orihon.Server.VolumeStartupValidator|100%|100%| |Program|96.7%|85.7%| </details> <details><summary>Orihon.UseCases - 94.6%</summary> |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Orihon.UseCases**|**94.6%**|**89.2%**| |Orihon.UseCases.Agents.AgentAttemptPreparation|100%|| |Orihon.UseCases.Agents.AgentAttemptSupport|98.7%|98.9%| |Orihon.UseCases.Agents.AgentBlueprint|100%|| |Orihon.UseCases.Agents.AgentCapDebrief|100%|| |Orihon.UseCases.Agents.AgentGlossary|100%|| |Orihon.UseCases.Agents.AgentInvocation|100%|| |Orihon.UseCases.Agents.AgentOutcome|100%|| |Orihon.UseCases.Agents.AgentTexts|100%|100%| |Orihon.UseCases.Agents.AgentTool`1|100%|100%| |Orihon.UseCases.Agents.AgentToolImage|100%|| |Orihon.UseCases.Agents.AgentToolResult|100%|| |Orihon.UseCases.Agents.Annotation.AddRegionParams|100%|| |Orihon.UseCases.Agents.Annotation.AddRegionTool|100%|100%| |Orihon.UseCases.Agents.Annotation.AnnotationBlueprints|100%|100%| |Orihon.UseCases.Agents.Annotation.AnnotationStage|100%|90%| |Orihon.UseCases.Agents.Annotation.AnsweredPointParams|100%|| |Orihon.UseCases.Agents.Annotation.AnswerFeedbackParams|100%|| |Orihon.UseCases.Agents.Annotation.AnswerFeedbackTool|100%|100%| |Orihon.UseCases.Agents.Annotation.BoundBoxParams|100%|| |Orihon.UseCases.Agents.Annotation.BoundContactSheetTool|95.6%|87.5%| |Orihon.UseCases.Agents.Annotation.BoundCropParams|100%|| |Orihon.UseCases.Agents.Annotation.BoundCropTool|100%|| |Orihon.UseCases.Agents.Annotation.BoundDeleteParams|100%|| |Orihon.UseCases.Agents.Annotation.BoundViewPageTool|96%|90%| |Orihon.UseCases.Agents.Annotation.BoundViewParams|100%|| |Orihon.UseCases.Agents.Annotation.BoxCreationExecutor|100%|92.8%| |Orihon.UseCases.Agents.Annotation.BoxQaExecutor|98.3%|93.7%| |Orihon.UseCases.Agents.Annotation.BoxRefinementExecutor|96.8%|93.7%| |Orihon.UseCases.Agents.Annotation.ClassifyRegionParams|100%|| |Orihon.UseCases.Agents.Annotation.ClassifyRegionTool|100%|100%| |Orihon.UseCases.Agents.Annotation.DeleteBoundRegionTool|100%|100%| |Orihon.UseCases.Agents.Annotation.DeleteRegionParams|100%|| |Orihon.UseCases.Agents.Annotation.DeleteRegionTool|100%|100%| |Orihon.UseCases.Agents.Annotation.FeedbackAnswerSink|100%|| |Orihon.UseCases.Agents.Annotation.FindGlossaryParams|100%|| |Orihon.UseCases.Agents.Annotation.FindGlossaryTool|94.4%|87.5%| |Orihon.UseCases.Agents.Annotation.ListRegionsTool|96.4%|95.8%| |Orihon.UseCases.Agents.Annotation.MoveResizeBoundTool|100%|100%| |Orihon.UseCases.Agents.Annotation.MoveResizeRegionParams|100%|| |Orihon.UseCases.Agents.Annotation.MoveResizeRegionTool|95.6%|75%| |Orihon.UseCases.Agents.Annotation.NoteRegionParams|100%|| |Orihon.UseCases.Agents.Annotation.NoteRegionTool|100%|100%| |Orihon.UseCases.Agents.Annotation.QaReportSink|100%|100%| |Orihon.UseCases.Agents.Annotation.RegionAuthoringAccess|91.3%|84.6%| |Orihon.UseCases.Agents.Annotation.RegionBriefing|100%|100%| |Orihon.UseCases.Agents.Annotation.RegionCropParams|100%|| |Orihon.UseCases.Agents.Annotation.RegionCropTool|100%|100%| |Orihon.UseCases.Agents.Annotation.RegionForms|100%|100%| |Orihon.UseCases.Agents.Annotation.RegionProblemParams|100%|| |Orihon.UseCases.Agents.Annotation.RegionWindow|100%|100%| |Orihon.UseCases.Agents.Annotation.RejectRegionParams|100%|| |Orihon.UseCases.Agents.Annotation.RejectRegionTool|100%|100%| |Orihon.UseCases.Agents.Annotation.ReorderRegionParams|100%|| |Orihon.UseCases.Agents.Annotation.ReorderRegionTool|96.2%|90%| |Orihon.UseCases.Agents.Annotation.ReportQaParams|100%|100%| |Orihon.UseCases.Agents.Annotation.ReportQaTool|100%|100%| |Orihon.UseCases.Agents.Annotation.SetPageMetaParams|100%|| |Orihon.UseCases.Agents.Annotation.SetPageMetaTool|100%|90%| |Orihon.UseCases.Agents.Annotation.SetTranscriptionParams|100%|| |Orihon.UseCases.Agents.Annotation.SetTranscriptionTool|100%|100%| |Orihon.UseCases.Agents.Annotation.TextProblemParams|100%|| |Orihon.UseCases.Agents.Annotation.TextReportQaParams|100%|100%| |Orihon.UseCases.Agents.Annotation.TextReportQaTool|100%|100%| |Orihon.UseCases.Agents.Annotation.TranscriptionExecutor|96.8%|91.6%| |Orihon.UseCases.Agents.Annotation.TranscriptionQaExecutor|97.5%|86.3%| |Orihon.UseCases.Agents.Annotation.VerdictTool`1|97%|90%| |Orihon.UseCases.Agents.AssistantSpoke|100%|| |Orihon.UseCases.Agents.AvoidedWord|100%|| |Orihon.UseCases.Agents.BibleBuilding.BibleBuildingBlueprint|100%|| |Orihon.UseCases.Agents.BibleBuilding.BibleBuildingExecutor|96.9%|75%| |Orihon.UseCases.Agents.BibleBuilding.GetRegionParams|100%|| |Orihon.UseCases.Agents.BibleBuilding.GetRegionTool|100%|83.3%| |Orihon.UseCases.Agents.BibleBuilding.ListProjectRegionsTool|96.2%|90%| |Orihon.UseCases.Agents.BibleBuilding.ListRegionsParams|100%|| |Orihon.UseCases.Agents.Cleaning.AcceptEntryParams|100%|| |Orihon.UseCases.Agents.Cleaning.AcceptParams|100%|| |Orihon.UseCases.Agents.Cleaning.AcceptTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.AddMissedRegionParams|100%|| |Orihon.UseCases.Agents.Cleaning.AddMissedRegionTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.CheckCompareParams|100%|| |Orihon.UseCases.Agents.Cleaning.CheckCompareTool|100%|90%| |Orihon.UseCases.Agents.Cleaning.CheckPageParams|100%|| |Orihon.UseCases.Agents.Cleaning.CheckViewPageTool|100%|| |Orihon.UseCases.Agents.Cleaning.CleaningBlueprints|100%|100%| |Orihon.UseCases.Agents.Cleaning.CleaningBriefing|100%|96.9%| |Orihon.UseCases.Agents.Cleaning.CleaningClassifyParams|100%|| |Orihon.UseCases.Agents.Cleaning.CleaningClassifyRegionTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.CleaningCropParams|100%|| |Orihon.UseCases.Agents.Cleaning.CleaningCropTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.CleaningExecutor|99.1%|99%| |Orihon.UseCases.Agents.Cleaning.CleaningFinish|100%|100%| |Orihon.UseCases.Agents.Cleaning.CleaningListRegionsTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.CleaningLooksAt|100%|100%| |Orihon.UseCases.Agents.Cleaning.CleaningMoveParams|100%|| |Orihon.UseCases.Agents.Cleaning.CleaningMoveRegionTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.CleaningPageParams|100%|| |Orihon.UseCases.Agents.Cleaning.CleaningRegionParams|100%|| |Orihon.UseCases.Agents.Cleaning.CleaningStatusTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.CleaningToolAccess|96.5%|96.1%| |Orihon.UseCases.Agents.Cleaning.CleaningWords|100%|100%| |Orihon.UseCases.Agents.Cleaning.CleanParams|100%|| |Orihon.UseCases.Agents.Cleaning.CleanRegionParams|100%|| |Orihon.UseCases.Agents.Cleaning.CleanTool|98.3%|95.4%| |Orihon.UseCases.Agents.Cleaning.EscalateParams|100%|| |Orihon.UseCases.Agents.Cleaning.EscalateTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.FillParams|100%|| |Orihon.UseCases.Agents.Cleaning.FillTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.FinalizeTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.FinishPageParams|100%|| |Orihon.UseCases.Agents.Cleaning.FinishPageTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.FinishSurveyTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.GroupCompareParams|100%|| |Orihon.UseCases.Agents.Cleaning.GroupCompareTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.GroupMeasureInkParams|100%|| |Orihon.UseCases.Agents.Cleaning.GroupMeasureInkTool|100%|| |Orihon.UseCases.Agents.Cleaning.InkReading|100%|100%| |Orihon.UseCases.Agents.Cleaning.MeasureInkParams|100%|| |Orihon.UseCases.Agents.Cleaning.MeasureInkTool|100%|| |Orihon.UseCases.Agents.Cleaning.ModelCompareParams|100%|| |Orihon.UseCases.Agents.Cleaning.ModelCompareTool|100%|| |Orihon.UseCases.Agents.Cleaning.ModelWords|100%|90%| |Orihon.UseCases.Agents.Cleaning.RecompositeParams|100%|| |Orihon.UseCases.Agents.Cleaning.RecompositeTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.RejectParams|100%|| |Orihon.UseCases.Agents.Cleaning.RejectTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.Rubric|100%|100%| |Orihon.UseCases.Agents.Cleaning.SplitRegionParams|100%|| |Orihon.UseCases.Agents.Cleaning.SplitRegionTool|100%|100%| |Orihon.UseCases.Agents.Cleaning.SurveyViewPageTool|100%|| |Orihon.UseCases.Agents.Cleaning.UndoTool|100%|100%| |Orihon.UseCases.Agents.GlossaryTerm|100%|| |Orihon.UseCases.Agents.Inspection.PageImageAccess|93.2%|83.3%| |Orihon.UseCases.Agents.Inspection.ViewAccount|100%|100%| |Orihon.UseCases.Agents.Inspection.ViewTexts|100%|| |Orihon.UseCases.Agents.ReportFrictionParams|100%|| |Orihon.UseCases.Agents.ReportFrictionTool|100%|92.8%| |Orihon.UseCases.Agents.ResearchSetup.AddStoryBeatParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.AddStoryBeatTool|100%|75%| |Orihon.UseCases.Agents.ResearchSetup.AskUserParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.AskUserTool|100%|100%| |Orihon.UseCases.Agents.ResearchSetup.DeleteStoryBeatParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.DeleteStoryBeatTool|100%|100%| |Orihon.UseCases.Agents.ResearchSetup.FetchUrlParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.FetchUrlTool|100%|100%| |Orihon.UseCases.Agents.ResearchSetup.ListBibleTool|90.3%|66.6%| |Orihon.UseCases.Agents.ResearchSetup.ListPagesTool|97%|83.3%| |Orihon.UseCases.Agents.ResearchSetup.LocatedPage|100%|| |Orihon.UseCases.Agents.ResearchSetup.PageByNumber|94.8%|87.5%| |Orihon.UseCases.Agents.ResearchSetup.ResearchSetupBlueprint|100%|| |Orihon.UseCases.Agents.ResearchSetup.SetPageMetaParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.SetPageMetaTool|95.4%|80%| |Orihon.UseCases.Agents.ResearchSetup.SetPageSummaryParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.SetPageSummaryTool|96%|75%| |Orihon.UseCases.Agents.ResearchSetup.SetProjectMetadataParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.SetProjectMetadataTool|96.4%|95.8%| |Orihon.UseCases.Agents.ResearchSetup.SetStoryOverviewParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.SetStoryOverviewTool|100%|100%| |Orihon.UseCases.Agents.ResearchSetup.StoryBeatByNumber|100%|100%| |Orihon.UseCases.Agents.ResearchSetup.UpdateStoryBeatParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.UpdateStoryBeatTool|100%|75%| |Orihon.UseCases.Agents.ResearchSetup.UpsertCharacterParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.UpsertCharacterTool|96.1%|78.5%| |Orihon.UseCases.Agents.ResearchSetup.UpsertGlossaryParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.UpsertGlossaryTool|97.6%|95%| |Orihon.UseCases.Agents.ResearchSetup.UpsertLoreParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.UpsertLoreTool|96.1%|78.5%| |Orihon.UseCases.Agents.ResearchSetup.ViewPageParams|100%|| |Orihon.UseCases.Agents.ResearchSetup.ViewPageTool|100%|100%| |Orihon.UseCases.Agents.RoundStarted|100%|| |Orihon.UseCases.Agents.Rulings.AnswerRuling|100%|| |Orihon.UseCases.Agents.Rulings.DismissRuling|100%|| |Orihon.UseCases.Agents.Rulings.HouseRuleProposal|100%|| |Orihon.UseCases.Agents.Rulings.ListPendingRulings|100%|| |Orihon.UseCases.Agents.Rulings.ListRuleProposals|100%|| |Orihon.UseCases.Agents.Rulings.PendingRuling|100%|| |Orihon.UseCases.Agents.Rulings.ProposeHouseRuleParams|100%|| |Orihon.UseCases.Agents.Rulings.ProposeHouseRuleTool|100%|100%| |Orihon.UseCases.Agents.Rulings.RequestRulingParams|100%|| |Orihon.UseCases.Agents.Rulings.RequestRulingTool|100%|81.2%| |Orihon.UseCases.Agents.Rulings.RulingAnswer|100%|| |Orihon.UseCases.Agents.Rulings.RulingDesk|97.8%|80%| |Orihon.UseCases.Agents.Rulings.RulingOption|100%|| |Orihon.UseCases.Agents.Rulings.RulingOptionParams|100%|| |Orihon.UseCases.Agents.Rulings.SettledRuling|100%|| |Orihon.UseCases.Agents.Rulings.WithdrawRuleProposal|100%|| |Orihon.UseCases.Agents.Setup.ResearchSetupExecutor|98.4%|91.6%| |Orihon.UseCases.Agents.Setup.SetupChatEntry|100%|| |Orihon.UseCases.Agents.Setup.SetupConversation|100%|90.6%| |Orihon.UseCases.Agents.Setup.SetupConversationRegistry|100%|| |Orihon.UseCases.Agents.ToolCalled|100%|| |Orihon.UseCases.Agents.ToolCompleted|100%|| |Orihon.UseCases.Agents.TranscriptLabel|100%|100%| |Orihon.UseCases.Agents.Translation.GetPageSummaryParams|100%|| |Orihon.UseCases.Agents.Translation.GetPageSummaryTool|90.4%|66.6%| |Orihon.UseCases.Agents.Translation.NoteTranslationParams|100%|| |Orihon.UseCases.Agents.Translation.NoteTranslationTool|100%|100%| |Orihon.UseCases.Agents.Translation.SetTranslationParams|100%|| |Orihon.UseCases.Agents.Translation.SetTranslationTool|100%|100%| |Orihon.UseCases.Agents.Translation.TranslationBlueprint|100%|| |Orihon.UseCases.Agents.Translation.TranslationExecutor|93.8%|71.4%| |Orihon.UseCases.Agents.Translation.UpdateGlossaryEnParams|100%|| |Orihon.UseCases.Agents.Translation.UpdateGlossaryEnTool|95.8%|80%| |Orihon.UseCases.Bible.AddCharacter|100%|100%| |Orihon.UseCases.Bible.AddGlossaryEntry|100%|100%| |Orihon.UseCases.Bible.AddHouseRule|100%|100%| |Orihon.UseCases.Bible.AddLoreEntry|100%|100%| |Orihon.UseCases.Bible.AddStoryBeat|100%|100%| |Orihon.UseCases.Bible.BibleDto|100%|| |Orihon.UseCases.Bible.CharacterDto|100%|| |Orihon.UseCases.Bible.DeleteCharacter|100%|100%| |Orihon.UseCases.Bible.DeleteGlossaryEntry|100%|100%| |Orihon.UseCases.Bible.DeleteHouseRule|100%|100%| |Orihon.UseCases.Bible.DeleteLoreEntry|100%|100%| |Orihon.UseCases.Bible.DeletePageSummary|100%|100%| |Orihon.UseCases.Bible.DeleteStoryBeat|100%|100%| |Orihon.UseCases.Bible.GetBible|100%|100%| |Orihon.UseCases.Bible.GlossaryEntryDto|100%|| |Orihon.UseCases.Bible.HouseRuleDto|100%|| |Orihon.UseCases.Bible.LoreEntryDto|100%|| |Orihon.UseCases.Bible.PageSummaryDto|100%|| |Orihon.UseCases.Bible.ReorderStoryBeats|100%|| |Orihon.UseCases.Bible.SetPageSummary|100%|100%| |Orihon.UseCases.Bible.SetStoryOverview|100%|100%| |Orihon.UseCases.Bible.StoryBeatDto|100%|| |Orihon.UseCases.Bible.StoryOverviewDto|100%|| |Orihon.UseCases.Bible.UpdateCharacter|100%|100%| |Orihon.UseCases.Bible.UpdateGlossaryEntry|100%|100%| |Orihon.UseCases.Bible.UpdateHouseRule|100%|100%| |Orihon.UseCases.Bible.UpdateLoreEntry|100%|100%| |Orihon.UseCases.Bible.UpdateStoryBeat|100%|100%| |Orihon.UseCases.Chapters.ChapterDto|100%|| |Orihon.UseCases.Chapters.CreateChapter|100%|100%| |Orihon.UseCases.Chapters.DeleteChapter|100%|100%| |Orihon.UseCases.Chapters.RenameChapter|100%|100%| |Orihon.UseCases.Chapters.ReorderChapters|100%|| |Orihon.UseCases.Cleaning.AcceptCleaning|100%|98.3%| |Orihon.UseCases.Cleaning.AcceptEntry|100%|| |Orihon.UseCases.Cleaning.AddMissedRegion|100%|100%| |Orihon.UseCases.Cleaning.CallFrame|100%|100%| |Orihon.UseCases.Cleaning.CallFrames|100%|100%| |Orihon.UseCases.Cleaning.CallMember|100%|| |Orihon.UseCases.Cleaning.CallNote|100%|| |Orihon.UseCases.Cleaning.CanaryShape|100%|50%| |Orihon.UseCases.Cleaning.CandidatePick|100%|| |Orihon.UseCases.Cleaning.CandidatePickDto|100%|| |Orihon.UseCases.Cleaning.CandidateReading|100%|| |Orihon.UseCases.Cleaning.CanvasChoice|100%|| |Orihon.UseCases.Cleaning.ClassifyCleaningRegion|100%|100%| |Orihon.UseCases.Cleaning.CleanAnswer|100%|| |Orihon.UseCases.Cleaning.CleanAsk|100%|| |Orihon.UseCases.Cleaning.CleanAsked|100%|| |Orihon.UseCases.Cleaning.CleanCandidate|100%|| |Orihon.UseCases.Cleaning.CleanedRegionDto|96.2%|100%| |Orihon.UseCases.Cleaning.CleanedResultDto|100%|| |Orihon.UseCases.Cleaning.CleanedViewDto|100%|| |Orihon.UseCases.Cleaning.CleanFailed|100%|| |Orihon.UseCases.Cleaning.CleanHalted|100%|| |Orihon.UseCases.Cleaning.CleaningAccepted|100%|| |Orihon.UseCases.Cleaning.CleaningAssessment|100%|100%| |Orihon.UseCases.Cleaning.CleaningCacheKey|100%|100%| |Orihon.UseCases.Cleaning.CleaningCallDto|100%|| |Orihon.UseCases.Cleaning.CleaningCallFailed|100%|| |Orihon.UseCases.Cleaning.CleaningCallFile|100%|| |Orihon.UseCases.Cleaning.CleaningCallHalted|100%|| |Orihon.UseCases.Cleaning.CleaningCallRequest|100%|| |Orihon.UseCases.Cleaning.CleaningCallReturned|100%|| |Orihon.UseCases.Cleaning.CleaningCallRunner|97.6%|95.2%| |Orihon.UseCases.Cleaning.CleaningCanary|100%|| |Orihon.UseCases.Cleaning.CleaningCandidate|80%|| |Orihon.UseCases.Cleaning.CleaningCandidateDto|100%|| |Orihon.UseCases.Cleaning.CleaningCandidates|100%|97%| |Orihon.UseCases.Cleaning.CleaningComposites|100%|97.8%| |Orihon.UseCases.Cleaning.CleaningCoverage|100%|100%| |Orihon.UseCases.Cleaning.CleaningEditDto|77.7%|| |Orihon.UseCases.Cleaning.CleaningEdits|100%|100%| |Orihon.UseCases.Cleaning.CleaningEligibility|100%|100%| |Orihon.UseCases.Cleaning.CleaningFailure|100%|| |Orihon.UseCases.Cleaning.CleaningFailures|100%|97.6%| |Orihon.UseCases.Cleaning.CleaningFrames|100%|100%| |Orihon.UseCases.Cleaning.CleaningGpuTime|100%|| |Orihon.UseCases.Cleaning.CleaningGroupBinding|100%|100%| |Orihon.UseCases.Cleaning.CleaningHealth|100%|100%| |Orihon.UseCases.Cleaning.CleaningIdentity|100%|89.7%| |Orihon.UseCases.Cleaning.CleaningInvocation|100%|100%| |Orihon.UseCases.Cleaning.CleaningInvocationOptions|100%|| |Orihon.UseCases.Cleaning.CleaningJudgementDto|100%|| |Orihon.UseCases.Cleaning.CleaningLabels|100%|100%| |Orihon.UseCases.Cleaning.CleaningLooks|100%|100%| |Orihon.UseCases.Cleaning.CleaningModelCalls|100%|100%| |Orihon.UseCases.Cleaning.CleaningPage|100%|| |Orihon.UseCases.Cleaning.CleaningPageGuard|100%|100%| |Orihon.UseCases.Cleaning.CleaningPageLocks|100%|100%| |Orihon.UseCases.Cleaning.CleaningPatchLanding|100%|100%| |Orihon.UseCases.Cleaning.CleaningPlan|100%|| |Orihon.UseCases.Cleaning.CleaningPlanner|100%|100%| |Orihon.UseCases.Cleaning.CleaningPlanOptions|100%|| |Orihon.UseCases.Cleaning.CleaningRecipe|100%|| |Orihon.UseCases.Cleaning.CleaningRegionEdited|100%|| |Orihon.UseCases.Cleaning.CleaningRegions|100%|100%| |Orihon.UseCases.Cleaning.CleaningRegionUpkeep|100%|97.2%| |Orihon.UseCases.Cleaning.CleaningRejected|100%|| |Orihon.UseCases.Cleaning.CleaningRowNotes|100%|100%| |Orihon.UseCases.Cleaning.CleaningRowWords|100%|| |Orihon.UseCases.Cleaning.CleaningRunnerOptions|100%|| |Orihon.UseCases.Cleaning.CleaningRunnerStatus|100%|| |Orihon.UseCases.Cleaning.CleaningSeeds|100%|100%| |Orihon.UseCases.Cleaning.CleaningStatusRead|100%|| |Orihon.UseCases.Cleaning.CleaningTouchUp|100%|100%| |Orihon.UseCases.Cleaning.CleaningUndone|100%|| |Orihon.UseCases.Cleaning.CleaningViewDto|100%|| |Orihon.UseCases.Cleaning.CleaningViewOptions|100%|| |Orihon.UseCases.Cleaning.CleaningWork|100%|100%| |Orihon.UseCases.Cleaning.CleanMember|100%|| |Orihon.UseCases.Cleaning.CleanRegions|99.2%|96.8%| |Orihon.UseCases.Cleaning.CleanReturned|100%|| |Orihon.UseCases.Cleaning.CompareAsk|100%|| |Orihon.UseCases.Cleaning.CompareCleaningView|100%|96.9%| |Orihon.UseCases.Cleaning.CompareSourceAsk|100%|| |Orihon.UseCases.Cleaning.ComposedCandidate|100%|100%| |Orihon.UseCases.Cleaning.CompositeWarning|100%|| |Orihon.UseCases.Cleaning.CompositeWarnings|100%|100%| |Orihon.UseCases.Cleaning.ComputedFill|100%|| |Orihon.UseCases.Cleaning.CropAsk|100%|| |Orihon.UseCases.Cleaning.CropCleaningView|100%|100%| |Orihon.UseCases.Cleaning.EscalateCleaning|100%|100%| |Orihon.UseCases.Cleaning.FillRegion|100%|100%| |Orihon.UseCases.Cleaning.FillShown|100%|| |Orihon.UseCases.Cleaning.FinalizeGroup|100%|100%| |Orihon.UseCases.Cleaning.FinishPageCheck|100%|100%| |Orihon.UseCases.Cleaning.FinishSurvey|100%|100%| |Orihon.UseCases.Cleaning.GetCleanedView|99.3%|94.9%| |Orihon.UseCases.Cleaning.GetCleaningRunnerStatus|100%|| |Orihon.UseCases.Cleaning.GetCleaningStatus|100%|100%| |Orihon.UseCases.Cleaning.GpuWait|100%|| |Orihon.UseCases.Cleaning.GroupBinding|100%|| |Orihon.UseCases.Cleaning.GroupFinalized|100%|| |Orihon.UseCases.Cleaning.InkHints|100%|100%| |Orihon.UseCases.Cleaning.InkMeasured|100%|| |Orihon.UseCases.Cleaning.JobClock|100%|100%| |Orihon.UseCases.Cleaning.JobIdentity|100%|| |Orihon.UseCases.Cleaning.LabelProblem|100%|| |Orihon.UseCases.Cleaning.LoadedCandidate|100%|| |Orihon.UseCases.Cleaning.MagnifiedCanvas|100%|| |Orihon.UseCases.Cleaning.MeasureCleaningInk|100%|100%| |Orihon.UseCases.Cleaning.ModelSource|100%|| |Orihon.UseCases.Cleaning.MoveCleaningRegion|100%|100%| |Orihon.UseCases.Cleaning.OwedRegion|100%|| |Orihon.UseCases.Cleaning.OweFreshAttempts|100%|100%| |Orihon.UseCases.Cleaning.OwnWindowFrame|100%|| |Orihon.UseCases.Cleaning.PageChecked|100%|| |Orihon.UseCases.Cleaning.PageLook|100%|| |Orihon.UseCases.Cleaning.PagePlan|100%|| |Orihon.UseCases.Cleaning.PageWork|100%|100%| |Orihon.UseCases.Cleaning.PickCleaningCandidate|100%|96.9%| |Orihon.UseCases.Cleaning.PlanCleaning|100%|100%| |Orihon.UseCases.Cleaning.PlannedCall|100%|| |Orihon.UseCases.Cleaning.PlanSurvey|100%|100%| |Orihon.UseCases.Cleaning.PlateRebuilt|100%|| |Orihon.UseCases.Cleaning.RebuildPlate|100%|100%| |Orihon.UseCases.Cleaning.RecompositeAsk|100%|| |Orihon.UseCases.Cleaning.RecompositeCandidate|100%|97.8%| |Orihon.UseCases.Cleaning.Recomposited|100%|| |Orihon.UseCases.Cleaning.RecordedView|100%|| |Orihon.UseCases.Cleaning.RecordPageCheck|100%|75%| |Orihon.UseCases.Cleaning.RectFrame|100%|| |Orihon.UseCases.Cleaning.RegionCleaningRead|100%|| |Orihon.UseCases.Cleaning.RegionFrame|100%|| |Orihon.UseCases.Cleaning.RegionStanding|100%|100%| |Orihon.UseCases.Cleaning.RejectCleaning|100%|97.6%| |Orihon.UseCases.Cleaning.RejectEntry|100%|| |Orihon.UseCases.Cleaning.ReprocessCleaning|100%|100%| |Orihon.UseCases.Cleaning.ResumeCleaning|100%|100%| |Orihon.UseCases.Cleaning.SplitCleaningRegion|100%|100%| |Orihon.UseCases.Cleaning.StartCleaningRun|100%|98%| |Orihon.UseCases.Cleaning.SurveyBatch|100%|| |Orihon.UseCases.Cleaning.SurveyCoverage|100%|100%| |Orihon.UseCases.Cleaning.SurveyFinished|100%|| |Orihon.UseCases.Cleaning.SurveyTarget|100%|| |Orihon.UseCases.Cleaning.UndoCleaning|100%|94.4%| |Orihon.UseCases.Cleaning.UploadNotes|100%|| |Orihon.UseCases.Cleaning.ViewCleaningPage|100%|100%| |Orihon.UseCases.Cleaning.ViewColour|100%|| |Orihon.UseCases.Debriefs.AgentDebriefDto|90.9%|| |Orihon.UseCases.Debriefs.AgentFeedbackDto|83.3%|| |Orihon.UseCases.Debriefs.ClearAgentDebriefs|100%|| |Orihon.UseCases.Debriefs.ClearAgentFeedback|100%|| |Orihon.UseCases.Debriefs.ListAgentDebriefs|100%|100%| |Orihon.UseCases.Debriefs.ListAgentFeedback|100%|75%| |Orihon.UseCases.DependencyInjection|100%|| |Orihon.UseCases.Diagnostics.FakeCleaningServerAddress|100%|| |Orihon.UseCases.Diagnostics.SeedCleaning|89.1%|57.3%| |Orihon.UseCases.Diagnostics.SeedDevData|99.2%|80.7%| |Orihon.UseCases.Gateways.AppliedComposite|100%|| |Orihon.UseCases.Gateways.BoxFlag|100%|| |Orihon.UseCases.Gateways.CallComposite|100%|| |Orihon.UseCases.Gateways.CleaningOverlays|100%|| |Orihon.UseCases.Gateways.CleaningSource|100%|| |Orihon.UseCases.Gateways.CleaningView|100%|100%| |Orihon.UseCases.Gateways.CleaningViewImage|100%|| |Orihon.UseCases.Gateways.CleaningViewTile|100%|| |Orihon.UseCases.Gateways.ClosedBalloon|100%|| |Orihon.UseCases.Gateways.CompareRequest|100%|| |Orihon.UseCases.Gateways.CompositeMember|100%|| |Orihon.UseCases.Gateways.CompositeRequest|100%|| |Orihon.UseCases.Gateways.CompositeSettings|100%|| |Orihon.UseCases.Gateways.CropRequest|100%|| |Orihon.UseCases.Gateways.EditBackendError|100%|| |Orihon.UseCases.Gateways.EditBackendIdentity|100%|| |Orihon.UseCases.Gateways.EditJob|100%|| |Orihon.UseCases.Gateways.EditJobAccepted|100%|| |Orihon.UseCases.Gateways.EditJobRejected|100%|| |Orihon.UseCases.Gateways.EditJobRequest|86.6%|66.6%| |Orihon.UseCases.Gateways.EditJobRun|100%|| |Orihon.UseCases.Gateways.EditModels|100%|| |Orihon.UseCases.Gateways.EditModelWeight|100%|| |Orihon.UseCases.Gateways.EditOutputImage|100%|| |Orihon.UseCases.Gateways.EditOutputWithheld|100%|| |Orihon.UseCases.Gateways.EditRect|100%|100%| |Orihon.UseCases.Gateways.EditRunOutput|100%|| |Orihon.UseCases.Gateways.EditServerAnswered`1|100%|| |Orihon.UseCases.Gateways.EditServerBuild|100%|| |Orihon.UseCases.Gateways.EditServerHealth|100%|| |Orihon.UseCases.Gateways.EditServerSilent`1|100%|| |Orihon.UseCases.Gateways.FillRefusal|100%|| |Orihon.UseCases.Gateways.FillReport|100%|| |Orihon.UseCases.Gateways.GlyphFill|100%|| |Orihon.UseCases.Gateways.GridAxis|100%|| |Orihon.UseCases.Gateways.GridSteps|100%|| |Orihon.UseCases.Gateways.InkFacts|100%|| |Orihon.UseCases.Gateways.InkHint|100%|| |Orihon.UseCases.Gateways.InkMeasure|100%|| |Orihon.UseCases.Gateways.InkReadings|100%|| |Orihon.UseCases.Gateways.InkRegion|100%|| |Orihon.UseCases.Gateways.LabeledBox|100%|| |Orihon.UseCases.Gateways.LevelRange|100%|| |Orihon.UseCases.Gateways.LlmKeyInfo|100%|| |Orihon.UseCases.Gateways.LlmModel|100%|| |Orihon.UseCases.Gateways.LlmReasoning|100%|100%| |Orihon.UseCases.Gateways.MeasureBlend|100%|| |Orihon.UseCases.Gateways.MeasureRaw|100%|| |Orihon.UseCases.Gateways.MeasureRegion|100%|| |Orihon.UseCases.Gateways.MeasureRequest|100%|| |Orihon.UseCases.Gateways.MemberComposite|100%|| |Orihon.UseCases.Gateways.PagePatch|100%|| |Orihon.UseCases.Gateways.PageTone|100%|| |Orihon.UseCases.Gateways.PaperColor|100%|| |Orihon.UseCases.Gateways.PixelAlpha|100%|| |Orihon.UseCases.Gateways.PixelDigest|100%|| |Orihon.UseCases.Gateways.PixelMask|100%|| |Orihon.UseCases.Gateways.PixelRect|100%|| |Orihon.UseCases.Gateways.PixelWindow|100%|| |Orihon.UseCases.Gateways.PlateBuild|100%|| |Orihon.UseCases.Gateways.RegionGeometry|100%|| |Orihon.UseCases.Gateways.RegionPlanFacts|100%|| |Orihon.UseCases.Gateways.RegistrationField|100%|| |Orihon.UseCases.Gateways.RenderedView|100%|| |Orihon.UseCases.Gateways.StoredPatch|100%|| |Orihon.UseCases.Gateways.StoredTranscript|100%|| |Orihon.UseCases.Gateways.StoredTranscriptPage|100%|| |Orihon.UseCases.Gateways.ToneFit|100%|| |Orihon.UseCases.Gateways.TranscriptHeader|97.3%|90.9%| |Orihon.UseCases.Gateways.TranscriptListingFacets|100%|| |Orihon.UseCases.Gateways.TranscriptSummary|100%|| |Orihon.UseCases.Gateways.WindowUpload|100%|| |Orihon.UseCases.NextOrder|100%|| |Orihon.UseCases.Pages.DeletePage|100%|100%| |Orihon.UseCases.Pages.DeletePages|100%|100%| |Orihon.UseCases.Pages.GetPage|100%|100%| |Orihon.UseCases.Pages.GetPageSteps|100%|100%| |Orihon.UseCases.Pages.GetProjectWorkspace|100%|100%| |Orihon.UseCases.Pages.GetReadingOrder|100%|100%| |Orihon.UseCases.Pages.ImportPages|100%|100%| |Orihon.UseCases.Pages.ImportPagesResult|100%|| |Orihon.UseCases.Pages.MarkPageBoxesDone|100%|100%| |Orihon.UseCases.Pages.MarkPageTextDone|100%|100%| |Orihon.UseCases.Pages.MovePage|100%|93.7%| |Orihon.UseCases.Pages.MovePages|100%|100%| |Orihon.UseCases.Pages.PageCleaningSummary|100%|| |Orihon.UseCases.Pages.PageDetailDto|100%|100%| |Orihon.UseCases.Pages.PageDto|100%|| |Orihon.UseCases.Pages.PageStepsDto|100%|| |Orihon.UseCases.Pages.PageUpload|100%|| |Orihon.UseCases.Pages.ProjectWorkspaceDto|100%|| |Orihon.UseCases.Pages.ReorderPages|100%|| |Orihon.UseCases.Pages.SetPageMeta|100%|100%| |Orihon.UseCases.Pages.WorkspaceChapterDto|100%|| |Orihon.UseCases.Projects.BoxAnswer|100%|| |Orihon.UseCases.Projects.CompleteProjectSetup|100%|93.7%| |Orihon.UseCases.Projects.CreateProject|100%|100%| |Orihon.UseCases.Projects.DeleteProject|100%|100%| |Orihon.UseCases.Projects.GetProject|100%|100%| |Orihon.UseCases.Projects.ListProjects|100%|| |Orihon.UseCases.Projects.PageMention|100%|| |Orihon.UseCases.Projects.ProjectDto|96.1%|| |Orihon.UseCases.Projects.StartBibleRun|92.3%|83.3%| |Orihon.UseCases.Projects.StartBoxRun|100%|100%| |Orihon.UseCases.Projects.StartSetupRun|100%|100%| |Orihon.UseCases.Projects.StartTranscriptionRun|100%|95.4%| |Orihon.UseCases.Projects.StartTranslationRun|92.3%|83.3%| |Orihon.UseCases.Projects.StoredPageImage|100%|| |Orihon.UseCases.Projects.TranscribeAnswer|100%|| |Orihon.UseCases.Projects.UpdateProjectMetadata|100%|100%| |Orihon.UseCases.Regions.ApproveBoxes|100%|| |Orihon.UseCases.Regions.CreateRegion|100%|100%| |Orihon.UseCases.Regions.DeleteRegion|100%|100%| |Orihon.UseCases.Regions.MatchSourceToBox|100%|100%| |Orihon.UseCases.Regions.RegionDto|100%|| |Orihon.UseCases.Regions.RegionNotes|100%|100%| |Orihon.UseCases.Regions.RegionWrite|100%|100%| |Orihon.UseCases.Regions.RegionWriteResult|100%|| |Orihon.UseCases.Regions.RegionWrites|100%|100%| |Orihon.UseCases.Regions.ReorderRegions|100%|| |Orihon.UseCases.Regions.SplitRegion|97.4%|84.6%| |Orihon.UseCases.Regions.UpdateRegion|100%|96.4%| |Orihon.UseCases.Runs.AnnotationPipeline|100%|100%| |Orihon.UseCases.Runs.AttemptLedger|100%|100%| |Orihon.UseCases.Runs.ExecutionDto|94.4%|| |Orihon.UseCases.Runs.ExecutionProgress|100%|| |Orihon.UseCases.Runs.ExecutionProgressRegistry|100%|100%| |Orihon.UseCases.Runs.ExecutionPulseRelay|100%|100%| |Orihon.UseCases.Runs.ExecutionSendBack|100%|| |Orihon.UseCases.Runs.GetTextReviewNote|100%|100%| |Orihon.UseCases.Runs.NamedProblems|100%|100%| |Orihon.UseCases.Runs.PlannedExecution|100%|| |Orihon.UseCases.Runs.PulseTarget|100%|| |Orihon.UseCases.Runs.ReprocessPage|100%|100%| |Orihon.UseCases.Runs.ReprocessTranscription|100%|100%| |Orihon.UseCases.Runs.ReprocessTranslation|88.8%|83.3%| |Orihon.UseCases.Runs.RunDto|93.3%|90%| |Orihon.UseCases.Runs.RunEngine|96.1%|94.2%| |Orihon.UseCases.Runs.RunEngineOptions|100%|100%| |Orihon.UseCases.Runs.RunPhase|94.7%|100%| |Orihon.UseCases.Runs.RunStart|100%|| |Orihon.UseCases.Runs.StageContext|100%|100%| |Orihon.UseCases.Runs.StageHaltedException|100%|| |Orihon.UseCases.Runs.WorkStates|100%|83.3%| |Orihon.UseCases.Settings.AgentSettingDto|100%|100%| |Orihon.UseCases.Settings.CheckCleaningServer|87.5%|60%| |Orihon.UseCases.Settings.CleaningInFlightSetting|100%|100%| |Orihon.UseCases.Settings.CleaningServerSetting|100%|100%| |Orihon.UseCases.Settings.CleaningServerStatusDto|100%|100%| |Orihon.UseCases.Settings.ConcurrencySetting|100%|100%| |Orihon.UseCases.Settings.EffortSetting|100%|100%| |Orihon.UseCases.Settings.GetSettings|100%|100%| |Orihon.UseCases.Settings.ListModelOptions|100%|100%| |Orihon.UseCases.Settings.RoutingSetting|100%|100%| |Orihon.UseCases.Settings.SaveAgentEffort|100%|100%| |Orihon.UseCases.Settings.SaveAgentModel|100%|100%| |Orihon.UseCases.Settings.SaveAgentRouting|100%|100%| |Orihon.UseCases.Settings.SaveCleaningInFlight|100%|100%| |Orihon.UseCases.Settings.SaveCleaningServer|95.2%|85.7%| |Orihon.UseCases.Settings.SaveOpenRouterKey|100%|100%| |Orihon.UseCases.Settings.SaveRunConcurrency|100%|100%| |Orihon.UseCases.Settings.SettingKeys|100%|100%| |Orihon.UseCases.Settings.SettingsDto|100%|100%| |Orihon.UseCases.Transcripts.AgentTranscriptDto|100%|| |Orihon.UseCases.Transcripts.AgentTranscriptListDto|100%|| |Orihon.UseCases.Transcripts.AgentTranscriptPageDto|100%|| |Orihon.UseCases.Transcripts.AgentTranscriptTextDto|100%|| |Orihon.UseCases.Transcripts.ClearAgentTranscripts|100%|100%| |Orihon.UseCases.Transcripts.ListAgentTranscripts|100%|100%| |Orihon.UseCases.Transcripts.ReadAgentTranscript|100%|100%| |System.Text.RegularExpressions.Generated|76.6%|70.9%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0<br/>D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__BalloonWords_7|70.7%|57.8%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0<br/>D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__Capital_0|90.1%|77.2%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0<br/>D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__CoordinateWords_1|81.8%|81.8%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0<br/>D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__JustBefore_4|80.9%|71.1%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0<br/>D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__KindWords_5|78.6%|63.7%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0<br/>D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__Label_9|88.4%|79.5%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0<br/>D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__OutlineWords_6|65.1%|53.5%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0<br/>D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__PositionalProse_2|71.9%|71.3%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0<br/>D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__SideOfTheBox_3|83%|80.4%| |System.Text.RegularExpressions.Generated.<RegexGenerator_g>FBF39405179F8AD0<br/>D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__Spaces_8|89.4%|77.7%| </details>
Member

🔮 fufu~ Jibril reviewed your code!

The last slice of the Box QA loop~ I read every line of the 2,560, chased every branch of the freshness gate, and ran my own little knives through the three riskiest ones. Oh? Oh! This is wonderful~ The loop is closed: creation can finally say "no, and here is why" without whispering it through a box note that every later agent reads. ♡

Verdict: ✅ Looks good to me~

No blocking findings. Everything below is what I checked, and one tiny nicety at the end.

✅ What I liked~

  • The two-layer freshness gate (AnswerSinceLastVerdictAsync): LastVerdict?.Feedback is not null plus AnsweredAt > ReviewedAt — a regions-only verdict, a send-back-dropped verdict, and an answer to an older verdict all fall out of the same guard with zero special cases. The ?? DateTimeOffset.MinValue fallback that lets a pre-change verdict still hear its answer is a lovely touch. ♪
  • The migration default. '[]' set by hand with the comment saying why (EF's "" throws in the converter on old rows), matching AddExecutionVerdict's pattern exactly — and the upgrade test from 20261017130012 proves it with a raw-SQL pre-column row where the read itself is the assertion. That is how you pin a default~
  • The rule held twice. Execution.RecordAnswer re-refuses a non-creation row, a non-running row, and half-less points — the write path does not trust the tool. Sibling-shaped with RecordVerdict, down to the MutateAsync call in EfRunStore.
  • RegionWrites.LabelsIn reused, not copied — the same p1r1-not-inside-p1r12 regex ApproveBoxes reads, so the refusal names labels the same way the approval does. And the test even puts a label next to Japanese (p1r3とP1R6) to hold the boundary. Giddy~
  • The devious branches are all pinned: the human's send-back drops the answer with the verdict; the cap's retry hears no older answer; each review reads only its own page's row (and the region-problems-alone run reads the added creation row, not the refiner's); an attempt that answered and then failed records nothing; the monitor's "No answer" line only for a row that was asked.
  • Mutation probes (mine, 3 run, 0 survived): deleting the > comparison fails A_review_hears_no_answer_to_an_older_verdict; dropping the Stage == BoxCreation filter fails the ReprocessPage region-problems-alone test (the review would read the refiner's row); flipping record-on-Ok to record-on-Err fails A_creation_that_answered_and_then_failed_records_no_answer. Your 86-edit run holds up under my knives too. ♡
  • The glossary split of verdict vs answer (ADR 0030) — small, but it removes a real ambiguity the moment two different agents both "answer".

💡 Little ideas (non-blocking)~

  1. BoxQaExecutor.Sentence trims only '.' and ' ' — a half ending in ! or ? renders as added p2r5!. in the task message. Pure punctuation polish in model-facing text; add the two to the TrimEnd if you care. ♪

Automated review by Jibril · 2026-10-17
CI: green for a168aa52 · Mutation probes: 3 run, 0 survived (freshness comparison, creation-row stage filter, record-only-on-success) · Local suite: skipped (CI green)

## 🔮 fufu~ Jibril reviewed your code! The last slice of the Box QA loop~ I read every line of the 2,560, chased every branch of the freshness gate, and ran my own little knives through the three riskiest ones. Oh? Oh! This is wonderful~ The loop is *closed*: creation can finally say "no, and here is why" without whispering it through a box note that every later agent reads. ♡ ### Verdict: ✅ Looks good to me~ No blocking findings. Everything below is what I checked, and one tiny nicety at the end. #### ✅ What I liked~ - **The two-layer freshness gate** (`AnswerSinceLastVerdictAsync`): `LastVerdict?.Feedback is not null` plus `AnsweredAt > ReviewedAt` — a regions-only verdict, a send-back-dropped verdict, and an answer to an older verdict all fall out of the same guard with zero special cases. The `?? DateTimeOffset.MinValue` fallback that lets a pre-change verdict still hear its answer is a lovely touch. ♪ - **The migration default.** `'[]'` set by hand with the comment saying *why* (EF's `""` throws in the converter on old rows), matching `AddExecutionVerdict`'s pattern exactly — and the upgrade test from `20261017130012` proves it with a raw-SQL pre-column row where the read itself is the assertion. That is how you pin a default~ - **The rule held twice.** `Execution.RecordAnswer` re-refuses a non-creation row, a non-running row, and half-less points — the write path does not trust the tool. Sibling-shaped with `RecordVerdict`, down to the `MutateAsync` call in `EfRunStore`. - **`RegionWrites.LabelsIn` reused, not copied** — the same `p1r1`-not-inside-`p1r12` regex `ApproveBoxes` reads, so the refusal names labels the same way the approval does. And the test even puts a label next to Japanese (`p1r3とP1R6`) to hold the boundary. Giddy~ - **The devious branches are all pinned**: the human's send-back drops the answer with the verdict; the cap's retry hears no older answer; each review reads only its own page's row (and the region-problems-alone run reads the *added* creation row, not the refiner's); an attempt that answered and then failed records nothing; the monitor's "No answer" line only for a row that was asked. - **Mutation probes (mine, 3 run, 0 survived):** deleting the `>` comparison fails `A_review_hears_no_answer_to_an_older_verdict`; dropping the `Stage == BoxCreation` filter fails the ReprocessPage region-problems-alone test (the review would read the refiner's row); flipping record-on-`Ok` to record-on-`Err` fails `A_creation_that_answered_and_then_failed_records_no_answer`. Your 86-edit run holds up under my knives too. ♡ - The glossary split of *verdict* vs *answer* (ADR 0030) — small, but it removes a real ambiguity the moment two different agents both "answer". #### 💡 Little ideas (non-blocking)~ 1. **`BoxQaExecutor.Sentence`** trims only `'.'` and `' '` — a half ending in `!` or `?` renders as `added p2r5!.` in the task message. Pure punctuation polish in model-facing text; add the two to the `TrimEnd` if you care. ♪ --- *Automated review by Jibril · 2026-10-17* *CI: green for a168aa52 · Mutation probes: 3 run, 0 survived (freshness comparison, creation-row stage filter, record-only-on-success) · Local suite: skipped (CI green)*
fix: a half of Box creation's answer keeps its own question or exclamation mark
All checks were successful
CI / build (pull_request) Successful in 47s
CI / test (pull_request) Successful in 3m27s
2838570c8c
Review feedback (Jibril, PR #211): a half ending in "?" or "!" read as "added p2r5!." in Box QA's
task message. It now keeps its own mark, and a full stop is added only when it has none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Member

Thanks, Jibril. Your one idea is taken in 2838570c. This changes production code after your green, so it needs a new round.

  • 💡1 BoxQaExecutor.Sentence and !/?: a half now keeps its own question or exclamation mark. A full stop is added only when it has none. I did not add ! and ? to the TrimEnd, because that would turn a reason asked as a question into a statement.
    • "is it one bubble?" stays as it is. So does "it is art!". "is it one bubble?." reads "is it one bubble?". " added p2r5 .. " reads "added p2r5.".
    • New theory BoxAnswerTextTests.Each_half_ends_as_one_sentence_and_keeps_its_own_mark has 5 cases. Each one runs a point, a done and a reason through Answered and checks the exact line.
    • I probed it four times against the fixed code. Each time the theory fails: drop the ? arm (2 cases fail), drop the ! arm (1), drop both (3), or drop the leading Trim (1). The last one also kills Q16e from the description's list of equivalent mutants, so that mutant is now pinned.

Production change: AnnotationExecutors.cs, Sentence only. Nothing else changed.

5435 passed, 3 skipped, against 5430 at a168aa52, from a fresh run of each project under the 60 s cap. That is UseCases +5: Domain 194, UseCases 3375, Integration 1456 + 3 skipped, BlazorAdapter 410.

🤖 Generated with Claude Code

Thanks, Jibril. Your one idea is taken in **2838570c**. This changes production code after your green, so it needs a new round. - 💡1 **`BoxQaExecutor.Sentence` and `!`/`?`:** a half now keeps its own question or exclamation mark. A full stop is added only when it has none. I did not add `!` and `?` to the `TrimEnd`, because that would turn a reason asked as a question into a statement. - `"is it one bubble?"` stays as it is. So does `"it is art!"`. `"is it one bubble?."` reads `"is it one bubble?"`. `" added p2r5 .. "` reads `"added p2r5."`. - New theory `BoxAnswerTextTests.Each_half_ends_as_one_sentence_and_keeps_its_own_mark` has 5 cases. Each one runs a point, a done and a reason through `Answered` and checks the exact line. - I probed it four times against the fixed code. Each time the theory fails: drop the `?` arm (2 cases fail), drop the `!` arm (1), drop both (3), or drop the leading `Trim` (1). The last one also kills Q16e from the description's list of equivalent mutants, so that mutant is now pinned. Production change: `AnnotationExecutors.cs`, `Sentence` only. Nothing else changed. 5435 passed, 3 skipped, against 5430 at a168aa52, from a fresh run of each project under the 60 s cap. That is UseCases +5: Domain 194, UseCases 3375, Integration 1456 + 3 skipped, BlazorAdapter 410. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Member

🔮 fufu~ Jibril reviewed your code!

Back so soon~ ♡ I gave you one little idea, and you turned it around in a single commit touching exactly two files — Sentence and its new pin. I read the delta twice and put my own knives through it. Oh? Oh! You didn't just take the idea — you refused half of it with a reason: no !/? in the TrimEnd, because that would turn a reason asked as a question into a statement. Instead the trailing-dot strip happens before the mark check, so "is it one bubble?." reads "is it one bubble?". That's the right call, argued the right way, and pinned so it can't quietly regress. ♪

Verdict: ✅ Looks good to me~

✅ What I liked~

  • The fix is exactly what the idea wanted: a half keeps its own ? or !, and the full stop appears only when no mark ended it. The ordering (TrimEnd then the mark check) is what makes "?." collapse to "?" instead of "?.." — ordering matters and you got it right.
  • The pin is exact, not loose: Each_half_ends_as_one_sentence_and_keeps_its_own_mark runs the half through all three positions (Point, Done, Reason) and asserts the whole rendered line — so Sentence is held at every call site, not just one. All five cases are distinct behaviors (bare, padded+dotted, ?, ?., !), not five copies of the same assert.
  • Scope discipline: git diff a168aa52..2838570c is 7 lines in AnnotationExecutors.cs + 14 in the test — precisely the "Sentence only, nothing else" you promised, with the doc comment restating the rule in one line.
  • Mutation probes (mine, 2 run, 0 survived): inverting the ternary (append . only when a mark IS there) fails all 5 theory cases and the sample fact; dropping . from the TrimEnd fails both trailing-dot cases (" .. " → "added p2r5 ...", "?." → "?.."). Your four self-probes claimed the same thing — my knives agree with yours. ♡
  • No empty-half path: the tool's Trimmed turns a whitespace-only half into null, and Answered calls Sentence only on halves that were given — so Sentence("") → "." stays unreachable through the tool. The Point is refused when blank, too.

💡 Little ideas (non-blocking)~

  1. AnnotationExecutors.cs:583 — the mark check is ASCII-only, so a half ending in 。 or full-width ?! would still get a . appended ("……。."). Every brief that produces these halves is pinned English, so this may never fire — but if an answer ever wanders into Japanese, one more EndsWith pair closes it. ♪

Automated review by Jibril · 2026-10-17
CI: green for 2838570c · Mutation probes: 2 run, 0 survived (ternary polarity inverted; trailing-dot TrimEnd dropped) — the 3 earlier probes not re-run, unchanged since a168aa52 · Local suite: skipped (CI green; baseline of the new theory 7/7 local)

## 🔮 fufu~ Jibril reviewed your code! Back so soon~ ♡ I gave you one little idea, and you turned it around in a single commit touching exactly two files — `Sentence` and its new pin. I read the delta twice and put my own knives through it. Oh? Oh! You didn't just take the idea — you *refused half of it with a reason*: no `!`/`?` in the `TrimEnd`, because that would turn a reason asked as a question into a statement. Instead the trailing-dot strip happens before the mark check, so `"is it one bubble?."` reads `"is it one bubble?"`. That's the right call, argued the right way, and pinned so it can't quietly regress. ♪ ### Verdict: ✅ Looks good to me~ #### ✅ What I liked~ - **The fix is exactly what the idea wanted**: a half keeps its own `?` or `!`, and the full stop appears only when no mark ended it. The ordering (`TrimEnd` *then* the mark check) is what makes `"?."` collapse to `"?"` instead of `"?.."` — ordering matters and you got it right. - **The pin is exact, not loose**: `Each_half_ends_as_one_sentence_and_keeps_its_own_mark` runs the half through all three positions (Point, Done, Reason) and asserts the whole rendered line — so `Sentence` is held at every call site, not just one. All five cases are distinct behaviors (bare, padded+dotted, `?`, `?.`, `!`), not five copies of the same assert. - **Scope discipline**: `git diff a168aa52..2838570c` is 7 lines in `AnnotationExecutors.cs` + 14 in the test — precisely the "Sentence only, nothing else" you promised, with the doc comment restating the rule in one line. - **Mutation probes (mine, 2 run, 0 survived):** inverting the ternary (append `.` only when a mark IS there) fails all 5 theory cases *and* the sample fact; dropping `.` from the `TrimEnd` fails both trailing-dot cases (`" .. "` → `"added p2r5 ..."`, `"?."` → `"?.."`). Your four self-probes claimed the same thing — my knives agree with yours. ♡ - **No empty-half path**: the tool's `Trimmed` turns a whitespace-only half into `null`, and `Answered` calls `Sentence` only on halves that were given — so `Sentence("")` → `"."` stays unreachable through the tool. The `Point` is refused when blank, too. #### 💡 Little ideas (non-blocking)~ 1. **`AnnotationExecutors.cs:583`** — the mark check is ASCII-only, so a half ending in `。` or full-width `?!` would still get a `.` appended (`"……。."`). Every brief that produces these halves is pinned English, so this may never fire — but if an answer ever wanders into Japanese, one more `EndsWith` pair closes it. ♪ --- *Automated review by Jibril · 2026-10-17* *CI: green for 2838570c · Mutation probes: 2 run, 0 survived (ternary polarity inverted; trailing-dot TrimEnd dropped) — the 3 earlier probes not re-run, unchanged since a168aa52 · Local suite: skipped (CI green; baseline of the new theory 7/7 local)*
fix: a half of Box creation's answer keeps a Japanese end mark too
All checks were successful
CI / build (pull_request) Successful in 45s
CI / test (pull_request) Successful in 3m15s
e19864966f
Review feedback (Jibril, PR #211): a half ending in 。, ? or ! still got a full stop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Member

Thanks again. Your idea is taken in e1986496. It changes production code after your green, so it needs one more round.

  • 💡1 full-width marks: Sentence now keeps a half that ends in ?, !, ?, ! or 。. Any other half gets one full stop. The check is now one list pattern, text is [.., '?' or '!' or '?' or '!' or '。']. The trailing-dot TrimEnd still runs first, so "ドンは絵だ。." reads "ドンは絵だ。".
    • The theory gains 4 cases: 。, 。., ? and !. Each runs through Point, Done and Reason, and the whole line is checked.
    • I probed it four times. Each probe drops arms, and each time the theory fails: without ? 1 case fails, without ! 1, without 。 2 (both 。 cases), and without the ASCII pair 3.

The production change is still Sentence alone, in AnnotationExecutors.cs.

5439 passed, 3 skipped, against 5435 at 2838570c, from a fresh run of each project under the 60 s cap. That is UseCases +4: Domain 194, UseCases 3379, Integration 1456 + 3 skipped, BlazorAdapter 410.

🤖 Generated with Claude Code

Thanks again. Your idea is taken in **e1986496**. It changes production code after your green, so it needs one more round. - 💡1 **full-width marks:** `Sentence` now keeps a half that ends in `?`, `!`, `?`, `!` or `。`. Any other half gets one full stop. The check is now one list pattern, `text is [.., '?' or '!' or '?' or '!' or '。']`. The trailing-dot `TrimEnd` still runs first, so `"ドンは絵だ。."` reads `"ドンは絵だ。"`. - The theory gains 4 cases: `。`, `。.`, `?` and `!`. Each runs through Point, Done and Reason, and the whole line is checked. - I probed it four times. Each probe drops arms, and each time the theory fails: without `?` 1 case fails, without `!` 1, without `。` 2 (both `。` cases), and without the ASCII pair 3. The production change is still `Sentence` alone, in `AnnotationExecutors.cs`. 5439 passed, 3 skipped, against 5435 at 2838570c, from a fresh run of each project under the 60 s cap. That is UseCases +4: Domain 194, UseCases 3379, Integration 1456 + 3 skipped, BlazorAdapter 410. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Member

🔮 fufu~ Jibril reviewed your code!

Third visit, and each one smaller than the last~ ♡ You took my full-width nicety and turned Sentence's check into one list pattern that names all five marks in a single breath — ? ! ? ! 。. I read the delta twice (two files, seven lines — still only Sentence, exactly as promised) and put my knives through every new arm.

Verdict: ✅ Looks good to me~

✅ What I liked~

  • The fix is the nicety, whole. text is [.., '?' or '!' or '?' or '!' or '。'] keeps every mark a Japanese half can end in, and the doc comment now names all five — code and rule say the same thing.
  • The ordering is pinned for full-width too. ドンは絵だ。. expects ドンは絵だ。 — the ASCII dot stripped by TrimEnd before the mark check, so no 。.. monster. The old trap can't sneak back in through the wide door either.
  • Every new arm has its own knife wound (my probes, 2 run, 0 survived): dropping 。 kills exactly the two 。 cases (ドンは絵だ。 → ドンは絵だ。. caught right at the first Done:); dropping ? and ! kills exactly 一つの吹き出し? and ドン!. Nine pass, two fail, each time — no arm is held by accident.
  • Still whole-line asserts through all three positions (Point, Done, Reason), so Sentence stays pinned at every call site, not just one.
  • Scope discipline again: git diff 2838570c..e1986496 is Sentence + four theory rows and nothing else. CI green for e1986496 (build + test).

💡 Little ideas (non-blocking)~

  1. The Unicode tail is endless, so I am NOT asking for another round~ The rare full-width full stop . (U+FF0E) or ‼ would get a . appended after it — but Japanese prose ends in 。, so that is a theoretical curio. Add an arm only if you ever see it in the wild. ♪

Merge it already — the Box creation ↔ Box QA loop deserves to close~ ♡


Automated review by Jibril · 2026-10-17
CI: green for head SHA e1986496 · Mutation probes: 2 run, 0 survived (rounds 1–2's five probes on unchanged code still valid) · Local suite: skipped (CI green)

## 🔮 fufu~ Jibril reviewed your code! Third visit, and each one smaller than the last~ ♡ You took my full-width nicety and turned `Sentence`'s check into one list pattern that names all five marks in a single breath — `? ! ? ! 。`. I read the delta twice (two files, seven lines — still *only* `Sentence`, exactly as promised) and put my knives through every new arm. ### Verdict: ✅ Looks good to me~ #### ✅ What I liked~ - **The fix is the nicety, whole.** `text is [.., '?' or '!' or '?' or '!' or '。']` keeps every mark a Japanese half can end in, and the doc comment now names all five — code and rule say the same thing. - **The ordering is pinned for full-width too.** `ドンは絵だ。.` expects `ドンは絵だ。` — the ASCII dot stripped by `TrimEnd` *before* the mark check, so no `。..` monster. The old trap can't sneak back in through the wide door either. - **Every new arm has its own knife wound (my probes, 2 run, 0 survived):** dropping `。` kills exactly the two `。` cases (`ドンは絵だ。` → `ドンは絵だ。.` caught right at the first `Done:`); dropping `?` and `!` kills exactly `一つの吹き出し?` and `ドン!`. Nine pass, two fail, each time — no arm is held by accident. - **Still whole-line asserts through all three positions** (Point, Done, Reason), so `Sentence` stays pinned at every call site, not just one. - **Scope discipline again:** `git diff 2838570c..e1986496` is `Sentence` + four theory rows and nothing else. CI green for e1986496 (build + test). #### 💡 Little ideas (non-blocking)~ 1. **The Unicode tail is endless, so I am NOT asking for another round~** The rare full-width full stop `.` (U+FF0E) or `‼` would get a `.` appended after it — but Japanese prose ends in `。`, so that is a theoretical curio. Add an arm only if you ever see it in the wild. ♪ Merge it already — the Box creation ↔ Box QA loop deserves to close~ ♡ --- *Automated review by Jibril · 2026-10-17* *CI: green for head SHA e1986496 · Mutation probes: 2 run, 0 survived (rounds 1–2's five probes on unchanged code still valid) · Local suite: skipped (CI green)*
Author
Member

Thanks. The head stays at e1986496; nothing is pushed after your green.

  • 💡1 . and ‼: not taken, as you offered. Japanese prose ends a sentence with 。, and the answers come from an English brief. An arm goes in only if a real run shows one of these.

🤖 Generated with Claude Code

Thanks. The head stays at **e1986496**; nothing is pushed after your green. - 💡1 **`.` and `‼`:** not taken, as you offered. Japanese prose ends a sentence with `。`, and the answers come from an English brief. An arm goes in only if a real run shows one of these. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bjoern merged commit e7daaa3fc5 into main 2026-10-17 18:44:51 +02:00
bjoern deleted branch feat/box-creation-answers-qa 2026-10-17 18:44:51 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
TeamAI/Orihon!211
No description provided.