Tricks — schema, conventions, validator

Ziel: ≥ 70 belegte Trick-Datensätze (Projekt-Goal G3). Start leer; die echten Datensätze liefern Track G1 und Track G2. Diese Seite beschreibt das Schema, nicht die Inhalte.

Eine Trick-Datei ist ein einzelnes Markdown-Dokument mit YAML-Frontmatter. Sie ist strukturierte Daten und wird vom Validator (scripts_build/trick_validate.py) geprüft, vom Hub-Build gefiltert, und von decay_check an ihrem checked_on gemessen.

Slug, ID, Dateiname und Sprache sind kanonisch englisch. Deutsche Suchbegriffe und lokalisierte UI-Strings stehen explizit daneben (name_de, ui_strings_ref), werden aber nie automatisch übersetzt — sie sind zu belegende Fakten.


1. Datei

Wiki/tricks/
├── README.md             ← dieses Dokument
├── TA-001-timezone-date-time-shift-bypass.md
└── …

ID-Schema (Stand Runde 3, 2026-08-16).

Frühere Versionen nummerierten mit T-001T-040. G1 und G2 verwendeten unabhängig dieselbe Nummerierung, dadurch waren 35 IDs doppelt vergeben. Wir sind auf ein kategorie-bezogenes Schema umgestiegen, dessen Suffix die Herkunft sichtbar lässt:

KürzelKategorieSpur
TAtimeG1
ACaccountG1
DEdeviceG1
AIapp-installG1
COcontentG2
NEnetworkG2
SEsocial-engineeringG2
SDsecond-deviceG2
ATadvanced-technicalG2
PMparental-misconfigurationG2

Format: <Kategorie-Kürzel>-<3-stellige Ordinalzahl>.

Die dreistellige Ordinalzahl wird pro Kategorie und pro Ingestion-Lauf hochgezählt. scripts_build/tricks_ingest.py liest die existierenden Zähler aus den Frontmatter-Dateien aus und nimmt den höchsten Wert + 1 als nächste Ordinalzahl — so ist die ID-Vergabe kollisionsfrei, auch wenn ein dritter Track (z.B. G3 Apps) dazukommt und die gleiche Kategorie bedient. Siehe _ID_MIGRATION.md für die vollständige Migrations- Tabelle alt → neu.

Dateinamenkonvention: <id-klein>-<slug>.md · Beispiel TA-001-timezone-date-time-shift-bypass.md. Der Validator prüft, dass jede Datei diese Konvention einhält (trick_validate.py --corpus).

Eine Trick-Datei muss mit YAML-Frontmatter beginnen (----Zeilen). Body darf Begleitnotizen enthalten; der Validator liest nur das Frontmatter.


2. Felder

2.1 Pflichtfelder (HART, ohne sie nicht publizierbar)

FeldTypBedeutung
idstringFormat XX-NNN mit zweistelligem Kategorie-Kürzel und 3+ Stellen, eindeutig im Korpus
slugstringKleinbuchstaben, Ziffern, Bindestriche; identisch zum Dateinamen-Stamm
name_enstringEnglischer Name, kanonisch
name_destringDeutscher Name; darf identisch zur englischen Zeichenkette sein, wenn kein guter Suchbegriff existiert
categoryenumSiehe §3
platformenumSiehe §3
defeatslisteWiki-Slugs der Kontrollfunktionen, die ausgehebelt werden; jeder Eintrag muss ein existierender Wiki-Slug sein
effortenumSiehe §3
still_worksenumSiehe §3
still_works_evidencelisteMindestens ein Block mit source (Slug) + date (YYYY-MM-DD); reine Vermerkfelder reichen nicht
detectionstringBeobachtbare Symptome — kein Ausführungsrezept
fix_technicalblockui_strings_ref (Liste von UI-String-Schlüsseln, nicht leer) und note (string, nicht leer)
fix_relationalstringWas der Trick über das Bedürfnis sagt; wie das Gespräch statt der Eskalation aussieht
sourceslisteSlugs oder Blöcke mit slug; Platzhalter siehe §5

2.2 Optionale Felder (WEICH)

FeldTypBedeutung
typical_ageintRealistisches Mindestalter (6–16). Fehlt → Validator meldet weich
residual_riskstringWas nach dem Fix offen bleibt. Fehlt → Validator meldet weich
prevalencestringWie verbreitet der Trick real vorkommt. Trennt “technisch möglich” von “kommt real vor” — entscheidende Information für Eltern. Werte sind Freitext mit Belegquelle.
closableenumtrue · partial · false. Markiert, ob der Trick auf der im Datensatz genannten Ebene technisch schliessbar ist. false ist die explizite Aussage “auf dieser Ebene existiert keine Gegenmassnahme” und verlangt ein prevalence-Feld (soft-Befund sonst).
closed_sincestringPflicht, wenn still_works: closed. Beispiel "iOS 26"
name_fr, name_itstringSpätere Sprachen; vorerst nicht erforderlich
checked_ondateDatum der letzten inhaltlichen Prüfung. Pflicht für Publish
os_versionstringOS-Stand, gegen den geprüft wurde, Pflicht für Publish

2.3 Strukturblock fix_technical

