Skip to content
Merged
8 changes: 5 additions & 3 deletions docs-developers/architecture/cross-repo-contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -800,7 +800,9 @@ or `pkg/release` reaches the server through its `go.mod`.
The match dialog sends `GET /works/match` the book's tag and path facts:

- Its `language` and repeatable `narrator`. An older `metaserve` ignores them.
- Its tag hints, as `asin` and `isbn`.
- Its hints, as `asin` and `isbn`, when it has neither of its own: an Audiobookshelf
import's and its tags' (`matchrun.QueryFor`, in
[this order](../server/data-model.md#match-hints-from-an-import)).

Against a `metaserve` that predates the route, the server falls back to `lookup` and
`works/search`. The candidates pass `metaserve`'s `score` and `reasons` through to
Expand Down Expand Up @@ -1632,8 +1634,8 @@ not quiet, deduped per library and project, and in no module.
folder. The server does not read it yet, and its scanner skips the name.
- The server folds a done result into the book's `book_matches` row
([Matches by work id](#matches-by-work-id)), by `adopted`: a placed book
replaces the path's match and drops its leftover ASIN and ISBN, an adopted one
keeps a match already there. The `bridge_job_finished` event carries
replaces the path's match and drops its leftover ASIN, ISBN and match hints, an
adopted one keeps a match already there. The `bridge_job_finished` event carries
`librivox_match` (`matched`, `kept`, `unmatched`).

See [Add from LibriVox](../bridge/librivox.md).
Expand Down
2 changes: 1 addition & 1 deletion docs-developers/bridge/librivox.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ book's path depends on the result's `adopted`:

| `adopted` | The folder | The fold |
|---|---|---|
| `false` | was vacant until this run placed it | replaces the path's `book_matches` row, and drops the path's ASIN and ISBN `book_overrides` (whoever set them) and its `book_enrichment` row, then rebuilds the book's effective metadata. Those rows are a deleted book's leftovers, and `/meta` would ask them before the match. |
| `false` | was vacant until this run placed it | replaces the path's `book_matches` row, and drops the path's ASIN and ISBN `book_overrides` (whoever set them), its `book_enrichment` row and its `book_hints` (an Audiobookshelf import's match hints, which the match dialog would send), then rebuilds the book's effective metadata. Those rows are a deleted book's leftovers, and `/meta` would ask them before the match. |
| `true` | is an earlier fetch's book | inserts the match only when the path has none, so an admin's rematch stays, and touches nothing else |
| absent (an older Bridge) | not known | replaces the match and touches nothing else |

Expand Down
1 change: 1 addition & 0 deletions docs-developers/contributing/documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ mappings:
| Generated characters, recaps and descriptions: `.audiosilo/` (the server's `library/attachments.go`, `metadata/attachments.go`, `catalog/attachments.go`, `meta/generated.go`; the Bridge's `internal/generate`, `internal/pipeline/describe_stage.go`), the console's Description part (`describe-section.tsx`) or the player's generate action, mark and About (`src/components/bridge/`, `GeneratedMark`, `aboutContent`) | [bridge/attachments.md](../bridge/attachments.md) + [bridge/generating.md](../bridge/generating.md) + [server/scanner.md](../server/scanner.md#the-bridges-attachments) + the `/meta` [generated content](../server/api/reference.md#generated-content) + [frontend/book-page.md](../frontend/book-page.md#the-primary-action-and-the-action-row) (and its About) + `/users/admin/generating-characters-and-recaps`, `/users/listening/recaps-and-characters`, `/users/listening/book-page` (About) + the `admin/book-description.png` and `web-player/book-about-generated.png` screenshots |
| Community matching: `internal/matchrun` (`Classify`, `ReviewFloor`, `tidyTitle`, `workers`, `maxRequestsPerSecond`, `maxFailStreak`), `internal/meta/match.go`, `internal/meta/pacer.go`, a run's waits in `internal/meta/client.go`, the tag hints (`metadata.setHints`, `0067`), the recorded match (`catalog/bookmatches.go`, `book_matches`, `0069`, `0070`, `catalog.matchedExpr`, the book aside's Community card and Unlink, the match dialog's `match`), `health/bulk-match.tsx`, the Add it link (`lib/meta-site.ts`, `add-to-community.tsx`) and the not-matched notice (`unmatched-prompt.tsx`); `works/match`'s params and `expand` in audiosilo-meta | the [reference](../server/api/reference.md#bulk-community-matching) (outcomes, scopes, [what a run asks of the service](../server/api/reference.md#what-a-run-asks-of-the-community-service)) and its [match endpoint](../server/api/reference.md#get-apiv1adminlibrariesidbookmatch) + [configuration.md](../server/configuration.md#community-metadata-metadata) (the waits) + [data-model.md](../server/data-model.md#tag-hints) (and `book_matches` under [durable per-library config](../server/data-model.md#durable-per-library-config-path-keyed-no-fk-to-books)) + [scanner.md](../server/scanner.md) + [web-ui.md](../server/web-ui.md) + [meta/api.md](../meta/api.md#apiv1worksmatch) (and its [rate limit](../meta/api.md#rate-limit-and-caching), which names `workers` and `maxRequestsPerSecond`) + the [cross-repo contract](../architecture/cross-repo-contract.md#13-community-metadata-a-three-repo-seam) (after the workspace `CROSS-REPO.md` §17) + `/users/admin/health#matching-every-book-at-once`, `/users/admin/books#matching-with-community-metadata` (and `#books-matched-to-a-store-listing`, `#unlinking-a-community-match`), `/users/admin/activity` (the coverage wording), `/users/admin/server#community-metadata`, `/users/faq` (what matching sends), `/users/community/meta-site#adding-a-missing-book` (Add it) + the site's `src/pages/metadata.astro` (privacy copy, kept in step with the console's `health.bulkMatch.privacy`) + the `admin/health-bulk-match.png` and `admin/book-community-match.png` screenshots |
| The unknown-ASIN report (LibraForge C3): the server's `internal/coverage`, `catalog/coverage.go` (`UnknownASINCandidates`), `meta/report.go`, `unknown_asin_reports` (`0068`), the `unknown_asin_report` server state, `metadata.report_unknown` and `metadata.report_status`, Settings > Metadata's *Help complete the community database* switch; metaserve's intake queue | [configuration.md](../server/configuration.md#the-unknown-asin-report-metadatareport_unknown) + the [reference](../server/api/reference.md#get-apiv1adminsettings) (`metadata.report_unknown`, `metadata.report_status`) + [data-model.md](../server/data-model.md#unknown-asin-reports) + the [cross-repo contract](../architecture/cross-repo-contract.md#13-community-metadata-a-three-repo-seam) + [meta/api.md](../meta/api.md#unknown-asin-intake-queue-optional) and [meta/sync-bot.md](../meta/sync-bot.md#the-reported-asin-lane) + `/users/admin/server#helping-complete-the-community-database`, `/users/admin/books`, `/users/admin/health` (tag hints), `/users/faq` (what is sent) + the `admin/settings-metadata.png` screenshot |
| Listening imports: `internal/importer` (the ABS client and its codes, `abs_certificate` among them; matching, planning, `identifiersFor`), `catalog/imports.go`, the match hints (`catalog/hints.go`, `book_hints`, `0074`, `matchrun.QueryFor`'s order), the console's `features/imports/` (`ImportFlow`, also in the setup flow's abs step) | the [reference](../server/api/reference.md#admin-listening-imports) (its [identifiers](../server/api/reference.md#identifiers-match-hints)) + [data-model.md](../server/data-model.md#listening-imports) (and [match hints](../server/data-model.md#match-hints-from-an-import)) + [web-ui.md](../server/web-ui.md#the-first-run-setup-flow) (the abs step) + `/users/admin/import`, `/users/getting-started/coming-from-audiobookshelf`, `/users/getting-started/first-run` (step 6), `/users/admin/health` (Audiobookshelf's ASINs and ISBNs) + the `admin/settings-import.png` and `setup/abs.png` screenshots |
| Metadata mirror mode (`metadata.mode`, `internal/metamirror`, `internal/meta/mirror.go`, the Source card, the mirror panel on Health > System) | [server/configuration.md](../server/configuration.md#mirror-mode-metadatamode-mirror) + the mirror routes in [api/reference.md](../server/api/reference.md#the-local-copys-status-metadatamirror) + `/users/admin/server` (Keeping a local copy), `/users/admin/health` (the local copy), `/users/faq` (privacy) |
| `pkg/query`, `pkg/query/querytest`, `pkg/release` in audiosilo-meta, or the artifact schema | [meta/overview.md](../meta/overview.md#public-go-packages) + [meta/data-model.md](../meta/data-model.md#the-compiled-artifact-and-schema-versioning) + the [cross-repo contract](../architecture/cross-repo-contract.md#13-community-metadata-a-three-repo-seam) (mirror-mode servers read the artifact directly) |
| Meta schemas, `metaserve` API, or intake tooling (`route.yml`, the intake denylist included) | [meta developer pages](../meta/overview.md) (data model, API, contributing) - and the [cross-repo contract](../architecture/cross-repo-contract.md) when the server's `/meta` envelope is affected, and `/users/community/contributing-from-your-server` when the limits that hold a Bridge's submission change |
Expand Down
Loading
Loading