# GoodTakes product specification

Current product contract, reconciled 15 October 2026. Markdown is canonical.

## Purpose

GoodTakes helps people choose films and television through sourced title details
and personal takes. Taste is subjective; the product does not present a universal
quality score. Knomee supplies identity, signed review meaning and settlement.

## Titles, series and episodes

Films, series and episodes have independent pages and stable rating targets.
Series are top-level discovery entries; episodes nest under their series. A take
on an episode does not silently become a take on its series or pool their spending.
The catalog currently contains 526 entries, including MobLand's 20 episodes and
Chernobyl's five episodes. Other series may still await their episode import.

Canonical subject keys use `film:tt...`, including television entries. Human-readable
slugs are routing conveniences, not identity. Legacy slug redirects must preserve
the same canonical subject. See [television catalog](docs/TELEVISION_CATALOG.md).

## Sourced details and connections

Titles retain source lineage for summaries, media, people and organizations.
New titles can be discovered through IMDb-keyed Wikidata/TVmaze lookup and opened
without a build or target activation. Atomic imports preserve one record per IMDb ID.
Provider coverage is a subset of IMDb, not a claim to its complete catalog. See
[on-demand discovery](docs/ON_DEMAND_CATALOG.md).

Missing details may hydrate on first visit. Conflicting images do not suppress the
whole title: display a selected source-backed image and allow correction.
Films and series use portrait poster frames with artwork filling the frame.
Existing source-backed film and series posters remain intact during unrelated
metadata refreshes; image URLs, CIDs and credits are never spliced across different
artwork records. Episodes may replace a series-poster fallback with their own art.
Episode frames follow the loaded image aspect ratio, including landscape
stills; missing artwork uses a landscape placeholder until its dimensions are known.

The graph exposes connected entities with compact contextual cards, clickable
profile and source links, and dismissible selection. Technical identifiers and
verification detail stay behind subtle controls. Source availability is not proof
that every factual relationship is settled. See [graph and media](docs/FILM_GRAPH_AND_MEDIA_V1.md)
and [first-touch hydration](docs/FIRST_TOUCH_HYDRATION.md).

## Writing a take

Title pages use a compact `Vibe: 86%` badge for the positive share of confirmed
VIBE allocations: positive / (positive + negative), rounded to a whole percent.
It is hidden when the total is zero. The percentage uses original allocated VIBE,
not review count, transaction cost or current decayed weight. Aggregate totals,
timestamps and protocol explanations do not appear in the ordinary title view.
A tiny link beside the badge opens the exact subject on Knomee for identity and
protocol details. Routine refresh controls are omitted; failed reads offer retry.

A take accepts text, an emoji, or both. A reaction is optional when text is present.
The exact selected emoji survives publication. There is no separate required
Endorse/Challenge or positive/negative choice in the ordinary composer.

Simple mode uses one submit action and a displayed VIBE ceiling. It returns to the
title with the participant's pending take above the public list. Progress is concise;
confirmation reconciles that card with the public record without duplication.
Failures preserve the original intent. Known temporary failures recover automatically
through a valid session with bounded retries; other failures offer recovery of that same submission.
Pending content is visible only to its author and is never labeled confirmed.

Advanced mode is a subtle opt-in. It exposes individual semantic statements,
directions, quantities, explicit budgets and optional QUALIA. Simple mode does not
show QUALIA controls or the multi-step signing form. Emoji-only takes skip AI and
retain deterministic reaction meaning; text enables a richer breakdown.

Factual content remains source-linked even when QUALIA is off. Describing a
terrible event in a film is not criticism of the film and cannot acquire VIBE
spending merely because the factual lane is unfunded. Supporting VIBE and QUALIA
does not require spending both: a Simple Mode take may fund praise and preserve
its description without factual backing; Advanced can authorize QUALIA separately.

## Accounts and review terms

Sign-in uses Knomee SSO. GoodTakes does not offer a separate provider or wallet
account. Valid Firebase sessions refresh silently. Account terms and eligibility
are recorded for the Knomee account; accepted terms do not require a checkbox on
every take. A small Review Terms link opens the full text.

The submit action authorizes the exact review within the disclosed ceilings.
Published takes are public and permanent. Repeated clicks, reloads and interrupted
connections must reuse the original submission rather than spend again.

## Protocol ownership

The shared Knomee SDK owns review composition, claim formats and publication
recovery. GoodTakes owns title discovery, target selection, pending-card placement,
catalog sources, graph and media pages. It must not add a title activation gate.

Current writes use signed bundle v3 and public projection v2. Old records remain
immutable; the current UI does not need a protocol selector or legacy reader.
Read [Knomee protocol](https://kno-foundation-dao.web.app/specs/) and the
[integration contract](docs/CURRENT_KNOMEE_TAKES.md) for exact boundaries.

## Private lists and future sync

Want to watch, watched and owned controls remain compact and close to the poster.
Current saved-title state is browser-local. Authenticated Firebase persistence and
encrypted DAG synchronization remain planned; the product must not claim they are
implemented. Any future sync must preserve explicit visibility and account isolation.

## Delivery and documentation

Firebase Hosting is the primary public deployment. Both root and subpath artifacts
are built from the same commit and catalog; current owner scope promotes Firebase
only. Immutable oracle bytes retain their original source paths and hashes.

The [documentation index](docs/README.md) contains current guides. Superseded plans
live in [the archive](docs/archive/README.md). Browsable HTML is generated from these
Markdown files with section links and a downloadable exact source.
