2.5.1Poziom A

Gesty wskazujące

Pointer Gestures

Funkcja gestu wielopunktowego lub zależnego od ścieżki ma alternatywę jednym wskaźnikiem bez takiego gestu, chyba że gest jest niezbędny.

Komu pomaga
Ograniczenia ruchowePamięć i koncentracja
Zastosowanie
WWWAplikacje mobilneAplikacje desktopoweDokumenty cyfroweInne urządzenia

Warunki i wyjątki opisano w artykule.

Wersja
WCAG 2.2, wprowadzone w 2.1
Zasada / wytyczna
Funkcjonalność / 2.5
Stan researchu
Draft AI. Bez przeglądu człowieka.
Redakcja artykułu
· wersja robocza
Na tej stronie

Co oznacza to kryterium

Nie każdy może rozsunąć dwa palce albo narysować określony ruch na ekranie. Udostępnij tę samą funkcję również przez pojedyncze dotknięcia lub kliknięcia, np. przyciski powiększenia planu. Gest może pozostać jako dodatkowy sposób obsługi; sama alternatywa klawiaturowa nie spełnia tego wymagania. Wyjątek dotyczy gestu niezbędnego dla samej funkcji, a nie preferowanego przez projektanta.

Potrzeba / ID ze wspólnego słownika Bariera i skutek
Ograniczenia ruchowe / motor Osoba używająca jednego palca, rysika, wskaźnika głową lub emulatora myszy nie może jednocześnie ustawić dwóch punktów albo dokładnie prowadzić wskaźnika. Przyciski umożliwiają tę samą zmianę bez koordynacji gestu.
Pamięć i koncentracja / cognitive Nieoczywisty gest trzeba znać i pamiętać; nazwane kontrolki wskazują działanie bez odtwarzania sekwencji ruchu. To uzasadnienie redakcyjnego tagu, nie diagnoza ani twierdzenie, że dotyczy wszystkich osób w tej kategorii.

Nie przypisano słuchu, rozróżniania barw lub niewidzenia: ten przykład bada alternatywę wskaźnikową. Dostępność czytnika i klawiatury ocenia się odrębnie.

Przykłady błędów i poprawek

Plan punktu odbioru ma pinch i przyciski „Powiększ plan” oraz „Pomniejsz plan”. Każda aktywacja zmienia skalę o 25 punktów procentowych w zakresie 100–300%; działa też po ustawieniu skali gestem. Min/max pozostają te same, a przy granicy właściwy przycisk jest nieaktywny. Wspólny kontroler przekazuje zmianę do tego samego planu.

iOS Simulator, dobra demonstracja Pracowni: plan punktu odbioru, skala 100% oraz nazwane przyciski powiększania i pomniejszania.

Good zaczyna od 100% i udostępnia przyciski zmiany skali obok planu. Surowy XCUIScreen z 2026-10-03, Flutter/iOS Simulator; obraz pokazuje dostępne kontrolki.

iOS Simulator, dobra demonstracja po pojedynczym tap Powiększ plan: ten sam plan ma skalę 125%.

Pojedynczy tap Powiększ plan zmienił skalę good na 125%. Kadr z 2026-10-03 pokazuje rezultat; wejście i zmianę potwierdzają żądanie XCTest oraz stan kontrolera.

Sam obraz nie dowodzi gestu; żądania, odebrane zdarzenia i zmiany skali opisano w wynikach wykonania.

Powiększenie dostępne tylko dwoma palcami

Good/bad używają tego samego planu, danych #1042, InteractiveViewer, pinch i zakresu 1–3. Jedyna istotna różnica: w bad nie ma dwóch kontrolek zmieniających skalę. Osoba dysponująca jednym punktem nie może powiększyć planu; pojedynczy tap w bad nie zmienia skali. Dodanie kontrolki przybliżania i oddalania usuwa tę barierę bez usuwania pinch.

iOS Simulator, błędny wariant na początku: plan 100%, brak przycisków zmiany skali.

Bad zaczyna od tej samej skali 100%, bez przycisków powiększania i pomniejszania. Surowy kadr iOS Simulator z 2026-10-03; ocenę braku alternatywy oparto także na przebiegu.

iOS Simulator, błędny wariant po pinch: plan jest powiększony, nadal brak prostej alternatywy zmiany skali.

