///|
async fn normalize_book_state_summary(
entry : BookCatalogEntry,
summary : BookStateSummary,
) -> BookStateSummary {
let root = resolved_workspace_root(entry.workspace_root)
let accounting = evidence_accounting_for_workspace(
root,
fallback_total=summary.total_evidence_count,
)
let substantive_coverage_ready = summary.substantive_coverage_ready &&
accounting.domain_count > 0
BookStateSummary::new(
book_id=summary.book_id,
root=summary.root,
page_count=summary.page_count,
source_count=summary.source_count,
source_page_count=summary.source_page_count,
candidate_source_count=summary.candidate_source_count,
provisional_source_count=summary.provisional_source_count,
verified_source_count=summary.verified_source_count,
entity_count=summary.entity_count,
entity_page_count=summary.entity_page_count,
concept_count=summary.concept_count,
concept_page_count=summary.concept_page_count,
query_note_count=summary.query_note_count,
pending_review_count=summary.pending_review_count,
keeper_memory_count=summary.keeper_memory_count,
keeper_working_count=summary.keeper_working_count,
evidence_count=accounting.domain_count,
total_evidence_count=accounting.total_count,
operational_evidence_count=accounting.operational_count,
substantive_coverage_ready~,
summary=append_evidence_accounting_summary(summary.summary, accounting),
)
}