Stenogram Sejmu · 2026-07-15

Michał Gramatyka

Kadencja 10 · posiedzenie 62 · wypowiedź 232

Profil posła

Brak głosu imiennego z tego dnia, który potwierdzałby klub mówcy.

Pełna wypowiedź

10. kadencja, 62. posiedzenie, 1. dzień (15-07-2026) 8. punkt porządku dziennego: Pierwsze czytanie senackiego projektu ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz odpowiedzialności za naruszenie obowiązków w tych sprawach (druk nr 2769). Poseł Michał Gramatyka: Szanowny Panie Marszałku! Panowie Ministrowie! Panie Posłanki i Panowie Posłowie! Nie zbudowałem bomby. Pokazałem tylko, że istnieje - powiedział Polak Michał Kosiński. Chodzi o znany artykuł ˝Dane, przez które świat stanął na głowie˝. To był 2014 r. Michał Kosiński, prof. Uniwersytetu Stanforda, psycholog społeczny, ale też analityk danych, pokazał, w jaki sposób, za pomocą analizy kilkuset kliknięć w znanym portalu Facebook, można stworzyć dokładny, precyzyjny portret psychologiczny dowolnej użytkowniczki i dowolnego użytkownika. Portret psychologiczny tak detaliczny, że zawierający dane na temat preferencji społecznych, poziomu intelektualnego, koloru skóry, poglądów politycznych, decyzji sprzedażowych, decyzji handlowych każdej i każdego z nas. Facebook na początku chciał pozwać polskiego naukowca, ale potem stwierdził, że może lepiej zmonetyzować jego pracę i doprowadził do patentowania tego algorytmu, a sam Kosiński spotkał się z propozycją ze strony jednej z firm, które prowadziły swoją działalność biznesową właśnie w portalu Facebook. Ta firma przeszła potem do historii. Nazywała się Cambridge Analytica. Zajmowała się mikrotargetowaniem. Zajmowała się tworzeniem treści, które były idealnie skrojone pod potrzeby grup wyborców wahających się, grup wyborców, które mogły przesądzić albo w jedną, albo w drugą stronę. I dlatego dzisiaj rozmawiamy o regulacji TTPA, czyli regulacji dotyczącej przejrzystości reklam politycznych, bo w 2014, 2015, a potem 2016 r. zaczęło się ujawnianie tego, co w portalach społecznościowych narobiła właśnie firma Cambridge Analytica. Najpierw zaczął pisać o tym Guardian, potem Observer. Wszystko dzięki sygnaliście, który zaczął informować te wydawnictwa o tym, jak precyzyjne, jak bezduszne, jak detaliczne potrafią być algorytmy w XXI w., jak bardzo algorytmy potrafią wpływać na nasze decyzje. Nam się wydaje, że my te decyzje podejmujemy na podstawie informacji, które przyswajamy, ale rzeczywistość jest skrajnie różna, skrajnie odmienna. Cambridge Analytica to była akcja wykorzystująca bardzo atrakcyjną aplikację, która profilowała użytkowników, a potem na podstawie profili najpierw tysięcy, potem dziesiątków tysięcy, setek tysięcy, milionów użytkowniczek i użytkowników przygotowywano treści, które miały bardzo precyzyjny wpływ na decyzje wyborcze. I to widzi Komisja Europejska, to widzi Parlament Europejski, dlatego dzisiaj rozmawiamy o implementacji do polskiego prawa tej właśnie regulacji, regulacji dotyczącej przejrzystości reklam politycznych. One nie będą zakazane. Te reklamy w dalszym ciągu będzie można w polskim systemie prawnym stosować, tyle że trzeba będzie te reklamy podpisać. Będzie musiało być jasne, kto jest sponsorem takiej reklamy, ile takiej reklamy jest w medium społecznościowym, tym czy innym, w jaki sposób ta reklama została opłacona, kto płaci za tę reklamę, jaki ona ma budżet? O to chodzi w zapewnieniu przejrzystości reklamy politycznej. Rozumiem, że są tacy pośród nas, którym ryby najlepiej łapie się w mętnej wodzie, tam, gdzie nie ma zasad, albo tam, gdzie tych zasad nie jesteśmy w stanie ustalić. Ale przejrzystość w odniesieniu do reklamy politycznej jest wartością fundamentalną, żeby można było powiedzieć, że ta reklama jest realizowana zgodnie z prawem. Te wybory, które nas czekają w 2027 r., to będą już inne wybory. Bo to będą wybory, w których reklam politycznych w portalu, o którym mowa, tj. Facebooku, po prostu nie będzie. Facebook wyłączył możliwość kupowania reklam i promocji postów o treści społecznej i politycznej właśnie w związku z wprowadzeniem tej regulacji, właśnie w związku z wprowadzeniem regulacji TTPA. On tylko potwierdził słuszność tej regulacji, po prostu. A to, że wskazujemy konkretne organy w polskim systemie prawnym odpowiedzialne za to, żeby ta regulacja działała, nie jest niczym nienormalnym. To bardzo dobrze, że wiodącą rolę odgrywa PKW. To świetnie, że jest tutaj (Dzwonek) Urząd Komunikacji Elektronicznej, UODO, UOKiK i Krajowa Rada Radiofonii i Telewizji. Klub Parlamentarny Polski 2050 oczywiście popiera to przedłożenie. Dziękuję bardzo. (Oklaski) Przebieg posiedzenia

