{
  "protocol_id": "atlas-usability-v0.1",
  "created": "2026-10-12",
  "status": "draft_not_run",
  "purpose": "Porównać użyteczność konkretnych wersji 150 tematów i zebrać sprawdzalne reguły do skilla; nie ranking twórców-modeli.",
  "population": {"topics": 150, "versions": ["v1", "v2", "v3"], "pages": 450, "categories": 15, "pilot_ab_history_in_main_sample": false},
  "models": [
    {"slot": "judge_1", "provider": null, "exact_model_id": null, "effort": null, "parameters": null, "billing_mode": null},
    {"slot": "judge_2", "provider": null, "exact_model_id": null, "effort": null, "parameters": null, "billing_mode": null},
    {"slot": "judge_3", "provider": null, "exact_model_id": null, "effort": null, "parameters": null, "billing_mode": null}
  ],
  "model_requirements": ["Multimodalny odczyt obrazu i tekstu", "Trzej różni dostawcy", "Identyczne pakiety dowodów i limity materiału", "Osobne bezstanowe sesje; brak ocen pozostałych sędziów", "Dokładny model i parametry zablokowane przed pilotem", "Brak niejawnego fallbacku modelu, konta lub trybu rozliczania"],
  "manifest_required": ["topic_id", "category", "version", "selected_variant", "source_url", "html_sha256", "dependency_manifest_sha256", "frozen_at", "blind_id", "redaction_log"],
  "conditions": {
    "browser_version": null,
    "os_version": null,
    "device_scale_factor": 1,
    "locale": "pl-PL",
    "timezone": "Europe/Warsaw",
    "viewports": [{"id": "desktop", "width": 1440, "height": 900}, {"id": "mobile", "width": 390, "height": 844}, {"id": "narrow", "width": 320, "height": 800}],
    "text_resize_percent": 200,
    "text_resize_method": "Ustalić i zapisać metodę zapewniającą rzeczywiste dwukrotne powiększenie tekstu; nie mylić z samą zmianą viewportu.",
    "fresh_storage_each_page": true,
    "external_resources_policy": "Zamrozić lokalne zasoby tam, gdzie uprawnione. Zewnętrzne żądania, awarie, fonty i brakujące mapy zapisywać. Nie ukrywać awarii screenshotem zastępczym.",
    "reduced_motion": "Zwykły przebieg oraz kontrola prefers-reduced-motion; zachować konfigurację w manifestach.",
    "keyboard_test": true,
    "wcag_certification_claim": false
  },
  "tasks": {"per_topic": 3, "types": ["find_and_understand", "primary_interaction", "source_or_limit"], "human_approval_required": true, "golden_answers_required": true, "same_goal_across_versions": true, "instructional_click_paths_hidden_from_judges": true, "not_applicable_requires_prespecified_scope_reason": true},
  "evidence": ["Initial viewport and full-page screenshots for desktop and mobile", "Task before/after states and action trace or recording", "Accessibility tree or DOM plus exact state reference", "320px, text200%, keyboard, console and asset findings", "Verified task answer/source packet, separate from authored page claims"],
  "stages": [
    {"id": "freeze", "state": "pending", "paid_model_calls": false},
    {"id": "human_calibration", "state": "pending", "topics": 15, "topic_selection": "Jeden z każdej kategorii przed wynikami modeli; różne mechanizmy i długości.", "topic_ids": null, "human_reviewers": 2, "qualitative_participants_proposed": "6–8; do wykrycia problemów i kalibracji, nie do ogólnej ilościowej oceny 450 stron."},
    {"id": "pilot_models", "state": "awaiting_budget_approval", "topics": 15, "absolute_sessions": 135, "pairwise_sessions": 270, "base_total_sessions": 405},
    {"id": "full_models", "state": "blocked_by_pilot_gate", "topics": 150, "absolute_sessions_including_pilot": 1350, "absolute_sessions_after_unchanged_pilot": 1215, "pairwise_sessions_pilot_only": 270, "base_total_sessions_including_pilot": 1620, "repeat_fraction": 0.1, "repeat_rule": "Losowe 10% pakietów absolutnych i porównań po stałym ziarnie; nowe sesje; koszty odrębne.", "per_page_budget_pln": null},
    {"id": "targeted_pairwise", "state": "requires_separate_capped_approval", "selection_rule_to_preregister": "Po odrzuceniu przez człowieka błędów materiału i runnera: sprzeczne kierunki zmiany między sędziami albo nierozstrzygnięty zarzut krytycznej regresji. Nie wybierać tylko przykładów wspierających tezę.", "sessions_per_additional_pair": 6, "maximum_pairs": null, "budget_limit_pln": null, "global_win_rate_inference": false},
    {"id": "optional_full_pairwise", "state": "not_authorized_for_execution", "total_pairwise_sessions_including_pilot": 2700, "extra_pairwise_sessions_above_standard": 2430, "base_total_sessions_absolute_and_pairwise": 4050, "separate_approval_required": true},
    {"id": "human_adjudication", "state": "pending", "review": ["All critical issues", "All material disagreements", "All order reversals", "Random 10% of agreed absolute reviews" ]},
    {"id": "optional_agent_navigation", "state": "not_authorized_for_execution", "actions_per_task": 20, "active_tool_seconds_per_task": 120, "result_label": "agent_task_outcome_not_human_usability"},
    {"id": "separate_code_analysis", "state": "not_authorized_for_execution", "run_after_blind_ui_reviews_locked": true}
  ],
  "blinding": {"hide_version_and_author": true, "hide_v1_idea_ratings": true, "preserve_immutable_originals": true, "modified_research_copies_logged": true, "record_leaks": true, "pair_labels": ["X", "Y"], "both_orders_separate_sessions": true, "random_seed": null},
  "metrics": {"task_statuses": ["success", "partial", "failure", "not_assessable", "not_applicable"], "ordinal_scale": {"0": "Udokumentowana blokada", "1": "Utrudnienie wymagające obejścia/domysłu", "2": "Wystarczająco działa w zakresie testu", "3": "Konkretne rozwiązanie dodatkowo pomaga", "null": "Nieocenione, podać powód"}, "dimensions": ["orientation", "information_architecture", "interaction_feedback", "readability_and_resilience", "form_supports_task", "sources_and_limits"], "pairwise": ["X", "Y", "tie", "insufficient_evidence"], "single_weighted_total": false, "critical_failure_can_be_averaged_away": false, "human_time_and_satisfaction_from_model": false},
  "analysis": {"unit": "topic", "within_topic_version_pairs": [["v1", "v2"], ["v1", "v3"], ["v2", "v3"]], "uncertainty": "95% cluster bootstrap of whole topics stratified by category; preserve all versions and judges together. Report exact corpus counts as well; no inference to all websites.", "bootstrap_resamples": 10000, "bootstrap_seed": null, "agreement": ["Raw agreement and confusion matrices", "Pairwise weighted kappa for ordinal dimensions with missingness reported", "Nominal agreement for pairwise preference, including tie/abstention", "Order consistency", "Repeat stability", "Evidence-supported issue rate against human checks"], "report_missing_denominators": true, "no_causal_claim_about_generator_model": true},
  "budget": {"currency": "PLN", "pilot_limit": null, "full_limit": null, "reserve_fraction": null, "approval": null, "price_snapshot_date": null, "session_not_equal_api_call": true, "cost_basis": "Measured token/image/tool usage per model and current tariffs; with subscription explicitly state allocation method, not invented API cost.", "stop_on_limit": true},
  "gate_before_full_run": {"tasks_approved": false, "evidence_complete": false, "all_critical_issues_checked": false, "tolerances_for_unsupported_claims_and_order_instability": null, "pilot_disagreements_explained": false, "budget_approved": false, "protocol_frozen": false},
  "sources": ["https://www.nngroup.com/articles/task-scenarios-usability-testing/", "https://www.nngroup.com/articles/success-rate-the-simplest-usability-metric/", "https://www.nngroup.com/articles/usability-metrics/", "https://www.w3.org/WAI/WCAG22/Understanding/reflow.html", "https://www.w3.org/WAI/WCAG22/Understanding/resize-text.html", "https://arxiv.org/abs/2306.05685", "https://arxiv.org/abs/2406.07791"]
}