Bad po pinch osiągnął 300%, nadal bez prostej alternatywy. Surowy kadr z 2026-10-03 nie dowodzi samodzielnie liczby punktów lub toru; potwierdzają je odebrane zdarzenia.

Przywrócenie danych fixture może ustawić skalę 100%; nie zapewnia funkcji powiększania. „Zmień wariant” i reset należą do narzędzia edukacyjnego, a nie do badanego zestawu kontrolek planu. Ocena dotyczy oddzielnie uruchomionego wariantu, nie zgodności całego harnessu demonstracyjnego. Warianty i oczekiwane etykiety wykluczyć z wejścia walidatora.

Komenda rozpoznawana po ścieżce — przykład opisowy

Własna karuzela reagująca tylko na szybki poziomy flick nie udostępnia następnego i poprzedniego elementu prosto wskaźnikiem. Poprawka: nazwane „Następny” i „Poprzedni” korzystające z tej samej logiki przejścia. To drugi edukacyjny przypadek, NOT-RUN; nie przedstawiamy natywnego pinch jako sprawdzenia rozpoznawania flick. Zwykła przeciągana karuzela tolerująca dowolny tor wymaga innej klasyfikacji.

Kontrola: swobodne przesuwanie planu

/2-5-1/plan/control ma stałą skalę 200%, wyłączone skalowanie i panAxis domyślnie free. Plan przesuwa się jednym wskaźnikiem w obu osiach, bez przepisanej ścieżki. Badany warunek 2.5.1 nie dotyczy tej funkcji przesuwania; nie oznacza to wyłączenia platformy ani spełnienia 2.5.7. Host sprawdza także łamany tor, natywna próba ruch po przekątnej — zakresów nie zrównujemy.

iOS Simulator, wariant kontrolny po przeciągnięciu planu po przekątnej: skala nadal 200%, treść przesunięta.

Control po ruchu po przekątnej: plan przesunął się w obu osiach przy stałym 200%. Kadr z 2026-10-03 uzupełnia zapis jednego punktu; łamany tor sprawdzono tylko hostowo.

Kiedy obowiązuje i gdzie są wyjątki

  • Wielopunktowy: co najmniej dwa wskaźniki jednocześnie, np. pinch, dotknięcie dwoma palcami albo przytrzymanie jednym i dotknięcie drugim. Dwa kolejne tap jednym palcem nie są z tego powodu wielopunktowe.
  • Zależny od ścieżki: rozpoznanie wymaga konkretnego toru lub kierunku ruchu, czasem także szybkości, np. poziomy flick rozpoznawany po kierunku albo narysowanie litery jako komendy. Jeden palec nie wystarcza jako dowód spełnienia: jego ruch nadal może wymagać ścieżki.
  • Prosta alternatywa: pojedyncze tap/click, także sekwencja takich aktywacji. Long press i double tap nie są automatycznie zakazane przez 2.5.1, choć proste nazwane przyciski zwykle ułatwiają obsługę. Alternatywa ma osiągać tę samą funkcję; przycisk zmieniający inną wartość lub wyświetlający instrukcję gestu nie wystarcza.
  • Niezbędność: bez gestu funkcja lub informacja fundamentalnie zmieniłaby się i nie da się zachować jej zgodnie innym sposobem. Samo rysowanie podpisu może zależeć od ścieżki; potwierdzenie odbioru lub tożsamości nie staje się automatycznie niezbędnym gestem tylko dlatego, że projekt użył podpisu. Wyjątek trzeba uzasadnić dla konkretnej funkcji.
  • Warstwa obsługi: systemowe gesty powiadomień, gesty nawigacji czytnika oraz niezmodyfikowane przewijanie przeglądarki nie są oceną gestów treści tego przykładu. Nie wystarczy nazwać własnej interakcji „systemową”, bo korzysta z gotowego API.

Przeciąganie i klawiatura

Przenoszenie przedmiotu, dla którego liczy się początek i koniec, a dowolny tor pomiędzy nimi jest dopuszczalny, samo w sobie nie jest gestem zależnym od ścieżki. Suwak z przechwyceniem wskaźnika często nadal działa po zejściu z osi; nie oceniamy go wyłącznie po prostym wyglądzie toru. Własny suwak odrzucający odchylenie może jednocześnie podlegać 2.5.1 i 2.5.7.

