Skip to content

Bridge 1c: generated descriptions in .audiosilo, /meta and the console - #148

Merged
KodeStar merged 5 commits into
mainfrom
feat/bridge-1c
Oct 17, 2026
Merged

KodeStar merged 5 commits into
mainfrom
feat/bridge-1c

Conversation

@KodeStar

@KodeStar KodeStar commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Bridge Phase 1c (BRIDGE-PLAN.md): generated descriptions in .audiosilo/, /meta and the console.

What it does

  • description.json as a known attachment (migration 0050): audiosilo-meta model.Description, text trimmed, 200-1500 code points (meta's schema bounds, with a drift test), no control character but a line break. A book without one keeps its stored signature byte for byte. A book with only a description has generated: true.
  • /meta: a generated description rides in a NEW additive field, work.generated_description {text}, marked work.generated.description (generated now always carries the three booleans). It never goes into community_description: the shipped 2.0 app shows that first in About, over the book's own description, and credits the community; it ignores the new field. Community wins: filled only when the community work has no community_description. spoilers=hide keeps it; attribution never counts it; an unmatched book with only a description answers {matched:false, work:{..., generated_description}}. /meta now reads only the attachment parts it can fill.
  • sidecars.describe (new kind): params {}, 409 generate_open while a generate job is open for the book, its own dedupe; a generate job queued later cancels an open describe job. An older Bridge doesn't advertise it (409 kind_unavailable).
  • Estimate: can_describe, has.local.description, has.community.description (the community's community_description or its core description, either shown before a generated one). Admin book detail: generated_description {text, generated_at?}. Rescan answer: attachments.description.
  • Console: the book page's Community card gains a Description part (the mark, the text behind Show more, a note when the player shows another description instead) and Write a description (offered only when the player would show it: writable, generated characters or recaps, no description on either side, no open job). Notifications say "Description ready" / "Description failed".

Pairs with KodeStar/audiosilo-bridge#4, KodeStar/audiosilo-frontend#111, KodeStar/audiosilo-docs#141 and KodeStar/audiosilo#62.

Quality passes

  • /simplify (2 reviewers): 15 items applied (shared console job pieces, narrow catalog reads, the fill mask, one notification table); skipped a blockedBy kind field (the refusal is generate-specific).
  • /code-review max --fix: 15 findings, all fixed with tests. The two it left for a decision were decided in the session: a generate job cancels an open describe job; a core description counts as the community having one.

Test plan

  • scripts/build-admin.sh (874 tests), go build ./... && go vet ./... && go test -race ./... && golangci-lint run (0 issues)
  • Real stack: /meta for an unmatched generated book (plain and spoilers=hide), the console's book page in headless Chromium showing the Description part.

Left open

  • The player can't tell which generated parts a book has (generated is a bool), so a description-only book costs a /meta ask on surfaces that read only characters and recaps; a generated list is a follow-up.

description.json is a known attachment (checked against meta's
model.Description, 200-1500 code points, migration 0050) and rides in
/meta's new work.generated_description when the community work has no
community_description. New job kind sidecars.describe (strict empty
params, 409 generate_open while a generate job is open); the estimate
gains can_describe and has.*.description; the admin book detail carries
generated_description, shown on the book page's Community card with a
Write a description action.
@KodeStar
KodeStar merged commit a935a4b into main Oct 17, 2026
3 checks passed
@KodeStar
KodeStar deleted the feat/bridge-1c branch October 17, 2026 13:31
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