Venue evidence and owner certification — 2026-09-06
Status: Active Last reviewed: 2026-09-06
The owner identified that 미확인 makes an ordinary venue look unofficial. The resulting policy separates information evidence from verified ownership. One reliable source family can establish identity; 인증됨 is reserved for a verified owner claim.
Implementation
- Directory cards, search results, detail headers and club/session pickers show only the ownership badge. Ordinary entries have no warning badge or source-count opacity penalty.
ownerVerifiedcomes fromvenue_owner_verified(venues), a read-only computed field in00602. It requires a privilegedvenue_adminsclaim with a reviewer and a non-future verification time. It exposes no user/reviewer IDs. Both computed fields re-read the persisted venue by ID, so forged composite arguments cannot invent evidence or identity.- Old
official/host_verifiedvalues and multiple providers do not certify ownership. Old cached objects and external results without an owner flag safely render no badge. Club pick/schedule cards use current directory claims instead of the persisted draft, and resume clears saved ownership proof. A late session adoption cannot transfer a badge to a newer pick. - Normal browse, ranked search and view counts use
all. The public confirmation toggle and its empty-state escape action are removed. Search no longer awards source-count bonuses, and empty-query search no longer sorts by source count. - The detail source section counts assessed facts separately from provider names. Its old count incorrectly labelled a total of graded facts as a number of sources.
Internal evidence review
00602 also provides venue_is_discoverable(venues) and an optional reliable mode on ranked search/counts and the directory adapter. One active, allowed source with a matching raw name and pin is sufficient, or a verified owner claim. Permanent closure, merged aliases, invalid pins, missing identity evidence and mismatched observations fail that mode.
The sanitized September 5 snapshot contains 3,484 venues and 8,259 active observations. Of 3,483 open/pinned rows, 2,644 pass the strict evidence predicate. Against the former two-family filter, this admits 560 additional venues and leaves 138 formerly passing rows requiring evidence review. The 839 remaining rows include old government observations without raw name/pin fields and legacy Place observations without a captured pin. These counts describe missing stored proof, not a finding that those venues are false.
The ordinary UI already defaulted to all; applying the new strict mode automatically would hide existing records. It therefore remains an internal opt-in. No venue is delisted, no source observation is changed, and no owner claims are created by this migration.
Verification and release boundary
- Focused domain, mapper, directory, picker and detail regressions passed. They cover a single-source ordinary venue, false certification from legacy statuses, malformed flags, revoked/current claims, resumed drafts and stale asynchronous adoption.
- 112 SQL assertions passed across nine suites, including 63 new policy assertions plus search, facets, floor evidence, role access, SECURITY DEFINER hygiene and overload guards. After scoping an old search test to its own fixtures without a truncating page limit, that 15-assertion ranked suite passed again.
- Nine real PostgREST HTTP checks passed for authenticated/service computed projections, optional evidence filtering and counts, and the anonymous read denial. The test endpoint is bound only to localhost and uses an independent synthetic JWT secret.
- The scratch database
twomore_venue_policy_20260906contains only the sanitized venue snapshot and schema/ACLs; test users and claims were rolled back. Venue and observation digests were unchanged, with zero users, profiles and claims after the tests. Receipts are retained under.audit/venue-owner-policy-20260906/. The temporary PostgREST container was stopped after verification; the scratch database remains available for review. - A separate read-only hosted query at 01:48 KST on September 6 found zero owner claims. This confirms that no current venue qualifies for the new certification badge.
- Independent review closed the saved-draft freshness finding and found no further actionable issues. Migration PI/extension lint and strict ESLint passed.
- Repository-wide
yarn checkpassed, including documentation build, architecture and size gates, typechecking, script tests and 5,423 Jest tests across 374 suites.
Apply 00602 before deploying the updated search-venues function or app: their selects request the new computed owner field. Existing RPC signatures and explicit legacy query modes remain compatible. The owner-claim application/review UI is still deferred; no real claims were created or certified during this work.
This is prepared source, not a hosted deployment. Push/OTA remains with the release owner under the shared-worktree agreement. The earlier 2,021-row partial metadata refresh remains separate and awaits its explicit partial-cohort exception; this badge policy does not approve it.