feat(action): per-rep exclusion filter + law panel on action detail
Front side of risefor-lobbying !43 (merged) (sprint campaign-level, 2026-09-10).
1. Exclude specific representatives
-
excludedRepresentativesin fields map (expand) + global.d.ts type - target-search filter: rep url-ref match with /ssr/ normalization, same predicate position as party exclusion — shape handled for array AND ldp-container (normalizePartyRefs)
2. Law panel on action detail (targetLaw)
- New
<risefor-action-law-panel>: law title + "Voir le détail" (requestNavigation to risefor-law-detail), compact "Le parcours de la loi" (top-level actes + events + doc chips, collapsed by default), AN votes via<risefor-vote-recap-scrutin>(hidden when scrutins = 0 via the scrutin-count event) - Mounted only when targetLaw present; field absent (plugin off) → nothing mounts, zero coupling
- targetLaw added to the fields map (was never fetched client-side)
- Single-resource fetches only (102MB lesson); fetch failures silent (panel must never break the action page)
Verification
- tsc: zero new errors vs master baseline in all touched files
- Live payload contract checked (targetLaw {@id} shape, ssr/non-ssr refs)
- NOTE: visual render check pending — headless browser hung on federation data; recommend checking on the real dev action page after merge (action 1384 on dev is linked to law 2174 which has 422 scrutins).