diff --git a/README.md b/README.md index d424a55..8cbf784 100644 --- a/README.md +++ b/README.md @@ -324,6 +324,15 @@ Computed metrics are derived from game and survey responses for prototype analys - **`careAvoidance`**: skipped treatments plus half of partial treatments. - **`attributionCategoryShift`**: pre-reveal primary attribution compared with post-reveal revised primary attribution. +## Contact and collaboration + +This project is maintained by Dr. Mohammad Moradi. + +- Email: dr.moradi@gmail.com +- LinkedIn: https://www.linkedin.com/in/mohammad-moradik/ + +Thoughtful feedback, methodological suggestions, replication ideas, and collaboration inquiries are very welcome. If you are interested in the project or have comments on the study design, please feel free to get in touch. + ## Privacy and ethics This project uses incomplete information and should be reviewed carefully before use with real participants. diff --git a/app/consent/page.tsx b/app/consent/page.tsx index 1176bee..2c722a4 100644 --- a/app/consent/page.tsx +++ b/app/consent/page.tsx @@ -17,15 +17,15 @@ export default function ConsentPage() { ) : (

Server submission is disabled in this build. Data remains in this browser only, you can copy or download the JSON export, and no data reaches the researcher automatically.

)} -

The decision game includes incomplete information. Some details are intentionally explained only after the decision task so the study can compare judgments before and after the explanation.

-

The reveal and debrief occur before any optional server submission, so you can review the incomplete-information explanation before deciding whether to share the completed anonymous session.

+

The decision task includes incomplete information. Some scenario details are explained later so the study can compare interpretations made at different points in the experience.

+

A debrief occurs before any optional server submission, so you can review the fuller scenario explanation before deciding whether to share the completed anonymous session.

Participation is voluntary. You can stop at any time by closing the browser tab, resetting the study session, choosing not to share the JSON export, or choosing not to submit to the server when that feature is available.

This is a prototype, not a validated psychological test. Questions are about interpretations of a simplified game and should not be treated as a diagnosis or judgment of character.