Otwórz zachowany oryginał · Źródło urzędowe

Dowód treści wypowiedzi

Dowód kolejności na liście dnia

Kontekst w stenogramie

  1. Wcześniej · wypowiedź 230 Witold Tumanowicz 10. kadencja, 62. posiedzenie, 1. dzień (15-07-2026) 8. punkt porządku dziennego: Pierwsze czytanie senackiego projektu ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz odpowiedzialności za naruszenie obowią
  2. Wcześniej · wypowiedź 231 Izabela Bodnar 10. kadencja, 62. posiedzenie, 1. dzień (15-07-2026) 8. punkt porządku dziennego: Pierwsze czytanie senackiego projektu ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz odpowiedzialności za naruszenie obowią
  3. Później · wypowiedź 233 Jarosław Sachajko 10. kadencja, 62. posiedzenie, 1. dzień (15-07-2026) 8. punkt porządku dziennego: Pierwsze czytanie senackiego projektu ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz odpowiedzialności za naruszenie obowią
  4. Później · wypowiedź 234 Roman Fritz 10. kadencja, 62. posiedzenie, 1. dzień (15-07-2026) 8. punkt porządku dziennego: Pierwsze czytanie senackiego projektu ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz odpowiedzialności za naruszenie obowią
1. (42.48ms; exec 42.41 + fetch 0.07; rows 1) SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.object_id AS member_id, day.object_id AS day_id, day.term, day.proceeding_number, day.source_date, day.current_revision_id AS day_revision_id, dayStatement.ordinal, dayEvidence.id AS list_evidence_id, dayEvidence.selector_type AS list_selector_type, dayEvidence.selector AS list_selector, dayFetch.id AS list_fetch_id, dayFetch.requested_url AS list_source_url, dayArtifact.sha256 AS list_sha256, binding.artifact_id, binding.evidence_id AS transcript_evidence_id, transcriptEvidence.selector_type AS transcript_selector_type, transcriptEvidence.selector AS transcript_selector, transcriptFetch.id AS transcript_fetch_id, transcriptFetch.requested_url AS transcript_source_url, artifact.sha256 AS transcript_sha256, artifact.detected_mime, artifact.byte_size FROM sejm_statements s JOIN sejm_transcript_days day ON day.object_id = s.transcript_day_id LEFT JOIN sejm_mp_identities mp ON mp.term = day.term AND mp.mp_number = s.source_member_id LEFT JOIN sejm_transcript_day_statements dayStatement ON dayStatement.day_id = day.object_id AND dayStatement.day_revision_id = day.current_revision_id AND dayStatement.statement_id = s.object_id LEFT JOIN evidence dayEvidence ON dayEvidence.id = dayStatement.evidence_id LEFT JOIN fetches dayFetch ON dayFetch.id = dayEvidence.fetch_id LEFT JOIN artifacts dayArtifact ON dayArtifact.id = dayEvidence.artifact_id LEFT JOIN documents document ON document.owner_object_id = day.object_id AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', s.statement_number) LEFT JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) LEFT JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL LEFT JOIN evidence transcriptEvidence ON transcriptEvidence.id = binding.evidence_id LEFT JOIN fetches transcriptFetch ON transcriptFetch.id = transcriptEvidence.fetch_id LEFT JOIN artifacts artifact ON artifact.id = binding.artifact_id WHERE s.object_id = 18649 LIMIT 1
2. (2.22ms; exec 2.19 + fetch 0.03; rows 1) WITH ranked AS ( SELECT extraction.id, extraction.source_artifact_id, extraction.quality_state, ROW_NUMBER() OVER (PARTITION BY extraction.source_artifact_id ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC) AS preference FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id IN (19861) AND run.state = 'completed' ) SELECT ranked.source_artifact_id, ranked.id, ranked.quality_state, segment.source_text AS source_text FROM ranked LEFT JOIN text_segments segment ON segment.extraction_id = ranked.id WHERE ranked.preference = 1 ORDER BY ranked.source_artifact_id, segment.ordinal
3. (1.94ms; exec 1.91 + fetch 0.03; rows 4) SELECT statement.object_id, statement.statement_number, statement.speaker_name, dayStatement.ordinal, binding.artifact_id FROM sejm_transcript_day_statements dayStatement JOIN sejm_statements statement ON statement.object_id = dayStatement.statement_id LEFT JOIN documents document ON document.owner_object_id = dayStatement.day_id AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', statement.statement_number) LEFT JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) LEFT JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.language = 'und' AND binding.current_selector_sha IS NOT NULL WHERE dayStatement.day_id = 18416 AND dayStatement.day_revision_id = 18064 AND dayStatement.ordinal BETWEEN 230 AND 234 AND statement.object_id <> 18649 ORDER BY dayStatement.ordinal
4. (2.04ms; exec 2.01 + fetch 0.03; rows 4) WITH ranked AS ( SELECT extraction.id, extraction.source_artifact_id, extraction.quality_state, ROW_NUMBER() OVER (PARTITION BY extraction.source_artifact_id ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC) AS preference FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id IN (19859, 19860, 19862, 19877) AND run.state = 'completed' ) SELECT ranked.source_artifact_id, ranked.id, ranked.quality_state, LEFT(segment.source_text, 240) AS source_text FROM ranked LEFT JOIN text_segments segment ON segment.extraction_id = ranked.id WHERE ranked.preference = 1 ORDER BY ranked.source_artifact_id, segment.ordinal
5. (3.96ms; exec 3.92 + fetch 0.03; rows 0) SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_votes vote ON vote.object_id = individual.vote_id AND vote.current_revision_id = individual.vote_revision_id JOIN object_revisions revision ON revision.id = vote.current_revision_id JOIN evidence e ON e.id = individual.evidence_id JOIN fetches f ON f.id = e.fetch_id WHERE vote.term = 10 AND vote.sitting_number = 62 AND individual.mp_number = 117 AND LEFT(JSON_VALUE(revision.snapshot, '$.date'), 10) = '2026-07-15' AND individual.raw_club IS NOT NULL AND individual.raw_club <> '' ORDER BY vote.voting_number DESC
PHP: 58ms | App: 57.8ms | DB: 52.7ms (5, rows: 10) [exec: 52.4ms, fetch: 0.2ms] | View: 0.2ms (1) | Mem: 2MB (peak: 2MB) | Files: 20
toggle files
(0.21ms) /app/templates/speeches/show.php
/app/public/index.php
/app/vendor/autoload.php
/app/vendor/composer/autoload_real.php
/app/vendor/composer/platform_check.php
/app/vendor/composer/ClassLoader.php
/app/vendor/composer/autoload_static.php
/app/vendor/symfony/deprecation-contracts/function.php
/app/vendor/symfony/polyfill-php83/bootstrap.php
/app/lib/PFrame.php
/app/config/credentials/local.php
/app/src/Http/PublicResponseCache.php
/app/src/Http/AuthRoutes.php
/app/src/Http/ReviewDecisionRoutes.php
/app/src/Http/TopicDecisionRoutes.php
/app/src/Http/WatchRoutes.php
/app/src/Http/SpeechController.php
/app/src/Overview/SpeechReadModel.php
/app/src/Text/TextSearch.php
/app/templates/layout.php