2.5.7 — Przeciąganie (AA, WCAG 2.2) odrębnie wymaga alternatywy bez przeciągania. Swobodne przeciąganie jako alternatywa dla pinch może więc usunąć konkretną barierę 2.5.1, ale nadal nie wystarczać dla AA. Kontrola poniżej nie deklaruje zgodności z 2.5.7. 2.1.1 — Klawiatura dotyczy innego wejścia: skrót klawiszowy nie zastępuje prostej alternatywy wskaźnikowej, a przycisk dotykowy nie jest dowodem obsługi klawiaturą. 2.5.2 ocenia moment wykonania i anulowanie akcji, nie samą dostępność alternatywy.

G215 opisuje kontrolki osiągające rezultat gestu, G216 aktywację pojedynczym punktem dla suwaka. F105 opisuje funkcję dostępną przez gest zależny od ścieżki bez prostej alternatywy. Są to materiały pomocnicze; nie są dodatkowym wymaganiem ani statystyką częstości. Nasz pinch jest własnym odtworzeniem bariery wielopunktowej, nie dokładnym odtworzeniem F105.

Platformy

Wszystkie poniższe oceny zastosowania zweryfikowało AI 2026-10-03; człowiek NOT-RUN. WCAG2ICT 2.2 Group Note 2025-12-11 jest wskazówką interpretacyjną, nie samodzielną normą zgodności. EN 301 549 ani podstaw prawnych audytu nie oceniano; nie przeniesiono z nich wyłączeń.

Środowisko / ID Podstawa, kryterium Stan i warunek Adaptacja i uzasadnienie
WWW / web, również w telefonie WCAG 2.2 Recommendation 2024-12-12, 2.5.1 dotyczy warunkowo: funkcja treści używa gestu wielopunktowego lub zależnego od ścieżki Bez adaptacji. Autor odpowiada za interpretowane gesty treści, nie obsługę przeglądarki lub technologii asystującej.
Aplikacje mobilne / mobile WCAG2ICT 2.2 Group Note 2025-12-11, 2.5.1 dotyczy warunkowo: taki gest obsługuje funkcję programu Główne wymaganie bez zmiany; uwaga odnosi się do oprogramowania i bazowej platformy. Pinch zaimplementowany przez framework w ekranie aplikacji pozostaje funkcją autora; nie jest z tego powodu wyłączony.
Aplikacje desktopowe / desktop WCAG2ICT jak wyżej, 2.5.1 dotyczy warunkowo: program interpretuje np. gest kilku punktów trackpada lub określony tor myszy Jak mobile; obecność myszy albo klawiatury nie wyłącza funkcji gestowej.
Dokumenty cyfrowe / document WCAG2ICT jak wyżej, 2.5.1 dotyczy warunkowo: dokument zawiera własną interakcję, np. prototyp reagujący na gest W uwadze treść WWW zastępuje treść. Gest powiększenia zwykłego PDF zapewniany wyłącznie przez odbiornik nie jest funkcją dodaną przez autora dokumentu. To brak zastosowania w tym scenariuszu, nie brak odpowiednika dla dokumentów.
Inne urządzenia / other: kiosk dotykowy z programem natywnym WCAG2ICT jak wyżej, 2.5.1 dotyczy warunkowo: program interpretuje wymagany gest Jak mobile; ocena dotyczy programu, nie wszystkich wymagań sprzętu. Dla kiosku z WWW podstawą jest odrębnie WCAG 2.2. Nie uogólniamy na każdy telewizor lub każde urządzenie.

Każda warstwa odpowiada za własne gesty. Wyłączenie bazowej platformy w ocenie aplikacji nie zwalnia samego oprogramowania platformowego z oceny jego własnej obsługi. Hybryda wymaga rozdzielenia części webowej i natywnej. Wykonano tylko Flutter/Cupertino na iOS Simulator; pozostałe środowiska NOT-RUN.

Rozwiązania w technologiach

Przykłady edukacyjne dodają prostą kontrolę do już istniejącej funkcji zoom. Parametry i stan należy współdzielić z handlerem gestu; nie tworzyć drugiej niespójnej kopii skali. Przyciski są w tym samym widoku co plan. Fragment nie jest kompletną aplikacją ani potwierdzeniem dostępności innych funkcji.

Android / Compose

import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.foundation.layout.Column