{[ isServerSubmissionEnabled ? "Responses remain local unless you explicitly submit." : "Responses are stored in this browser only.", - "The game uses incomplete information until the reveal.", + "The task uses incomplete information until the debrief.", "No direct identifiers are collected by the prototype.", ].map((item) => (
diff --git a/app/game/page.tsx b/app/game/page.tsx index 608f3a6..2640207 100644 --- a/app/game/page.tsx +++ b/app/game/page.tsx @@ -5,7 +5,7 @@ import { SiteShell } from "@/components/SiteShell"; export default function GamePage() { return ( - + ); diff --git a/app/layout.tsx b/app/layout.tsx index a12a71a..d573018 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -3,7 +3,7 @@ import "./globals.css"; export const metadata: Metadata = { title: "Hidden Cost Game", - description: "A research-oriented decision-making game about judgments under unequal conditions.", + description: "A research-oriented decision-making game about decisions and outcome interpretation under incomplete information.", }; export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) { diff --git a/app/page.tsx b/app/page.tsx index 53a3009..42c60d8 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -8,22 +8,22 @@ export default function HomePage() { return (

What you will do

- You will make several healthcare-related choices in a points-based game, review a simple results table, answer short interpretation questions, and then see the hidden cost rule used in the simulation. + You will make several choices in a points-based scenario, review visible outcomes, and answer brief questions about how you interpret those outcomes. Some details about the scenario are explained later as part of the study design.

- The study is about how visible outcomes can be shaped by invisible starting conditions. It is not a test of personal knowledge, values, or ability. + The study is about how people make and interpret decisions when not all contextual information is available at the beginning. It is not a test of personal knowledge, values, or ability.

- {['Local storage only', 'No right answers', 'Prototype data export'].map((item) => ( + {['Local storage only', 'No right answers', 'Short debrief included'].map((item) => (
{item}
))}
diff --git a/app/pre-reveal-survey/page.tsx b/app/pre-reveal-survey/page.tsx index 6310dbc..a77865c 100644 --- a/app/pre-reveal-survey/page.tsx +++ b/app/pre-reveal-survey/page.tsx @@ -5,7 +5,7 @@ import { SiteShell } from "@/components/SiteShell"; export default function PreRevealSurveyPage() { return ( - + ); diff --git a/app/visible-results/page.tsx b/app/visible-results/page.tsx index 5926d34..556daa2 100644 --- a/app/visible-results/page.tsx +++ b/app/visible-results/page.tsx @@ -5,7 +5,7 @@ import { SiteShell } from "@/components/SiteShell"; export default function VisibleResultsPage() { return ( - + ); diff --git a/components/HiddenCostGame.tsx b/components/HiddenCostGame.tsx index 93ae732..79a8d16 100644 --- a/components/HiddenCostGame.tsx +++ b/components/HiddenCostGame.tsx @@ -172,7 +172,7 @@ export function HiddenCostGame() {
- You only see the costs assigned to your displayed profile. Other players may or may not have the same cost conditions. + The task shows the information needed for this round. Additional scenario details are explained later as part of the study design.
diff --git a/components/HiddenRuleReveal.tsx b/components/HiddenRuleReveal.tsx index 00c586f..9fefc9d 100644 --- a/components/HiddenRuleReveal.tsx +++ b/components/HiddenRuleReveal.tsx @@ -51,10 +51,17 @@ export function HiddenRuleReveal() {
Players assigned to low coverage paid the full cost of treatment.

-

This means two players could choose care for the same medical event while facing different financial pressure. The aim is not to evaluate whether any participant is fair, unfair, good, or bad; responses should be interpreted cautiously.

+

This means two players could choose care for the same medical event while facing different financial pressure. This design is not intended to evaluate whether any participant is fair or unfair. It is meant to study how interpretations change when additional context becomes available. Responses should be interpreted cautiously.

If you later choose to submit this anonymous session, the submitted data should be treated as exploratory prototype data rather than as a definitive measurement of you or anyone else.

+
+

Why the task used incomplete information

+

+ The task first asks participants to interpret outcomes using only partial context. The debrief then explains the full scenario so the study can compare initial and revised interpretations. This is a common structure in behavioral research, but it should be used carefully and transparently. +

+
+
{hiddenCostProfiles.map((profile) => { const isAssignedProfile = profile.displayedProfile === game.displayedProfile; diff --git a/components/ParticipantBackgroundForm.tsx b/components/ParticipantBackgroundForm.tsx index 9568204..7e4f1c9 100644 --- a/components/ParticipantBackgroundForm.tsx +++ b/components/ParticipantBackgroundForm.tsx @@ -15,7 +15,7 @@ const genderOptions = ["Woman", "Man", "Non-binary / another description", prefe const medicalCostPressureOptions = ["Yes, several times", "Yes, once or twice", "No", "Not sure", preferNotToAnswer]; const healthcareCoverageOptions = ["Public or general insurance", "Private or supplementary insurance", "Special organizational coverage", "No insurance", "I don’t know", preferNotToAnswer]; const specialOrganizationalCoverageOptions = ["Yes", "No", "I don’t know", preferNotToAnswer]; -const priorExposureToUnequalSystemsOptions = ["Yes, personally experienced", "Yes, closely observed", "No", "Not sure", preferNotToAnswer]; +const priorExposureToComplexSystemsOptions = ["Yes, personally experienced", "Yes, closely observed", "No", "Not sure", preferNotToAnswer]; const initialProfile: ParticipantProfile = { ageGroup: "", @@ -139,16 +139,16 @@ export function ParticipantBackgroundForm() { updateProfile("inequalityOrientation", value)} /> updateProfile("priorExposureToUnequalSystems", value)} /> updateAnswer("individualResponsibility", value)} /> - updateAnswer("constraintSuspicion", value)} /> + updateAnswer("constraintSuspicion", value)} /> updateAnswer("protestLegitimacy", value)} /> - updateAnswer("ruleCorrectionSupport", value)} /> - updateAnswer("redistributionSupport", value)} /> + updateAnswer("ruleCorrectionSupport", value)} /> + updateAnswer("redistributionSupport", value)} /> updateAnswer("confidence", value)} /> updateAnswer("informationSufficiency", value)} /> @@ -134,7 +134,7 @@ export function PreRevealSurveyForm() { {showValidation && !isComplete ? Please answer all closed-ended items and write 10–500 characters in the explanation. Your draft has been saved in this browser. : null}
- Continue to reveal + Continue to debrief
diff --git a/components/ProgressIndicator.tsx b/components/ProgressIndicator.tsx index f6a6caa..85846f9 100644 --- a/components/ProgressIndicator.tsx +++ b/components/ProgressIndicator.tsx @@ -10,27 +10,27 @@ export function ProgressIndicator({ currentStage }: ProgressIndicatorProps) { const currentIndex = studyStages.findIndex((stage) => stage.id === currentStage); return ( -