fix_technical:
  ui_strings_ref: [apple.screentime.downtime.enable, android.familylink.app_limits.set]
  note: |
    In den Geräteeinstellungen Datum & Uhrzeit den automatischen Wechsel sperren
    und die Zeitzone manuell setzen. Den Screen-Time-Code getrennt vom Gerätecode
    aufbewahren.
  • ui_strings_ref ist Pflicht und nicht leer. Verweise auf ui-strings/*.yaml.
  • note ist Pflicht. Darf den Pfad in Worten beschreiben, aber keine UI-Pfad-Zeichenkette wie Settings → Screen Time → Downtime enthalten, die einen hartkodierten Pfad simuliert.
  • Weder ui_strings_ref noch note dürfen eine Ausführungsanleitung enthalten (siehe §6).

2.3.1 Wenn closable: false — die “no-countermeasure”-Datensätze

Eine Router-Sperre, die am Datentarif endet, ist gefährlicher als gar keine, wenn man sich darauf verlässt. Für die in der Forschung als “technisch nicht schliessbar” markierten Datensätze gilt daher ein erweiterter Pflichtkanon:

  • closable: false auf der im Datensatz genannten Ebene (typisch: Heimrouter, einzelner Browser).
  • prevalence mit dem Belegstand (Architekturgrenze / fehlende Evidenz / konkrete Praevalenz-Zahl) — der Validator meldet weich, wenn das Feld fehlt.
  • fix_technical.note beschreibt, wo stattdessen angesetzt werden muss (Endgerät, Konto, Anbieter) — nicht wie.

Diese drei Angaben gehören zusammen; eine isolierte closable: false ohne prevalence versteckt die Begründung im Fliesstext und verhindert, dass der Hub-Build die Information prominent rendert.


3. Enums

EnumWerte
categorytime · content · app-install · account · device · network · social-engineering · second-device · advanced-technical · parental-misconfiguration
platformios · android · both · platform-agnostic · router · app-specific
efforttrivial · moderate · technically skilled
still_worksyes · partially · no
age_band (Filter)0-5 · 6-9 · 10-12 · 13-15 · 16+

defeats, ui_strings_ref, sources, still_works_evidence und die Namen sind Listen, in denen die Slugs kleinbuchstaben-mit-bindestrich geschrieben sind und dem kanonischen Baum entsprechen (Wiki/en/<slug>.md oder ein anderer Trick-Datensatz in Wiki/tricks/).


4. Belegpflicht

still_works ist die teuerste Pflege im Projekt (architecture §11) und darf nie ohne Beleg stehen:

still_works: partially
still_works_evidence:
  - source: apple-ios-26-release-notes
    url: https://developer.apple.com/news/releases/
    date: 2026-08-12
    note: "iOS 26.1 schliesst die Lücke nicht; Familienkonfiguration weiterhin nötig."

Mehrere Einträge sind zulässig; mindestens einer ist Pflicht. Foren-Belege dürfen nur die Verbreitung belegen, nicht die technische Funktionsweise.


5. PLACEHOLDER-Konvention

Beim Aufbau des Schemas entstehen Vorlagen-Datensätze, deren Quellen erfunden sind. Diese werden mit PLACEHOLDER- markiert, damit sie niemals mit echten Datensätzen verwechselt werden. Der Validator meldet jeden Datensatz mit einer Placeholder-Quelle als „nicht publizierbar” — hart blockierend.

Eine Placeholder-Quelle sieht so aus:

sources:
  - slug: PLACEHOLDER-apple-support-108806
    type: placeholder
    note: "Slug existiert; wird ersetzt, sobald der echte Quellenextrakt vorliegt."

Erkennungsregel (vom Validator angewandt):

  • sources-Eintrag ist ein String und beginnt mit PLACEHOLDER-, oder
  • sources-Eintrag ist ein Block mit slug: PLACEHOLDER-…, oder
  • sources-Eintrag ist ein Block mit type: placeholder.

Sobald der Track-G-Lieferbetrieb echte Slugs einsetzt, verschwinden die Platzhalter und der Validator wird die Datensätze freigeben.


6. Redaktionelle Grenze (HART, vom Validator geprüft)

detection, fix_technical und fix_relational beschreiben, wie Eltern erkennen und schliessen, nicht wie sie ausführen. Der Validator schlägt hart an, wenn:

  1. Ausführungssequenzen in name_en/name_de/detection stehen:
    • Nummerierte Schritte (Step 1: …, step 3: …, 1. open …).
    • Imperative Verkettungen in diesem Stil: First, open …; then install …; finally ….
  2. Links auf Bypass-/Jailbreak-Domänen in fix_technical, detection oder fix_relational: bekannte Muster aus der iOS-/Android-Szene (theiphonewiki, jailbreak, unc0ver, checkra1n, magisk, sileo, cydia, …).

Gemeinsam mit §3 in concept.md (No-go „Schritt-für-Schritt-Exploits”) ist das die einzige normative Schranke gegenüber dem ausgelieferten Inhalt — alles andere ist Stilfrage.


7. Beispiel-Datensätze

Drei vollständige Datensätze liegen als Vorlage im selben Verzeichnis — je einer aus time, account und content:

  • T-014-change-time-zone.md
  • T-025-recovery-resets-apple-id.md
  • T-044-pwa-bypass.md

Alle drei tragen ausschliesslich Placeholder-Quellen und werden vom Validator als „nicht publizierbar” gemeldet, bis Track G sie mit echten Belegen befüllt.


8. Werkzeuge

ToolZweck
scripts_build/trick_validate.pyPrüft einzelne Datensätze oder das Verzeichnis; CLI für Editor-Workflow, API für den Hub-Build
scripts_build/trick_schema.pyEnums, Parser-Helfer, Filter
tests/test_tricks.pyPositiv- und Negativtests je Regel

Filter für Hubs (nach Plattform, Kategorie, Altersband) liegen in trick_schema.py und sind die öffentliche Schnittstelle für den Hub-Build.

Diese Seite ist selber kein Trick-Datensatz (sie hat kein Pflichtfeld id, category, …). Sie wird vom Validator übersprungen, weil die erste Zeile im Body nicht --- als Frontmatter-Eröffnung trägt.