Place Journey v2 — S15 · Party pages

LIGHT PASS (owner-ruled, no full council) bringing the pre-master-plan place-party-pages.html mockup into the journey system. Data layer is LIVE on dev (doc-17 Part A: parties collection 80 rows + aliases, Official.partyId, party profile endpoint) and a Flutter v1 is sim-verified — these frames are the BINDING chrome for that build + the Part B (org/branch/claim) teaser. The party page is a PUSHED page (S13 chrome, R1), the roster is 100% auto-derived from officials.partyId (zero manual upkeep), and per spec parties get NO geo broadcast — a claimed unit posts to its FOLLOWERS only; village fan-out stays exclusively with claimed officials. Numbers are live dev data: BJP Bihar 87 MLAs · 12 MPs (R4). EN-only frames per DECISIONS #8; hi reference = S15·E.

‹ All screensS15·A Party page v1S15·B Entry pointsS15·C Roster statesS15·D Claimed unit (Part B)S15·E hi locale
S15 · party page v1 · read-only roster

The roster maintains itself — zero manual upkeep

Derived 100% from parties + officials (Part A, live on dev): hero tint + chips read party.color (R5 — single source; s4's hardcoded chip hexes were stand-ins), identity chips from seed data (eciStatus · symbol · founded). R1: old mockup's floating icons → the S13 pushed-page app bar. R2: EN-only identity line (DECISIONS #8; nameHi → S15·E). R3: 🪷 emoji → monogram tile (F24; build = party.logoUrl, abbr fallback). R4: live dev numbers — 87 MLAs · 12 MPs · 99 linked, Bihar pre-selected from the user's place (state of placePath), "All states" honest. Roster rows = the S4 .off pattern: seat in the role line + Vidhansabha/Lok Sabha chip (B12 names), ✓ ONLY on claimed officials (B6), row tap → the official's S13 authority page. Follow = normal follow (audience for Part B). 🚫 NO broadcast affordance anywhere — geo fan-out is officials-only per spec. Unclaimed page carries the E16-tier community-record line.

3:42
••••

Party page

National party · ECI recognized
Bharatiya Janata Party
National party · founded 1980
National party Symbol · Lotus Est. 1980
Updates from this party appear in your feed — no village-wide alerts
87
MLAs · Bihar
12
MPs · Bihar
99
officials linked
Auto-derived roster — built live from community-verified officials data. When a seat changes, this page updates itself.
MLAsMPs
Bihar Uttar Pradesh Maharashtra All states
MLAs · Bihar87 seatsA → Z by seat
KM
MLA · Amnour Vidhansabha
Krishan Kumar Mantoo
Elected 2025 · 5-yr term
NN
MLA · Bankipur Vidhansabha
Nitin Nabin
from election records · Elected 2025
SS
MLA · Darbhanga Vidhansabha
Sanjay Saraogi
from election records · Elected 2025
TP
MLA · Katihar Vidhansabha
Tarkishore Prasad
from election records · Elected 2025
Community record — built from election records and neighbours' edits. Not run by the party (yet — see the claimed-unit state, S15·D).
S15 · entry points · party chip → party page

Every linked party name on a rep row is the door

The S4 .pty chip grows a caret and a tap target (.s15-pchip — same metrics, party.color tint per R5) wherever an official renders with a linked partyId: ① the place Overview directory (S4 offgrp) ② the S13 authority-page occupant row. Tap → push the party page. Render guard (carried from the v1 mockup): chip ONLY when partyId is present and ≠ party_unknown — the unlinked Mukhiya stays plain text; administrative roles (SHO/CO/BDO) never carry a chip (B7 + prior-locked elected-only). partyColor is already returned by the reps/people API (additive). All other row anatomy (B6 trust tiers, B8 call, B10 attribution) is untouched — this is ONE new affordance, not a new row.

3:42
••••

Entry points

Party chips on official rows
1 · Place Overview directory (S4 offgrp)
JR
MLA · Marhaura Vidhansabha
Jitendra RaiJDU
Elected 2025 · 5-yr term
RP
MP · Saran Lok Sabha
Rajiv Pratap RudyBJP
from election records · Elected 2024
RS
Mukhiya · Gram Panchayat
Ramnath Singh
added by Sunita · 2d
SHO · Garkha Thana
Anil Paswan
Posted since Mar 2024 · transfers frequent
chip = party.color tint · tap → party page · plain text when no partyId
2 · S13 authority page — occupant row
MLA · MarhauraVERIFIED
Vidhan Sabha seat · Saran, Bihar
RS Ramesh Singh RJD Elected 2025 · 5-yr term
same chip on the seat page's occupant field → RJD party page
The chip never competes with the row's primary action (call / authority push) — it is a small secondary target on the name line, exactly where the static party text already sat. Unknown/unlinked party = plain text, no dead-end taps.
S15 · roster states · filter + switcher + honest empties

One roster, three honest states

State pre-selection = the state of the user's placePath (Bihar for Bheldi) — never a bare national dump. ① MPs toggle: same .off rows, Lok Sabha chip, count flips to 12 seats. ② State switcher: chips scroll; tapping a state the data hasn't reached yet renders the no-data state — a dashed empty that names the gap, never a fake zero-list. ③ "All states" stays HONEST (R4): Bihar is the only seeded state today, so All-states says exactly that instead of inventing an all-India number (the old mockup's "2,941 all-India" is dead). When more states land, this tile silently becomes the real grouped list — copy is server-driven off the seeded-states count, no release needed.

3:42
••••

Bharatiya Janata Party

Roster · filters + states
1 · MPs toggle — same rows, Lok Sabha chip
MLAsMPs
Bihar Uttar Pradesh Kerala All states
MPs · Bihar12 seats
RR
MP · Saran Lok Sabha
Rajiv Pratap Rudy
from election records · Elected 2024
RM
MP · Purvi Champaran Lok Sabha
Radha Mohan Singh
from election records · Elected 2024
GS
MP · Begusarai Lok Sabha
Giriraj Singh
from election records · Elected 2024
2 · A state the data hasn't reached (no-data state)
Bihar Kerala All states

No BJP officials linked in Kerala yet

Officials data is rolling out state by state — Bihar is live. Kerala lands with its constituency mapping.

3 · "All states" — the honest tile (R4)
Bihar only so far — 99 BJP officials are linked in Bihar. More states appear here as the officials dataset grows; no all-India total is shown until it is real.
All copy on this frame = i18n keys; the seeded-states list and counts come from the party profile endpoint — the UI never hardcodes a state. Sort inside a state: A→Z by seat name (stable, scan-friendly); search-within-roster rides the Part B pass if rosters >100 rows prove unscannable.
S15 · Part B teaser · claimed unit + posts — BUILD-PENDING

Claim = posting rights. Reach = followers. Never the village.

Part B is NOT in the v1 build — this frame fixes the target so v1 lays no wrong rails. The claimed page is the BJP Bihar STATE UNIT (doc-12 branch pattern: org-kind entity, parentOrgId → the national page; claims are PER UNIT, by the party's state media cell). Claim machinery = the S13 pattern verbatim (#14): admin-reviewed evidence, never automatic, claim bar in the same gold voice. Verification unlocks exactly ONE power: posting as the unit (a Posts tab appears; the post card = the REAL UserPostWidget 1:1, DECISIONS #11). 🚫 NO geo broadcast — a party post reaches its followers only; village fan-out + push stay exclusively with claimed OFFICIALS (spec §Part B). The roster stays auto-derived and community-owned — claiming the unit does NOT hand the party its own roster edits. Karyakarta/member affiliation on user profiles stays deferred (politically sensitive).

3:42
••••

BJP Bihar

State unit · Bharatiya Janata Party
BJP BiharVERIFIED
State unit · run by the party's verified media cell
Part of Bharatiya Janata Party · national page
Posts from this unit reach followers only — never your village feed
OverviewRosterPosts
BJ
BJP Bihar@bjp4bihar
Patna, Bihar · 3h
Booth-level membership camps this Sunday across all 38 districts. Find your nearest camp on the district unit pages.
214 56 31 4.1k
No geo broadcast for parties — this post fans out to followers only. Constituency-wide alerts remain an exclusive power of claimed OFFICIALS (S13), so the megaphone stays accountable to a seat.
unclaimed unit — the way in (S13 claim pattern)
Run this party's Bihar unit?Claim it →
⏳ BUILD-PENDING: everything on this frame except the chrome ships with Part B — org-kind entity (plan §23 kind=org, subtype political_party, NO placePath), parentOrgId branch links (doc 12), per-unit claim via the S13 lifecycle (admin-reviewed evidence, honest SLA, rejection reasons), Posts = normal posts by the verified unit account. v1 ships S15·A–C only; this frame exists so the v1 page model (party id, follow, roster endpoint) needs no rework when units land.
S15 · hi locale reference — translation check (NOT a design pattern)

The party page, rendered in the hi locale

DECISIONS #8: ONE language per screen via i18n — this frame renders S15·A end-to-end in hi. This is where parties.nameHi earns its seed column: the title becomes भारतीय जनता पार्टी (the EN frame never shows it, R2). Chips राष्ट्रीय पार्टी / चुनाव चिह्न · कमल / स्थापना 1980, stats विधायक · बिहार / सांसद / जुड़े पदाधिकारी, toggle विधायक / सांसद, CTA फ़ॉलो करें, roster header विधायक · बिहार with B12's विधान सभा chips, auto-note "रोस्टर अपने-आप बनता है". Officials' names from the SSOT's native-script field (Location-Haiku pipeline: 1 native script per place/person). Numerals, the abbr "BJP" monogram and "Nyburs" stay Latin. Devanagari line metrics run taller — the dense modifier absorbs it; layout, components and ordering identical to S15·A.

3:42
••••

पार्टी पेज

राष्ट्रीय पार्टी · ECI मान्यता प्राप्त
भारतीय जनता पार्टी
राष्ट्रीय पार्टी · स्थापना 1980
राष्ट्रीय पार्टी चुनाव चिह्न · कमल स्थापना 1980
इस पार्टी की पोस्ट आपकी फ़ीड में — गाँव-भर अलर्ट नहीं
87
विधायक · बिहार
12
सांसद · बिहार
99
जुड़े पदाधिकारी
रोस्टर अपने-आप बनता है — समुदाय-सत्यापित पदाधिकारी डेटा से। सीट बदलते ही यह पेज खुद अपडेट होता है।
विधायकसांसद
बिहार उत्तर प्रदेश सभी राज्य
विधायक · बिहार87 सीटें
कृ
विधायक · अमनौर विधान सभा
कृष्ण कुमार मंटू
2025 में निर्वाचित · 5 वर्ष
नि
विधायक · बांकीपुर विधान सभा
नितिन नबीन
चुनाव रिकॉर्ड से · 2025 में निर्वाचित
सामुदायिक रिकॉर्ड — चुनाव रिकॉर्ड और पड़ोसियों के योगदान से बना। पार्टी द्वारा संचालित नहीं।

Journey position: S15 = the party lens over the S13 civic graph — citizens reach a party page from any rep row's party chip (S4 directory, S13 occupant field); the roster links back to S13 authority pages. v1 ships S15·A–C on the LIVE Part A layer (parties collection 80 rows + aliases, Official.partyId, GET /places/parties/:partyId/profile — all on dev; Flutter v1 sim-verified, these frames are its binding chrome). Part B (S15·D) is build-pending: org-kind entity (plan §23 political_party, no placePath) + doc-12 branch units (parentOrgId, BJP → BJP Bihar) + per-unit S13-pattern claim = posting rights only. Hard guards: 🚫 NO geo broadcast for parties — village fan-out + constituency push remain exclusive to claimed officials; party posts reach followers only · party chip renders ONLY for partyId present ≠ party_unknown, NEVER on administrative roles (B7 + prior-locked elected-only) · roster stays community-owned after claim (no party self-edits outside the steward flow) · member/karyakarta affiliation on user profiles DEFERRED. Ruling notes vs the old mockup (place-party-pages.html, pre-header-diet): R1 floating hero icons → S13 pushed-page app bar · R2 dual-language identity → EN-only + hi frame (DECISIONS #8) · R3 emoji lotus → monogram tile, build = party.logoUrl (F24) · R4 invented counts (84 / "2,941 all-India") → live dev numbers 87/12/99 + honest All-states · R5 party.color = single source (s4's hardcoded chip hexes converge to the API value; light-theme ink = darkened pc, here mirrored per-party). Build notes: party-color tint/line via color-mix over one hex; rows reuse the S4 .off widget verbatim (one new tappable chip); state pre-selection = state of the viewer's placePath; All-states copy server-driven off seeded-states count. Events: party_page_viewed{partyId,source} · party_chip_tapped{context} · party_followed · party_roster_filtered{role,state} · party_roster_row_tapped. For the gate: ① Follow on the v1 read-only page = recommended KEEP (audience compounds before Part B; spec lists follow under Part B — flag if the lead wants it deferred) ② built Flutter v1 should be re-checked against R1/R2/R4 chrome (it predates these frames) ③ roster sort locked A→Z by seat — revisit only with evidence.