Skip to content

Fix corroborated series titles in downloaded-file review (NOR-87) - #69

Merged
logabell merged 1 commit into
mainfrom
logan/nor-87-collection-files-do-not-uniquely-establish-the-requested
Oct 15, 2026
Merged

logabell merged 1 commit into
mainfrom
logan/nor-87-collection-files-do-not-uniquely-establish-the-requested

Conversation

@logabell

Copy link
Copy Markdown
Owner

Downloaded audiobooks tagged only with a series and position, such as Robert Langdon, Book 1, were rejected for the requested book even when the download and catalog identified it. A matching edition identifier also reintroduced a title conflict for otherwise accepted series annotations.

Use one request-scoped title decision for download review, candidate matching, automatic import, edition creation, and plan confirmation. Series-only titles require a complete single-book transfer, matching source title/author/medium, matching file authors, and fresh, unique, published catalog membership. Wrong positions, conflicting membership, collections, partial files, and exact-edition requests retain their existing holds. Full-title annotations now accept equivalent &/and spelling. File-created editions retain the canonical book title.

Validation through the bounded workstation runner:

  • 139 backend integration checks passed across series review/import, matching, collections, AudiobookBay, shared packs, and single-file acquisition. The 23 series cases passed again after final review.
  • 176 focused parser/title/linked-download unit checks passed.
  • 11 mocked browser download-review journeys passed, including series titles with and without edition identifiers; production frontend build passed.
  • Ruff, formatting, and diff checks passed; OpenAPI and TypeScript contracts regenerated.

Integration coverage uses a disposable PostgreSQL database, real media files and filesystem publication, and fixture download/library services. It verifies preserved bytes, one publication on repeated confirmation, and rejection through both review and direct confirmation APIs. Live external services were not exercised.

Fixes NOR-87

@linear-code

linear-code Bot commented Oct 15, 2026

Copy link
Copy Markdown

NOR-87

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-15T04:59:51.790392Z 46b35a3 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@logabell
logabell merged commit 371ed7c into main Oct 15, 2026
10 of 11 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 46b35a3493

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

group_evidence(row.snapshot, group),
series=catalog["series"],
)
for conflict in (await file_match(db, work, selection, row, group)).conflicts

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Reuse request identity across file groups

For a ready inspection containing many groups, this awaits file_match sequentially for every group. Each call unconditionally reloads the same user, catalog series, and metadata through identity, and a nonmatching title can trigger several additional queries in corroborated_titles; grouping permits inspections with thousands of files/groups. The previous implementation loaded identity once outside this loop, so opening a large download review now produces thousands of serial database round trips and can time out. Load the request-scoped identity once and reuse it, invoking the expensive corroboration only for groups that can qualify.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant