S6 study packet

Everything that defines the current S6 wave and its low-cost s6-short variant: the pre-registration package, the S6 methodology brief, the survey instrument, and the analysis code. S6 is fielding with Verasight. This packet describes the design; the data and result numbers publish once the wave closes and its snapshot is frozen. S5 remains the locked confirmatory archive until then.

Start here

The pre-registration package, the methodology rationale, and the change log for the current wave.

S6 pre-registration (full instrument + s6-short + panel wave)
The complete S6 package with the verbatim instrument (sections 1-10), the trimmed s6-short arm (Appendix A), and the s6-verasight representative-panel wave with its two pre-exposure lead items, hypotheses HV1 through HV3, and the fielded-QSF hash anchor (Appendix B). Registered on OSF at osf.io/x5ve6 on August 11, 2026, before any confirmatory fielding.
S6 methodology rationale
The design rationale for the S6 instrument and the s6-short variant. Design only; no S6 result numbers until a frozen snapshot exists.
What changed from S5 to S6
A concise summary of every design change between the completed S5 wave and the current S6 instrument.

Data

The frozen responses and published numbers for S6.

S6 is fielding with Verasight. There is no frozen S6 dataset or figure file yet, so this packet ships the design and the analysis code, not S6 result numbers. When the wave closes and the S6 snapshot is frozen (rthg-s6.json and the matching dataset and figures), it will appear here and the published numbers will reproduce from it. S5 stays up as the archived confirmatory packet.

Survey instrument

The authoritative wording, item structure, and the S6 two-tier exclusion rules as fielded.

lib/rthg-study-definition.ts
Every page, question, scale, and principle id, exactly as fielded, plus the analysis-plan constants.
115.4 KBDownload
lib/rthg-study-flags-s6.ts
The S6 / s6-short exclusion rules, including the two-tier headline vs confirmatory split, the contradiction-based B-rev rule, and the explicit citizenship exclusion.
8.6 KBDownload

Qualtrics instrument

The machine-readable survey file fielded on Qualtrics (and via Verasight), plus the styling needed to reproduce its appearance. Generated from the study definition above, so the two cannot drift.

qsf/rthg-s6.qsf
The S6 survey as a Qualtrics .qsf import file: every page, question, scale, and the page grouping, exactly as fielded.
155.7 KBDownload
qsf/rthg-s6-verasight.qsf
The s6-verasight edition: the same S6 survey plus the two pre-exposure lead pages (rung-1 agreement, then trust), without the welcome trust warmup, and with demographics reduced to the political items, per the S6-Verasight pre-registration.
155.4 KBDownload
qsf/rthg-custom-css.css
The Custom CSS pasted into Qualtrics Look and Feel so the imported survey matches the live instrument.
18.1 KBDownload
qsf/README-styling.md
The manual steps to import the .qsf, apply the styling, and set Section B randomization to match the live instrument.
3.0 KBDownload

Analysis code

The same analysis engine used for every wave. It already reads S6 and s6-short rows; it produces S6 numbers once an S6 dataset is frozen.

scripts/rthg-reproduce.ts
Recomputes every published figure from the raw data and prints MATCH or MISMATCH against the published values.
5.6 KBDownload
lib/study-analysis/index.ts
The analysis engine entry point: ties parsing, filtering, and statistics together.
1.7 KBDownload
lib/study-analysis/parse.ts
Normalizes a raw response row into the engine’s internal shape.
3.7 KBDownload
lib/study-analysis/filters.ts
Applies the pre-registered exclusion rules and builds the sample funnel.
2.9 KBDownload
lib/study-analysis/stats.ts
The pure statistics (support shares, Wilson intervals, principle agreement, party breakdown).
9.6 KBDownload
lib/study-analysis/waves.ts
Per-wave field keys and page ids (taken verbatim from the survey instrument).
7.2 KBDownload
lib/study-analysis/types.ts
The data structures used across the analysis engine.
5.2 KBDownload

Unit tests

Every rule in the analysis engine has a unit test. The same tests run inside the /verify page (in your browser) and on the command line. A green suite means the deployed code matches the documented behavior.

lib/study-tests/framework.ts
Tiny framework-agnostic test runner used by both vitest and the in-browser runner.
5.8 KBDownload
lib/study-tests/fixtures.ts
Synthetic clean-baseline row builders for S5, S6, and s6-short. Tests perturb one field at a time to exercise a single rule.
6.0 KBDownload
lib/study-tests/parse.tests.ts
Reads vote, mechanism, panel, and demographics from the right keys per wave; B-rev reverse-scoring; no-opinion handling.
6.1 KBDownload
lib/study-tests/stats.tests.ts
Wilson 95% CI, mean, median, vote stats, principle stats, mechanism, shift, post-stratification.
12.1 KBDownload
lib/study-tests/filters-s6.tests.ts
Every S6 / s6-short rule plus the two-tier exclusion logic (headline vs confirmatory) and the contradiction-based B-rev rule.
7.4 KBDownload
lib/study-tests/cell-assignment.tests.ts
Seed determinism, cell assignment, Section B fixed positions, and a 1,000-seed property test of the no-three-in-a-row cluster rule.
7.4 KBDownload
lib/study-tests/waves.tests.ts
Each wave config has the right arm prefix, mechanism rating prefix, panel page reuse, and post-strat benchmark.
3.9 KBDownload
lib/study-tests/cohorts.tests.ts
Cohort funnel narrows monotonically; vote-2024 proxy applies on S5 only; non-citizen flag drops on S6+.
5.3 KBDownload
lib/study-tests/run.ts
Command-line entry that runs every test outside vitest and exits non-zero on failure.
lib/study-tests/__vitest__/all.test.ts
Vitest adapter so the same tests report in a standard test runner.

AI audit prompt

The copy-paste prompt for the no-code AI verification path.

AI_AUDIT_PROMPT_S6.txt
The copy-paste AI audit prompt for S6 / s6-short data, ready for use once the S6 snapshot is frozen.
1.9 KBDownload