@Composable
fun ZoomControls(zoom: Float, setZoom: (Float) -> Unit) {
    Column {
        Button(enabled = zoom < 3f,
            onClick = { setZoom((zoom + .25f).coerceIn(1f, 3f)) }) {
            Text("Powiększ plan")
        }
        Button(enabled = zoom > 1f,
            onClick = { setZoom((zoom - .25f).coerceIn(1f, 3f)) }) {
            Text("Pomniejsz plan")
        }
    }
}

setZoom aktualizuje stan używany przez istniejący renderer i obsługę gestu. Oficjalne API Button/enabled/onClick sprawdzono 2026-10-03. Kompilacja i działanie NOT-RUN; nie uruchomiono Androida i nie przypisano nieużytej wersji Compose.

iOS / SwiftUI

import SwiftUI

struct ZoomControls: View {
    @Binding var zoom: CGFloat
    var body: some View {
        VStack {
            Button("Powiększ plan") { zoom = min(3, zoom + 0.25) }
                .disabled(zoom >= 3)
            Button("Pomniejsz plan") { zoom = max(1, zoom - 0.25) }
                .disabled(zoom <= 1)
        }
    }
}

Binding wskazuje ten sam stan, który steruje wyświetlaniem planu i istniejącym gestem. Oficjalne API Apple sprawdzono 2026-10-03, treść dokumentacji Button odczytana przez oficjalny JSON, gdy strona HTML wymagała JS. Fragment SwiftUI: kompilacja/działanie NOT-RUN. Driver XCTest w Swifcie bada Flutter, nie tę implementację.

Flutter

import 'package:flutter/cupertino.dart';

// W State; ten sam controller podaj do InteractiveViewer.
final controller = TransformationController();
void changeZoom(double delta) {
  final next = (controller.value.getMaxScaleOnAxis() + delta).clamp(1.0, 3.0);
  controller.value = Matrix4.diagonal3Values(next, next, 1);
}
// W build: CupertinoButton(onPressed: () => changeZoom(.25),
//                         child: const Text('Powiększ plan'));
// Analogiczny przycisk changeZoom(-.25); controller.dispose() w dispose.

Pełny kod wykonanej demonstracji obejmuje obie kontrolki, granice, obserwację, reset i dispose. Oficjalne API oraz lokalne SDK sprawdzono 2026-10-03; Flutter 3.44.9, Dart 3.12.2. Analiza/build iOS oraz test hostowy i natywny mają wyniki poniżej. Zmiana przyciskiem ustawia transformację względem początku planu; pinch może wybrać inny punkt ogniskowy. Badana równoważność dotyczy powiększania i pomniejszania, nie identyczności macierzy lub wszystkich możliwych punktów ogniskowych. Jeśli funkcja docelowa wymaga wyboru obszaru, potrzebuje również prostej obsługi tego wyboru.

React Native

import { Pressable, Text, View } from 'react-native';

export function ZoomControls({
  zoom,
  setZoom,
}: {
  zoom: number;
  setZoom: (value: number) => void;
}) {
  return (
    <View>
      <Pressable
        accessibilityRole="button"
        disabled={zoom >= 3}
        onPress={() => setZoom(Math.min(3, zoom + 0.25))}
      >
        <Text>Powiększ plan</Text>
      </Pressable>
      <Pressable
        accessibilityRole="button"
        disabled={zoom <= 1}
        onPress={() => setZoom(Math.max(1, zoom - 0.25))}
      >
        <Text>Pomniejsz plan</Text>
      </Pressable>
    </View>
  );
}

Stan rodzica steruje istniejącym rendererem planu; docelowy styl musi zapewnić rozpoznawalne i osiągalne kontrolki. Oficjalne Pressable.onPress/disabled oraz właściwości dostępności sprawdzono 2026-10-03. Kompilacja/typecheck i działanie NOT-RUN; bez deklaracji użytej wersji React Native.

Jak sprawdzić

  1. Zidentyfikuj funkcję i wymagany rodzaj wejścia. Obejrzyj handler lub wykonaj gest; nie klasyfikuj po samej instrukcji albo wyglądzie suwaka.
  2. Uruchom /2-5-1/plan/good i wykonaj pinch w obie strony. Sprawdź odebrane dwa jednoczesne punkty i rzeczywistą zmianę skali. Żądany współczynnik XCTest nie jest dokładnym pomiarem uzyskanej skali.
  3. Po resecie wykonaj pojedyncze tap na przyciskach. Oczekiwane: 100 → 125 → 100%, brak wymaganego ruchu wskaźnika; oba kierunki i cały zakres 100–300% dostępne bez pinch. Granice blokują dalszą zmianę, a reset przywraca stan.
  4. W bad sprawdź te same gesty, brak alternatywy powiększania i pojedynczy tap na planie bez zmiany. To odtworzenie bariery, nie błąd testu.
  5. W control przeciągnij po przekątnej; skala ma zostać 200%, a translacja zmienić się w obu osiach. Łamany tor jest osobną próbą hostową. Nie wyciągaj wyniku 2.5.7 z tej kontroli.
  6. W audycie właściwej aplikacji sprawdź wszystkie funkcje zależne od gestu, ich równoważność, dostępność alternatywy w rzeczywistym kontekście i uzasadnienie ewentualnego wyjątku.

Weryfikacja i ograniczenia

Finalna natywna próba: 2026-10-03 01:24:05–01:26:29 CEST, UTC 2026-10-02 23:24:05–23:26:29. Dedykowany iPhone 17 Simulator, iOS 26.5, UDID 1EBF874A-4981-4C31-A744-72A53238C827; ekran 402 × 874 pt / 1206 × 2622 px, jasny wygląd, content size large. Xcode 27.0 (27A266a), SDK iOS Simulator 27.0; wersje Flutter/Dart powyżej. Widoczne 09:41 jest ustawieniem paska, nie czasem próby.

Sprawdzenie Wynik i zaobserwowany zakres
Analiza / build Flutter iOS PASS: brak problemów, analiza 1,7 s, Xcode build 10,6 s. Instalacja końcowego własnego builda przed testem.
Hostowe testy na adapterze iOS 19 PASS, w tym nowy test: zoom tap, obie granice, syntetyczny pinch, łamany tor przesuwania, cykl wariantów, reset, nieznana trasa; wcześniejsze testy regresji zachowano.
Natywna kompilacja i XCTest 2 PASS / 0 błędów: kontrola 24,104 s, zoom 126,522 s. Łącznie 31 żądań i 15 próbek; smoke starej trasy 2.1.1 to dodatkowy nieinstrumentowany tap, nie test klawiatury.
Pinch w obu wariantach 4 wykonane żądania, każde ma dwa nakładające się pointery touch, zapis move i up. Skala 1 → 3 → około 1,84073. XCTest żądał 2 i 0,6; nie uznano ich za dokładny wynik. W pierwszym geście rozpoznawanie po początkowej małej rozpiętości osiągnęło granicę 3.
Alternatywa good Tap: 1 → 1,25 → 1; następnie osiem powiększeń do 3 i osiem pomniejszeń do 1. Natywne drzewo potwierdza wyłączenie odpowiedniej kontrolki na granicy. Reset i wybór działają.
Odtworzenie bad Pinch działa, kontrolki zmiany skali nie istnieją w badanym wariancie, tap na planie pozostawia 1. To zamierzony FAIL warunku 2.5.1 dla funkcji powiększania, przy PASS testu odtworzenia.
Kontrola swobodnego przesuwania Jeden odebrany pointer, ruch po przekątnej i zmiana translacji obu osi, skala pozostaje 2. Tolerancję łamanego toru sprawdzono tylko hostowo i przez konfigurację panAxis.free; native nie wykonuje łamanego toru.
PNG / drzewa / integralność 5 PNG bez retuszu, pięć snapshotów drzewa w jednym TXT, wszystkie ekrany obejrzane przez AI. Check PASS, zapis źródłowy zawiera faktyczne UTC; hashe źródeł, builda i assetów w metadanych.
Inne środowiska / człowiek Compose/SwiftUI/React Native: API przejrzane, kompilacja i działanie NOT-RUN. Fizyczny dotyk, VoiceOver, FKA, klawiatura, Switch Control i człowiek NOT-RUN.

Nie użyto filmu, audio ani AI images. Materiał interakcji to zachowane żądania i zdarzenia wraz z trwałymi stanami; nie deklarujemy pomiaru płynności lub czasu gestu na podstawie PNG. Żądania XCTest są systemowo syntetyzowanym wejściem na Simulatorze, nie dotykiem fizycznego urządzenia. Zdarzenia hostowego testu są osobną symulacją. Listener działa wyłącznie w obszarze planu: nie zapisuje tap przycisków poza nim, więc nie przypisujemy im obserwowanego pointer ID; ich wykonanie potwierdza XCTest i zmiana kontrolera. Zegary wejścia Fluttera, monotoniczny czas XCTest i UTC nie są wspólnym zsynchronizowanym zegarem.

Pierwsza próba hostowa miała błąd porządkowania uchwytu semantyki testu, a pierwszy XCTest ujawnił brak stanu wyłączenia przycisku w drzewie iOS. Usunięto niepotrzebny uchwyt i dodano istniejący wzorzec Semantics.enabled, po czym powtórzono analizę, 19 testów, build i całe natywne wykonanie. Logi obu prób zachowano w materiale źródłowym; nowe assety pochodzą wyłącznie z finalnej próby. 274 wcześniejsze pliki dowodów i testów zachowano bajtowo. Wspólne dispatchery otrzymały nową trasę; ich historyczne hashe przy poprzednich kryteriach nadal identyfikują historyczne wykonania, nie bieżący build.

Granice oceny

Metoda Możliwy wynik i granica
Reguła deterministyczna na fixture Zmiana skali po żądaniu i zapis dwóch nakładających się pointerów potwierdzają konkretną obsługę; obecność i działanie przycisków sprawdza alternatywę. Check dowodów nie jest walidatorem dowolnej aplikacji.
Przybliżenie z drzewa Nazwy i role przycisków pomagają znaleźć kandydata, lecz nie dowodzą jego osiągalności ani równoważnego efektu. Nazwa „Powiększ” bez wykonania nie wystarcza.
Obraz / AI Widoczny brak kontrolek i instrukcja pinch sugerują barierę, ale inna alternatywa może istnieć w menu lub dalszym przepływie. Screenshot nie potwierdza ruchu, liczby wskaźników ani czasu.
Człowiek Rozstrzyga równoważność celu, niezbędność, odkrywalność alternatywy i kompletny zakres funkcji. W tej sesji NOT-RUN.

Nie oceniać zgodności całej aplikacji na podstawie jednej skali. Brak znalezionej alternatywy w niepełnym drzewie nie jest dowodem jej nieistnienia. Brak wykrycia błędu nie dowodzi spełnienia. Oczekiwania good/bad/control, identyfikatory obserwatora, jego JSON i manifest testu pozostają poza wejściem niezależnego walidatora. Materiał edukacyjny/regresyjny nie jest niezależnym benchmarkiem.

Fizyczny iPhone, doświadczenie osoby korzystającej z jednego wskaźnika, VoiceOver, Switch Control, FKA i klawiatura dla tego ekranu NOT-RUN. Test automatyczny Simulatora nie jest testem fizycznego dotyku; próba hostowa wysyła zdarzenia syntetyczne i nie jest obserwacją urządzenia. Do dowodu badanego warunku 2.5.1 wybrano natywne żądania gestów i tap na Simulatorze, bez deklaracji testu czytnika. Brak uruchomień edukacyjnych Compose/SwiftUI/React Native jest jawnym zakresem materiału, nie automatycznym TODO.

Jak sprawdza Clearship

Clearship korzysta z przebiegu gestów oraz instrukcji i kontrolek osiągniętego ekranu. Szuka funkcji szczypania, obrotu i wskazanego kierunku przesunięcia oraz prostej drogi wskaźnikowej. Nazwa kontrolki lub zdanie instrukcji może wskazać alternatywę, lecz samo w sobie nie dowodzi równoważnego działania.

Według pomiarów z 8 października 2026 r. metoda pozostaje poniżej progu na Androidzie i iOS, a wynik wymaga człowieka. Gesty ścieżki bez instrukcji, niezbędność, alternatywy poza osiągniętym przepływem i osobna treść webowa pozostają poza pełną oceną. Na Androidzie kontrolki alternatywy nie są aktywowane tym przebiegiem. Historyczny pomiar iOS korzystał z wcześniejszego wejścia; nowsze wyjście poza cel usuwa przypadkową aktywację kontrolki i nie zapewnia testu jej efektu. Brak znalezisk w niepełnym drzewie nie dowodzi braku bariery.

Powiązane kryteria